From: Oleg Drokin Date: Mon, 23 Jun 2014 18:02:55 +0000 (+0000) Subject: Revert "LU-4398 mdt: acquire an open lock for write or execute" X-Git-Tag: 2.6.0-RC1~52 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=b2f6a7e3b616bb97709ab716af10ce33c1967666 Revert "LU-4398 mdt: acquire an open lock for write or execute" This is causing significant READ performance degradation in mdts: LU-5197 This reverts commit 708d85a652a77f85153790e6cca1b7a2b91947cf. Change-Id: Ia591bed8a6f098ebad5bb8460c659516bcf24d97 Reviewed-on: http://review.whamcloud.com/10790 Tested-by: Jenkins Reviewed-by: Oleg Drokin Tested-by: Oleg Drokin --- diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index d35526e..e25e4fd 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -1246,29 +1246,30 @@ static int mdt_object_open_lock(struct mdt_thread_info *info, /* normal open holds read mode of open sem */ down_read(&obj->mot_open_sem); - if (open_flags & FMODE_WRITE) - lm = LCK_CW; - else if (open_flags & MDS_FMODE_EXEC) - lm = LCK_PR; - else - lm = LCK_CR; - if (open_flags & MDS_OPEN_LOCK) { + if (open_flags & FMODE_WRITE) + lm = LCK_CW; + else if (open_flags & MDS_FMODE_EXEC) + lm = LCK_PR; + else + lm = LCK_CR; + *ibits = MDS_INODELOCK_LOOKUP | MDS_INODELOCK_OPEN; - } else if (open_flags & (FMODE_WRITE | MDS_FMODE_EXEC) || - atomic_read(&obj->mot_lease_count) > 0) { - /* We need to flush conflicting locks or revoke a lease. - * In either case there is no need to acquire a layout - * lock since it won't be returned to the client. */ - try_layout = false; + } else if (atomic_read(&obj->mot_lease_count) > 0) { + if (open_flags & FMODE_WRITE) + lm = LCK_CW; + else + lm = LCK_CR; + + /* revoke lease */ *ibits = MDS_INODELOCK_OPEN; + try_layout = false; + lhc = &info->mti_lh[MDT_LH_LOCAL]; } - - CDEBUG(D_INODE, "normal open FID = "DFID", open_count = %d, " - "lm = %d\n", - PFID(mdt_object_fid(obj)), - atomic_read(&obj->mot_open_count), lm); + CDEBUG(D_INODE, "normal open:"DFID" lease count: %d, lm: %d\n", + PFID(mdt_object_fid(obj)), + atomic_read(&obj->mot_open_count), lm); } mdt_lock_reg_init(lhc, lm); diff --git a/lustre/tests/sanityn.sh b/lustre/tests/sanityn.sh index 449af52..2bab077 100644 --- a/lustre/tests/sanityn.sh +++ b/lustre/tests/sanityn.sh @@ -358,16 +358,6 @@ test_14d() { # bug 10921 } run_test 14d "chmod of executing file is still possible ========" -test_14e() { # LU-4398 - test_mkdir -p $DIR1/$tdir - rm -f $DIR1/$tdir/echo - cp /bin/echo $DIR1/$tdir/echo - $DIR1/$tdir/echo Hi - $DIR1/$tdir/echo Hi - echo Bye > $DIR2/$tdir/echo -} -run_test 14e "conflicting locks are flushed on open" - test_15() { # bug 974 - ENOSPC echo "PATH=$PATH" sh oos2.sh $MOUNT1 $MOUNT2