1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-27 10:25:13 +03:00

Correctly handle concurrent read (CR) locks in singlenode clvmd. This means

that we can also test clustered volume groups (vgcreate -c y) in the test
suite. Unfortunately we can't make this the testing default since cluster
mirrors require further infrastructure, and snapshots probably don't work at
all. I'll eventually add a few test cases that create clustered VGs
specifically.
This commit is contained in:
Petr Rockai 2011-11-07 17:11:23 +00:00
parent bac10d6aa3
commit 44190723a8

View File

@ -157,6 +157,13 @@ static int _lock_resource(const char *resource, int mode, int flags, int *lockid
char **_resources_1;
int i, j;
if (mode == LCK_READ) { /* only track PREAD, aka PROTECTED READ */
DEBUGLOG("Not tracking CONCURRENT READ lock: %s, flags=%d, mode=%d\n",
resource, flags, mode);
*lockid = -1;
return 0;
}
DEBUGLOG("Locking resource %s, flags=%d, mode=%d\n",
resource, flags, mode);
@ -224,6 +231,12 @@ bad:
static int _unlock_resource(const char *resource, int lockid)
{
if (lockid < 0) {
DEBUGLOG("Not tracking unlock of lockid -1: %s, lockid=%d\n",
resource, lockid);
return 0;
}
DEBUGLOG("Unlocking resource %s, lockid=%d\n", resource, lockid);
pthread_mutex_lock(&_lock_mutex);