summaryrefslogtreecommitdiffstats
path: root/fs/cifs/inode.c
diff options
context:
space:
mode:
authorPavel Shilovsky <pshilovsky@samba.org>2014-08-18 18:49:58 +0200
committerSteve French <smfrench@gmail.com>2014-08-17 12:08:46 +0200
commitb46799a8f28c43c5264ac8d8ffa28b311b557e03 (patch)
treef519d2ee068849666edb8d563af7a711020ec6ff /fs/cifs/inode.c
parentCIFS: Fix SMB2 readdir error handling (diff)
downloadlinux-b46799a8f28c43c5264ac8d8ffa28b311b557e03.tar.xz
linux-b46799a8f28c43c5264ac8d8ffa28b311b557e03.zip
CIFS: Fix wrong directory attributes after rename
When we requests rename we also need to update attributes of both source and target parent directories. Not doing it causes generic/309 xfstest to fail on SMB2 mounts. Fix this by marking these directories for force revalidating. Cc: <stable@vger.kernel.org> Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r--fs/cifs/inode.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 41de3935caa0..753e7a3486de 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1717,6 +1717,12 @@ unlink_target:
target_dentry, to_name);
}
+ /* force revalidate to go get info when needed */
+ CIFS_I(source_dir)->time = CIFS_I(target_dir)->time = 0;
+
+ source_dir->i_ctime = source_dir->i_mtime = target_dir->i_ctime =
+ target_dir->i_mtime = current_fs_time(source_dir->i_sb);
+
cifs_rename_exit:
kfree(info_buf_source);
kfree(from_name);