From: Niu Yawei Date: Tue, 20 Sep 2016 07:50:42 +0000 (-0400) Subject: LU-8446 llite: clear inode timestamps after losing UPDATE lock X-Git-Tag: 2.8.59~18 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=4a5e3556a6016cf5ded9c4126454916ab847a1b6;p=fs%2Flustre-release.git 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 --- 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);