| From b5f0b522ae485aedb920a747e2e99507f99a5a64 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 18 Mar 2024 12:22:34 +0100 |
| Subject: fs/9p: fix the cache always being enabled on files with qid flags |
| |
| From: Joakim Sindholt <opensource@zhasha.com> |
| |
| [ Upstream commit 4e5d208cc9bd5fbc95d536fa223b4b14c37b8ca8 ] |
| |
| I'm not sure why this check was ever here. After updating to 6.6 I |
| suddenly found caching had been turned on by default and neither |
| cache=none nor the new directio would turn it off. After walking through |
| the new code very manually I realized that it's because the caching has |
| to be, in effect, turned off explicitly by setting P9L_DIRECT and |
| whenever a file has a flag, in my case QTAPPEND, it doesn't get set. |
| |
| Setting aside QTDIR which seems to ignore the new fid->mode entirely, |
| the rest of these either should be subject to the same cache rules as |
| every other QTFILE or perhaps very explicitly not cached in the case of |
| QTAUTH. |
| |
| Signed-off-by: Joakim Sindholt <opensource@zhasha.com> |
| Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/9p/fid.h | 3 --- |
| 1 file changed, 3 deletions(-) |
| |
| diff --git a/fs/9p/fid.h b/fs/9p/fid.h |
| index 29281b7c38870..0d6138bee2a3d 100644 |
| --- a/fs/9p/fid.h |
| +++ b/fs/9p/fid.h |
| @@ -49,9 +49,6 @@ static inline struct p9_fid *v9fs_fid_clone(struct dentry *dentry) |
| static inline void v9fs_fid_add_modes(struct p9_fid *fid, unsigned int s_flags, |
| unsigned int s_cache, unsigned int f_flags) |
| { |
| - if (fid->qid.type != P9_QTFILE) |
| - return; |
| - |
| if ((!s_cache) || |
| ((fid->qid.version == 0) && !(s_flags & V9FS_IGNORE_QV)) || |
| (s_flags & V9FS_DIRECT_IO) || (f_flags & O_DIRECT)) { |
| -- |
| 2.43.0 |
| |