diff mbox

CIFS: Fix possible data coherency problem after oplock break to None

Message ID 1354817274-7701-2-git-send-email-piastry@etersoft.ru (mailing list archive)
State New, archived
Headers show

Commit Message

Pavel Shilovsky Dec. 6, 2012, 6:07 p.m. UTC
by using cifs_invalidate_mapping rather than invalidate_remote_inode
in cifs_oplock_break - this invalidates all inode pages and resets
fscache cookies.

Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
---
 fs/cifs/file.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jeff Layton Dec. 6, 2012, 6:15 p.m. UTC | #1
On Thu,  6 Dec 2012 22:07:53 +0400
Pavel Shilovsky <piastry@etersoft.ru> wrote:

> by using cifs_invalidate_mapping rather than invalidate_remote_inode
> in cifs_oplock_break - this invalidates all inode pages and resets
> fscache cookies.
> 
> Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
> ---
>  fs/cifs/file.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
> index 84860f1..8fb3df2 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -3592,7 +3592,7 @@ void cifs_oplock_break(struct work_struct *work)
>  		if (cinode->clientCanCacheRead == 0) {
>  			rc = filemap_fdatawait(inode->i_mapping);
>  			mapping_set_error(inode->i_mapping, rc);
> -			invalidate_remote_inode(inode);
> +			cifs_invalidate_mapping(inode);
>  		}
>  		cFYI(1, "Oplock flush inode %p rc %d", inode, rc);
>  	}

That does look better...

Reviewed-by: Jeff Layton <jlayton@redhat.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 84860f1..8fb3df2 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -3592,7 +3592,7 @@  void cifs_oplock_break(struct work_struct *work)
 		if (cinode->clientCanCacheRead == 0) {
 			rc = filemap_fdatawait(inode->i_mapping);
 			mapping_set_error(inode->i_mapping, rc);
-			invalidate_remote_inode(inode);
+			cifs_invalidate_mapping(inode);
 		}
 		cFYI(1, "Oplock flush inode %p rc %d", inode, rc);
 	}