mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
abc89422af
According to bug 995193, if a volume group 1) contains a mirror 2) is clustered 3) 'locking_type' = 0 is used then it is not possible to remove the 'c'luster flag from the VG. This is due to the way _lv_is_active behaves. We shouldn't allow the cluster flag to be flipped unless the mirrors in the cluster are not active. This is because different kernel modules are used depending on whether a mirror is cluster or not. When we attempt to see if the mirror is active, we first check locally. If it is not, then we attempt to check for remotely active instances if the VG is clustered. Since the no_lock locking type is LCK_CLUSTERED, but does not implement 'query_resource', remote_lock_held will always return an error in this case. An error from remove_lock_held is treated as though the lock _is_ held (i.e. the LV is active remotely). This blocks the cluster flag from changing. The solution is to implement 'query_resource' for the no_lock type. It will report a message and return 1. This will allow _lv_is_active to function properly. The LV would be considered not active remotely and the VG can change its flag. |
||
---|---|---|
.. | ||
.exported_symbols | ||
cluster_locking.c | ||
external_locking.c | ||
file_locking.c | ||
locking_types.h | ||
locking.c | ||
locking.h | ||
Makefile.in | ||
no_locking.c |