Message ID | CAH2r5mvShnJidFDQkdULTDQFteSKimcphT_GGfVb0zXx9PkNcQ@mail.gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | missing update to deferred_close_scheduled field | expand |
forgot to attach the correct version of the patch (had a cut-n-paste error on one line) On Fri, Aug 19, 2022 at 11:48 AM Steve French <smfrench@gmail.com> wrote: > > > we are missing a line like this: > > > > cfile->deferred_close_scheduled = false; > > > > in cifs_open here: > > > > /* Get the cached handle as SMB2 close is deferred */ > > rc = cifs_get_readable_path(tcon, full_path, &cfile); > > if (rc == 0) { > > if (file->f_flags == cfile->f_flags) { > > file->private_data = cfile; > > spin_lock(&CIFS_I(inode)->deferred_lock); > > cifs_del_deferred_close(cfile); > > spin_unlock(&CIFS_I(inode)->deferred_lock); > > goto use_cache; > > So move set of deferred_close_scheduled = false into cifs_del_deferred_close > > See attached > > -- > Thanks, > > Steve
This patch seems to cause an rmmod failure (after unmount) - will need to test it more On Fri, Aug 19, 2022 at 2:24 PM Steve French <smfrench@gmail.com> wrote: > > forgot to attach the correct version of the patch (had a cut-n-paste > error on one line) > > > On Fri, Aug 19, 2022 at 11:48 AM Steve French <smfrench@gmail.com> wrote: > > > > > we are missing a line like this: > > > > > > cfile->deferred_close_scheduled = false; > > > > > > in cifs_open here: > > > > > > /* Get the cached handle as SMB2 close is deferred */ > > > rc = cifs_get_readable_path(tcon, full_path, &cfile); > > > if (rc == 0) { > > > if (file->f_flags == cfile->f_flags) { > > > file->private_data = cfile; > > > spin_lock(&CIFS_I(inode)->deferred_lock); > > > cifs_del_deferred_close(cfile); > > > spin_unlock(&CIFS_I(inode)->deferred_lock); > > > goto use_cache; > > > > So move set of deferred_close_scheduled = false into cifs_del_deferred_close > > > > See attached > > > > -- > > Thanks, > > > > Steve > > > > -- > Thanks, > > Steve
From 90153ed5351576b3f1a4943593664d52c7f8d82c Mon Sep 17 00:00:00 2001 From: Steve French <stfrench@microsoft.com> Date: Fri, 19 Aug 2022 11:33:44 -0500 Subject: [PATCH] smb3: missing update to whether a close is deferred in a reopen path When deleting a file handle from the deferred close list we were missing update to cfile->deferred_close_scheduled Reviewed-by: Shyam Prasad N <sprasad@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com> --- fs/cifs/file.c | 1 - fs/cifs/misc.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/cifs/file.c b/fs/cifs/file.c index fa738adc031f..12bf0414dc84 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -930,7 +930,6 @@ void smb2_deferred_work_close(struct work_struct *work) spin_lock(&CIFS_I(d_inode(cfile->dentry))->deferred_lock); cifs_del_deferred_close(cfile); - cfile->deferred_close_scheduled = false; spin_unlock(&CIFS_I(d_inode(cfile->dentry))->deferred_lock); _cifsFileInfo_put(cfile, true, false); } diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index 87f60f736731..3e99dd4085eb 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -718,6 +718,7 @@ cifs_del_deferred_close(struct cifsFileInfo *cfile) is_deferred = cifs_is_deferred_close(cfile, &dclose); if (!is_deferred) return; + deferred_close_scheduled = false; list_del(&dclose->dlist); kfree(dclose); } -- 2.34.1