device-mapper-multipath/0019-RHBZ-554598-fix-multipath-locking.patch
Benjamin Marzinski 814d7d2747 Refresh 0001-RH-queue-without-daemon.patch Refresh
0002-RH-path-checker.patch Modify
    0010-RH-multipath-rules-udev-changes.patch
Fix udev rules to use DM_SBIN_PATH when calling kpartx
install udev rules to /lib/udev/rules.d instead of /etc/udev/rules.d Modify
    0014-RH-add-hp_tur-checker.patch Add
    0003-for-upstream-default-configs.patch Add
    0016-RHBZ-554561-fix-init-error-msg.patch Add
    0017-RHBZ-554592-man-page-note.patch Add
    0018-RHBZ-554596-SUN-6540-config.patch Add
    0019-RHBZ-554598-fix-multipath-locking.patch Add
    0020-RHBZ-554605-fix-manual-failover.patch Add
    0021-RHBZ-548874-add-find-multipaths.patch
Added find_multipaths multipath.conf option
Added /sbin/mpathconf for simple editting of multipath.conf Add
    0022-RHBZ-557845-RHEL5-style-partitions.patch
Make kpartx deal with logical partitions like it did in RHEL5. Don't create
    a dm-device for the extended partition itself. Create the logical
    partitions on top of the dm-device for the whole disk.
2010-01-23 01:39:39 +00:00

44 lines
1.0 KiB
Diff

---
libmultipath/configure.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
Index: multipath-tools/libmultipath/configure.c
===================================================================
--- multipath-tools.orig/libmultipath/configure.c
+++ multipath-tools/libmultipath/configure.c
@@ -284,6 +284,7 @@ lock_multipath (struct multipath * mpp,
struct pathgroup * pgp;
struct path * pp;
int i, j;
+ int x, y;
if (!mpp || !mpp->pg)
return 0;
@@ -294,12 +295,25 @@ lock_multipath (struct multipath * mpp,
vector_foreach_slot(pgp->paths, pp, j) {
if (lock && flock(pp->fd, LOCK_EX | LOCK_NB) &&
errno == EWOULDBLOCK)
- return 1;
+ goto fail;
else if (!lock)
flock(pp->fd, LOCK_UN);
}
}
return 0;
+fail:
+ vector_foreach_slot (mpp->pg, pgp, x) {
+ if (x > i)
+ return 1;
+ if (!pgp->paths)
+ continue;
+ vector_foreach_slot(pgp->paths, pp, y) {
+ if (x == i && y > j)
+ return 1;
+ flock(pp->fd, LOCK_UN);
+ }
+ }
+ return 1;
}
/*