Message ID | 20240923150756.902363-2-dhowells@redhat.com |
---|---|
State | New |
Headers | show |
Series | netfs, afs, cifs: Miscellaneous fixes/changes | expand |
added to cifs-2.6.git for-next since it is important as it fixes a regression affecting cifs.ko On Mon, Sep 23, 2024 at 10:08 AM David Howells <dhowells@redhat.com> wrote: > > The cifs flag CIFS_INO_MODIFIED_ATTR, which indicates that the mtime and > ctime need to be written back on close, got taken over by netfs as > NETFS_ICTX_MODIFIED_ATTR to avoid the need to call a function pointer to > set it. > > The flag gets set correctly on buffered writes, but doesn't get set by > netfs_page_mkwrite(), leading to occasional failures in generic/080 and > generic/215. > > Fix this by setting the flag in netfs_page_mkwrite(). > > Fixes: 73425800ac94 ("netfs, cifs: Move CIFS_INO_MODIFIED_ATTR to netfs_inode") > Reported-by: kernel test robot <oliver.sang@intel.com> > Closes: https://lore.kernel.org/oe-lkp/202409161629.98887b2-oliver.sang@intel.com > Signed-off-by: David Howells <dhowells@redhat.com> > cc: Jeff Layton <jlayton@kernel.org> > cc: Steve French <sfrench@samba.org> > cc: Paulo Alcantara <pc@manguebit.com> > cc: linux-cifs@vger.kernel.org > cc: netfs@lists.linux.dev > cc: linux-fsdevel@vger.kernel.org > --- > fs/netfs/buffered_write.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/netfs/buffered_write.c b/fs/netfs/buffered_write.c > index d7eae597e54d..b3910dfcb56d 100644 > --- a/fs/netfs/buffered_write.c > +++ b/fs/netfs/buffered_write.c > @@ -552,6 +552,7 @@ vm_fault_t netfs_page_mkwrite(struct vm_fault *vmf, struct netfs_group *netfs_gr > trace_netfs_folio(folio, netfs_folio_trace_mkwrite); > netfs_set_group(folio, netfs_group); > file_update_time(file); > + set_bit(NETFS_ICTX_MODIFIED_ATTR, &ictx->flags); > if (ictx->ops->post_modify) > ictx->ops->post_modify(inode); > ret = VM_FAULT_LOCKED; > >
diff --git a/fs/netfs/buffered_write.c b/fs/netfs/buffered_write.c index d7eae597e54d..b3910dfcb56d 100644 --- a/fs/netfs/buffered_write.c +++ b/fs/netfs/buffered_write.c @@ -552,6 +552,7 @@ vm_fault_t netfs_page_mkwrite(struct vm_fault *vmf, struct netfs_group *netfs_gr trace_netfs_folio(folio, netfs_folio_trace_mkwrite); netfs_set_group(folio, netfs_group); file_update_time(file); + set_bit(NETFS_ICTX_MODIFIED_ATTR, &ictx->flags); if (ictx->ops->post_modify) ictx->ops->post_modify(inode); ret = VM_FAULT_LOCKED;
The cifs flag CIFS_INO_MODIFIED_ATTR, which indicates that the mtime and ctime need to be written back on close, got taken over by netfs as NETFS_ICTX_MODIFIED_ATTR to avoid the need to call a function pointer to set it. The flag gets set correctly on buffered writes, but doesn't get set by netfs_page_mkwrite(), leading to occasional failures in generic/080 and generic/215. Fix this by setting the flag in netfs_page_mkwrite(). Fixes: 73425800ac94 ("netfs, cifs: Move CIFS_INO_MODIFIED_ATTR to netfs_inode") Reported-by: kernel test robot <oliver.sang@intel.com> Closes: https://lore.kernel.org/oe-lkp/202409161629.98887b2-oliver.sang@intel.com Signed-off-by: David Howells <dhowells@redhat.com> cc: Jeff Layton <jlayton@kernel.org> cc: Steve French <sfrench@samba.org> cc: Paulo Alcantara <pc@manguebit.com> cc: linux-cifs@vger.kernel.org cc: netfs@lists.linux.dev cc: linux-fsdevel@vger.kernel.org --- fs/netfs/buffered_write.c | 1 + 1 file changed, 1 insertion(+)