From b2f6a7e3b616bb97709ab716af10ce33c1967666 Mon Sep 17 00:00:00 2001 From: Oleg Drokin Date: Mon, 23 Jun 2014 18:02:55 +0000 Subject: [PATCH 1/1] 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 --- lustre/mdt/mdt_open.c | 37 +++++++++++++++++++------------------ lustre/tests/sanityn.sh | 10 ---------- 2 files changed, 19 insertions(+), 28 deletions(-) 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 -- 1.8.3.1