@@ -81,7 +81,7 @@
# path_grouping_policy group_by_prio
# failback immediate
# rr_weight uniform
-# no_path_retry 12
+# no_path_retry 18
# rr_min_io 100
# path_checker tur
# }
@@ -100,7 +100,35 @@
# }
# device {
# vendor "HP"
-# product "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME"
+# product "MSA2012sa|MSA2312sa|MSA2324sa"
+# getuid_callout "/sbin/scsi_id -g -u -n -s /block/%n"
+# prio_callout "/sbin/mpath_prio_alua /dev/%n"
+# features "0"
+# hardware_handler "0"
+# path_grouping_policy group_by_prio
+# failback immediate
+# rr_weight uniform
+# no_path_retry 18
+# rr_min_io 100
+# path_checker tur
+# }
+# device {
+# vendor "HP"
+# product "MSA2312fc|MSA2324fc|MSA2312i|MSA2324i|MSA2000s VOLUME"
+# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
+# prio_callout "/sbin/mpath_prio_alua /dev/%n"
+# features "0"
+# hardware_handler "0"
+# path_grouping_policy group_by_prio
+# failback immediate
+# rr_weight uniform
+# no_path_retry 18
+# rr_min_io 100
+# path_checker tur
+# }
+# device {
+# vendor "HP"
+# product "P2000 G3 FC"
# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
# prio_callout "/sbin/mpath_prio_alua /dev/%n"
# features "0"
@@ -122,7 +150,21 @@
# path_grouping_policy group_by_prio
# failback immediate
# rr_weight uniform
-# no_path_retry 12
+# no_path_retry 18
+# rr_min_io 100
+# path_checker tur
+# }
+# device {
+# vendor "HP"
+# product "HSVX740"
+# getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
+# prio_callout "/sbin/mpath_prio_alua /dev/%n"
+# features "0"
+# hardware_handler "0"
+# path_grouping_policy group_by_prio
+# failback immediate
+# rr_weight uniform
+# no_path_retry 18
# rr_min_io 100
# path_checker tur
# }
@@ -146,6 +188,7 @@
# path_grouping_policy multibus
# failback immediate
# rr_weight uniform
+# no_path_retry 18
# rr_min_io 1000
# path_checker tur
# }
@@ -195,6 +195,7 @@
char *uuid = NULL;
int loopro = 0;
int hotplug = 0;
+ int loopcreated = 0;
struct stat buf;
initpts();
@@ -298,6 +299,7 @@
fprintf(stderr, "can't set up loop\n");
exit (1);
}
+ loopcreated = 1;
}
device = loopdev;
}
@@ -369,6 +371,15 @@
slices[j].size, device,
slices[j].start);
}
+ if (loopcreated && S_ISREG (buf.st_mode)) {
+ if (del_loop(device)) {
+ if (verbose)
+ printf("can't del loop : %s\n",
+ device);
+ exit(1);
+ }
+ printf("loop deleted : %s\n", device);
+ }
break;
case DELETE:
@@ -118,7 +118,7 @@
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
- .no_path_retry = 12,
+ .no_path_retry = 18,
.minio = 100,
.checker_name = TUR,
},
@@ -139,9 +139,41 @@
.checker_name = TUR,
},
{
- /* HP MSA2000 product family with new firmware */
+ /* HP MSA2000sa product family with new firmware */
+ .vendor = "HP",
+ .product = "MSA2012sa|MSA2312sa|MSA2324sa",
+ .getuid = "/sbin/scsi_id -g -u -n -s /block/%n",
+ .getprio = "/sbin/mpath_prio_alua /dev/%n",
+ .features = DEFAULT_FEATURES,
+ .hwhandler = DEFAULT_HWHANDLER,
+ .selector = DEFAULT_SELECTOR,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .rr_weight = RR_WEIGHT_NONE,
+ .no_path_retry = 18,
+ .minio = 100,
+ .checker_name = TUR,
+ },
+ {
+ /* HP MSA2000fc and MSA2000i product family with new firmware */
+ .vendor = "HP",
+ .product = "MSA2312fc|MSA2324fc|MSA2312i|MSA2324i|MSA2000s VOLUME",
+ .getuid = DEFAULT_GETUID,
+ .getprio = "/sbin/mpath_prio_alua /dev/%n",
+ .features = DEFAULT_FEATURES,
+ .hwhandler = DEFAULT_HWHANDLER,
+ .selector = DEFAULT_SELECTOR,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .rr_weight = RR_WEIGHT_NONE,
+ .no_path_retry = 18,
+ .minio = 100,
+ .checker_name = TUR,
+ },
+ {
+ /* HP P2000 product family */
.vendor = "HP",
- .product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
+ .product = "P2000 G3 FC",
.getuid = DEFAULT_GETUID,
.getprio = "/sbin/mpath_prio_alua /dev/%n",
.features = DEFAULT_FEATURES,
@@ -155,7 +187,7 @@
.checker_name = TUR,
},
{
- /* HP SVSP */
+ /* HP SVSP Active-Standby */
.vendor = "HP",
.product = "HSVX700",
.getuid = DEFAULT_GETUID,
@@ -166,11 +198,27 @@
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
- .no_path_retry = 12,
+ .no_path_retry = 18,
.minio = 100,
.checker_name = TUR,
},
{
+ /* HP SVSP Active-Active*/
+ .vendor = "HP",
+ .product = "HSVX740",
+ .getuid = DEFAULT_GETUID,
+ .getprio = "/sbin/mpath_prio_alua /dev/%n",
+ .features = DEFAULT_FEATURES,
+ .hwhandler = DEFAULT_HWHANDLER,
+ .selector = DEFAULT_SELECTOR,
+ .pgpolicy = GROUP_BY_PRIO,
+ .pgfailback = -FAILBACK_IMMEDIATE,
+ .rr_weight = RR_WEIGHT_NONE,
+ .no_path_retry = 18,
+ .minio = 100,
+ .checker_name = TUR,
+ },
+ {
.vendor = "HP",
.product = "A6189A",
.getuid = DEFAULT_GETUID,
@@ -313,7 +361,7 @@
.pgpolicy = MULTIBUS,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
- .no_path_retry = 12,
+ .no_path_retry = 18,
.minio = DEFAULT_MINIO,
.checker_name = TUR,
},
@@ -2,7 +2,7 @@
* Part: Configuration file parser/reader. Place into the dynamic
* data structure representation the conf file
*
- * Version: $Id: parser.c,v 1.18.2.2 2010/08/27 21:02:08 bmarzins Exp $
+ * Version: $Id: parser.c,v 1.18.2.3 2011/03/07 05:19:38 bmarzins Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
@@ -501,7 +501,7 @@
}
}
if (i >= VECTOR_SIZE(keywords))
- condlog(1, "mulipath.conf line %d, invalid keyword: %s",
+ condlog(1, "multipath.conf line %d, invalid keyword: %s",
line_nr, str);
free_strvec(strvec);
@@ -1356,7 +1356,8 @@
strncmp(mnt, "/dev", 4) == 0 || strncmp(mnt, "/sys", 4) == 0 ||
strcmp(mnt, "/var") == 0 || strncmp(mnt, "/var/lib", 8) == 0 ||
strncmp(mnt, "/var/run", 8) == 0 || strncmp(mnt, "/lib", 4) == 0 ||
- strncmp(mnt, "/lib64", 6) == 0 || strncmp(mnt, "/usr/lib64", 10) == 0)
+ strncmp(mnt, "/lib64", 6) == 0 || strncmp(mnt, "/usr/lib64", 10) == 0 ||
+ strncmp(mnt, "/ram", 4) == 0)
continue;
if (umount2(mnt, MNT_DETACH) < 0 && errno != ENOENT) {
condlog(0, "failed to umount '%s' (%s). skipping", mnt, strerror(errno));