From: Andrew Morton <akpm@digeo.com>
> Investigating why some SuSE init script no longer works, I find:
> The shell command
> > file
> does not update the time stamp of file in case it existed and had size 0.
oops. That's due to me "don't call vmtruncate if i_size didn't change"
speedup. It was a pretty good speedup too.
Does this look sane?
Well, before this 2.5.66 patch vmtruncate() was called, which called
foofs->truncate(), which probably did
inode->i_mtime = inode->i_ctime = CURRENT_TIME;
and it looks like you do the same now. So, yes.
[Why is this in foofs->truncate() and not in vfs code?]
[It looks like the only way ATTR_SIZE can be set is from the
do_truncate, so maybe your patch is equivalent to changing open.c:
88c88
< newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME;
--- > newattrs.ia_valid = ATTR_SIZE | ATTR_CTIME | ATTR_MTIME;("It looks like" means: nfs does unspeakable things, intermezzo has izo_do_truncate(), a copy of do_truncate(), hpfs_unlink() tries a truncate if there is no space for a delete, ncp_notify_change() may have ATTR_SIZE without ATTR_MTIME.)]
On the other hand, my question was really a different one: do we want to follow POSIX, also in the silly requirement that truncate only sets mtime when the size changes, while O_TRUNC and ftruncate always set mtime.
If so, we have to uglify do_truncate().
Andries - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Fri May 23 2003 - 22:00:52 EST