Skip to content

Commit ec85537

Browse files
author
Miklos Szeredi
committed
fuse: take cache_mask into account in getattr
When deciding to send a GETATTR request take into account the cache mask (which attributes are always valid). The cache mask takes precedence over the invalid mask. This results in the GETATTR request not being sent unnecessarily. Signed-off-by: Miklos Szeredi <[email protected]>
1 parent 4b52f05 commit ec85537

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

fs/fuse/dir.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1021,12 +1021,14 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file,
10211021
struct fuse_inode *fi = get_fuse_inode(inode);
10221022
int err = 0;
10231023
bool sync;
1024+
u32 inval_mask = READ_ONCE(fi->inval_mask);
1025+
u32 cache_mask = fuse_get_cache_mask(inode);
10241026

10251027
if (flags & AT_STATX_FORCE_SYNC)
10261028
sync = true;
10271029
else if (flags & AT_STATX_DONT_SYNC)
10281030
sync = false;
1029-
else if (request_mask & READ_ONCE(fi->inval_mask))
1031+
else if (request_mask & inval_mask & ~cache_mask)
10301032
sync = true;
10311033
else
10321034
sync = time_before64(fi->i_time, get_jiffies_64());

0 commit comments

Comments
 (0)