From: Sage Weil Date: Mon, 3 May 2010 21:00:28 +0000 (-0700) Subject: mds: fix lock->sync rdlock rule X-Git-Tag: v0.22~595 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=409a54f17515a417f72fb0e1d70733624fe4b609;p=ceph.git mds: fix lock->sync rdlock rule Observed symptom was touch foo on one node, and missing from ls on another node. Since auth rdlock isn't allowed for LOCk, it clearly shouldn't be for LOCK->SYNC while e.g. wrlock modifications are still being flushed to the journal and aren't yet applied. --- diff --git a/src/mds/locks.c b/src/mds/locks.c index 3ffdf7588497..ed6271005109 100644 --- a/src/mds/locks.c +++ b/src/mds/locks.c @@ -80,7 +80,7 @@ struct sm_t sm_scatterlock = { struct sm_state_t filelock[LOCK_MAX] = { // stable loner rep state r rp rd wr l x caps(any,loner,xlocker,replica) [LOCK_SYNC] = { 0, false, LOCK_SYNC, ANY, 0, ANY, 0, ANY, 0, CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD,0,0,CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD }, - [LOCK_LOCK_SYNC] = { LOCK_SYNC, false, LOCK_SYNC, AUTH, 0, AUTH,0, 0, 0, CEPH_CAP_GCACHE,0,0,0 }, + [LOCK_LOCK_SYNC] = { LOCK_SYNC, false, LOCK_SYNC, AUTH, 0, 0, 0, 0, 0, CEPH_CAP_GCACHE,0,0,0 }, [LOCK_EXCL_SYNC] = { LOCK_SYNC, true, LOCK_LOCK, 0, 0, 0, 0, 0, 0, 0,CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD,0,0 }, [LOCK_MIX_SYNC] = { LOCK_SYNC, false, LOCK_MIX, 0, 0, 0, 0, 0, 0, CEPH_CAP_GRD,0,0,CEPH_CAP_GRD }, [LOCK_MIX_SYNC2] = { LOCK_SYNC, false, 0, 0, 0, 0, 0, 0, 0, CEPH_CAP_GRD,0,0,CEPH_CAP_GRD },