Browse Source

fuse: honor AT_STATX_FORCE_SYNC

Force a refresh of attributes from the fuse server in this case.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Miklos Szeredi 7 years ago
parent
commit
bf5c1898bf
1 changed files with 9 additions and 2 deletions
  1. 9 2
      fs/fuse/dir.c

+ 9 - 2
fs/fuse/dir.c

@@ -928,9 +928,16 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file,
 {
 	struct fuse_inode *fi = get_fuse_inode(inode);
 	int err = 0;
+	bool sync;
 
-	if (!(flags & AT_STATX_DONT_SYNC) &&
-	    time_before64(fi->i_time, get_jiffies_64())) {
+	if (flags & AT_STATX_FORCE_SYNC)
+		sync = true;
+	else if (flags & AT_STATX_DONT_SYNC)
+		sync = false;
+	else
+		sync = time_before64(fi->i_time, get_jiffies_64());
+
+	if (sync) {
 		forget_all_cached_acls(inode);
 		err = fuse_do_getattr(inode, stat, file);
 	} else if (stat) {