* multipath-tools/libmultipath configure.c disco ...
@ 2009-12-04 21:19 bmarzins
0 siblings, 0 replies; only message in thread
From: bmarzins @ 2009-12-04 21:19 UTC (permalink / raw)
To: dm-cvs, dm-devel
CVSROOT: /cvs/dm
Module name: multipath-tools
Branch: RHEL5_FC6
Changes by: bmarzins@sourceware.org 2009-12-04 21:19:52
Modified files:
libmultipath : configure.c discovery.c
Log message:
Fix for bzs #524178 and #537281. Make sure that multipath unlocks the paths
if it encounters an error, and tweak some warning messages
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/configure.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.2.2.5&r2=1.2.2.6
http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/libmultipath/discovery.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.32.2.9&r2=1.32.2.10
--- multipath-tools/libmultipath/configure.c 2009/09/28 16:30:27 1.2.2.5
+++ multipath-tools/libmultipath/configure.c 2009/12/04 21:19:51 1.2.2.6
@@ -269,6 +269,7 @@
struct pathgroup * pgp;
struct path * pp;
int i, j;
+ int x, y;
if (!mpp || !mpp->pg)
return 0;
@@ -279,12 +280,25 @@
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;
}
/*
@@ -331,8 +345,10 @@
return DOMAP_RETRY;
}
- if (dm_map_present(mpp->alias))
+ if (dm_map_present(mpp->alias)) {
+ lock_multipath(mpp, 0);
break;
+ }
r = dm_addmap(DM_DEVICE_CREATE, DEFAULT_TARGET, mpp, 1, 0);
@@ -344,11 +360,12 @@
* DM_TABLE_LOAD. Failing the second part leaves an
* empty map. Clean it up.
*/
- if (!r && dm_map_present(mpp->alias)) {
+ if (!r) {
+ if (dm_map_present(mpp->alias))
+ dm_flush_map(mpp->alias, DEFAULT_TARGET);
condlog(3, "%s: failed to load map "
"(a path might be in use)",
mpp->alias);
- dm_flush_map(mpp->alias, DEFAULT_TARGET);
}
lock_multipath(mpp, 0);
--- multipath-tools/libmultipath/discovery.c 2009/11/23 21:08:34 1.32.2.9
+++ multipath-tools/libmultipath/discovery.c 2009/12/04 21:19:51 1.32.2.10
@@ -752,8 +752,9 @@
if (apply_format(pp->getuid, &buff[0], pp)) {
condlog(0, "error formatting uid callout command");
memset(pp->wwid, 0, WWID_SIZE);
- } else if (execute_program(buff, pp->wwid, WWID_SIZE)) {
- condlog(0, "error calling out %s", buff);
+ } else if (execute_program(buff, pp->wwid, WWID_SIZE) ||
+ pp->wwid[0] == 0) {
+ condlog(0, "cannot get the the wwid for %s", pp->dev);
memset(pp->wwid, 0, WWID_SIZE);
return 1;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-12-04 21:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-04 21:19 multipath-tools/libmultipath configure.c disco bmarzins
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.