From 4a5e3556a6016cf5ded9c4126454916ab847a1b6 Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Tue, 20 Sep 2016 03:50:42 -0400 Subject: [PATCH] LU-8446 llite: clear inode timestamps after losing UPDATE lock Otherwise, those leftovers would interfere with new timestamps especially when the timestamps are set back in time on the other clients. Test-Parameters: alwaysuploadlogs mdtfilesystemtype=ldiskfs mdsfilesystemtype=ldiskfs ostfilesystemtype=ldiskfs mdtcount=1 testlist=metadata-updates,metadata-updates Signed-off-by: Jinshan Xiong Signed-off-by: Niu Yawei Change-Id: If4d385c82b2035c08276b9dd5cd8edd029a8c027 Reviewed-on: http://review.whamcloud.com/22623 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Bobi Jam Reviewed-by: Oleg Drokin --- lustre/llite/namei.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lustre/llite/namei.c b/lustre/llite/namei.c index 806d7a1..a8f961d 100644 --- a/lustre/llite/namei.c +++ b/lustre/llite/namei.c @@ -273,6 +273,16 @@ int ll_md_blocking_ast(struct ldlm_lock *lock, struct ldlm_lock_desc *desc, PFID(ll_inode2fid(inode)), rc); } + if (bits & MDS_INODELOCK_UPDATE) { + struct ll_inode_info *lli = ll_i2info(inode); + + spin_lock(&lli->lli_lock); + LTIME_S(inode->i_mtime) = 0; + LTIME_S(inode->i_atime) = 0; + LTIME_S(inode->i_ctime) = 0; + spin_unlock(&lli->lli_lock); + } + if ((bits & MDS_INODELOCK_UPDATE) && S_ISDIR(inode->i_mode)) { struct ll_inode_info *lli = ll_i2info(inode); -- 1.8.3.1