fuse: update mtime on truncate(2)
Handling truncate(2), VFS doesn't set ATTR_MTIME bit in iattr structure; only ATTR_SIZE bit is set. In-kernel fuse must handle the case by setting mtime fields of struct fuse_setattr_in to "now" and set FATTR_MTIME bit even though ATTR_MTIME was not set. Signed-off-by: Maxim Patlasov <MPatlasov@parallels.com> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
This commit is contained in:
parent
d31433c8b0
commit
009dd694e8
|
@ -1678,6 +1678,8 @@ int fuse_do_setattr(struct inode *inode, struct iattr *attr,
|
||||||
if (is_truncate) {
|
if (is_truncate) {
|
||||||
fuse_set_nowrite(inode);
|
fuse_set_nowrite(inode);
|
||||||
set_bit(FUSE_I_SIZE_UNSTABLE, &fi->state);
|
set_bit(FUSE_I_SIZE_UNSTABLE, &fi->state);
|
||||||
|
if (trust_local_mtime && attr->ia_size != inode->i_size)
|
||||||
|
attr->ia_valid |= ATTR_MTIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&inarg, 0, sizeof(inarg));
|
memset(&inarg, 0, sizeof(inarg));
|
||||||
|
|
Loading…
Reference in New Issue