mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-19 14:04:17 +03:00
lvmlockd: retry on other sanlock errors
These less common errors returned from sanlock should also cause sanlock to retry the lock acquire: - i/o timeout occurs during sanlock_acquire(). other i/o on the same disk as the leases can cause sanlock i/o timeouts. - low level disk paxos contention between hosts naturally causes one host to not acquire the lease. There are a couple special error numbers associated with these cases that should just be recognized as a normal failure to acquire the lease.
This commit is contained in:
parent
115e66e9be
commit
e52d2e3bd8
@ -1528,6 +1528,26 @@ int lm_lock_sanlock(struct lockspace *ls, struct resource *r, int ld_mode,
|
|||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rv == SANLK_AIO_TIMEOUT) {
|
||||||
|
/*
|
||||||
|
* sanlock got an i/o timeout when trying to acquire the
|
||||||
|
* lease on disk.
|
||||||
|
*/
|
||||||
|
log_debug("S %s R %s lock_san acquire mode %d rv %d", ls->name, r->name, ld_mode, rv);
|
||||||
|
*retry = 0;
|
||||||
|
return -EAGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rv == SANLK_DBLOCK_LVER || rv == SANLK_DBLOCK_MBAL) {
|
||||||
|
/*
|
||||||
|
* There was contention with another host for the lease,
|
||||||
|
* and we lost.
|
||||||
|
*/
|
||||||
|
log_debug("S %s R %s lock_san acquire mode %d rv %d", ls->name, r->name, ld_mode, rv);
|
||||||
|
*retry = 0;
|
||||||
|
return -EAGAIN;
|
||||||
|
}
|
||||||
|
|
||||||
if (rv == SANLK_ACQUIRE_OWNED_RETRY) {
|
if (rv == SANLK_ACQUIRE_OWNED_RETRY) {
|
||||||
/*
|
/*
|
||||||
* The lock is held by a failed host, and will eventually
|
* The lock is held by a failed host, and will eventually
|
||||||
|
Loading…
x
Reference in New Issue
Block a user