summaryrefslogtreecommitdiffstats
path: root/0034-RHBZ-579575-add-q-multipath-option.patch
diff options
context:
space:
mode:
Diffstat (limited to '0034-RHBZ-579575-add-q-multipath-option.patch')
-rw-r--r--0034-RHBZ-579575-add-q-multipath-option.patch135
1 files changed, 0 insertions, 135 deletions
diff --git a/0034-RHBZ-579575-add-q-multipath-option.patch b/0034-RHBZ-579575-add-q-multipath-option.patch
deleted file mode 100644
index 7d85678..0000000
--- a/0034-RHBZ-579575-add-q-multipath-option.patch
+++ /dev/null
@@ -1,135 +0,0 @@
----
- libmultipath/config.h | 1 +
- libmultipath/configure.c | 6 +++++-
- libmultipath/file.c | 32 ++++++++++++++++++++++++++++++++
- libmultipath/file.h | 1 +
- multipath/main.c | 8 ++++++--
- 5 files changed, 45 insertions(+), 3 deletions(-)
-
-Index: multipath-tools/libmultipath/config.h
-===================================================================
---- multipath-tools.orig/libmultipath/config.h
-+++ multipath-tools/libmultipath/config.h
-@@ -87,6 +87,7 @@ struct config {
- int fast_io_fail;
- unsigned int dev_loss;
- int find_multipaths;
-+ int allow_queueing;
- uid_t uid;
- gid_t gid;
- mode_t mode;
-Index: multipath-tools/libmultipath/configure.c
-===================================================================
---- multipath-tools.orig/libmultipath/configure.c
-+++ multipath-tools/libmultipath/configure.c
-@@ -36,6 +36,7 @@
- #include "prio.h"
- #include "util.h"
- #include "finder.h"
-+#include "file.h"
-
- extern int
- setup_map (struct multipath * mpp)
-@@ -567,7 +568,10 @@ coalesce_paths (struct vectors * vecs, v
- if (r == DOMAP_DRY)
- continue;
-
-- if (mpp->no_path_retry != NO_PATH_RETRY_UNDEF) {
-+ if (!conf->daemon && !conf->allow_queueing &&
-+ !pidfile_check(DEFAULT_PIDFILE))
-+ dm_queue_if_no_path(mpp->alias, 0);
-+ else if (mpp->no_path_retry != NO_PATH_RETRY_UNDEF) {
- if (mpp->no_path_retry == NO_PATH_RETRY_FAIL)
- dm_queue_if_no_path(mpp->alias, 0);
- else
-Index: multipath-tools/multipath/main.c
-===================================================================
---- multipath-tools.orig/multipath/main.c
-+++ multipath-tools/multipath/main.c
-@@ -80,7 +80,7 @@ usage (char * progname)
- {
- fprintf (stderr, VERSION_STRING);
- fprintf (stderr, "Usage:\n");
-- fprintf (stderr, " %s [-c] [-d] [-r] [-v lvl] [-p pol] [-b fil] [dev]\n", progname);
-+ fprintf (stderr, " %s [-c] [-d] [-r] [-v lvl] [-p pol] [-b fil] [-q] [dev]\n", progname);
- fprintf (stderr, " %s -l|-ll|-f [-v lvl] [-b fil] [dev]\n", progname);
- fprintf (stderr, " %s -F [-v lvl]\n", progname);
- fprintf (stderr, " %s -h\n", progname);
-@@ -93,6 +93,7 @@ usage (char * progname)
- " -f flush a multipath device map\n" \
- " -F flush all multipath device maps\n" \
- " -c check if a device should be a path in a multipath device\n" \
-+ " -q allow queue_if_no_path when multipathd is not running\n"\
- " -d dry run, do not create or update devmaps\n" \
- " -r force devmap reload\n" \
- " -p policy failover|multibus|group_by_serial|group_by_prio\n" \
-@@ -362,7 +363,7 @@ main (int argc, char *argv[])
- condlog(0, "multipath tools need sysfs mounted");
- exit(1);
- }
-- while ((arg = getopt(argc, argv, ":dchl::FfM:v:p:b:r")) != EOF ) {
-+ while ((arg = getopt(argc, argv, ":dchl::FfM:v:p:b:rq")) != EOF ) {
- switch(arg) {
- case 1: printf("optarg : %s\n",optarg);
- break;
-@@ -379,6 +380,9 @@ main (int argc, char *argv[])
- case 'c':
- conf->dry_run = 2;
- break;
-+ case 'q':
-+ conf->allow_queueing = 1;
-+ break;
- case 'd':
- if (!conf->dry_run)
- conf->dry_run = 1;
-Index: multipath-tools/libmultipath/file.c
-===================================================================
---- multipath-tools.orig/libmultipath/file.c
-+++ multipath-tools/libmultipath/file.c
-@@ -176,3 +176,35 @@ fail:
- close(fd);
- return -1;
- }
-+
-+int pidfile_check(const char *file)
-+{
-+ int fd;
-+ struct flock lock;
-+
-+ fd = open(file, O_RDONLY);
-+ if (fd < 0) {
-+ if (errno == ENOENT)
-+ return 0;
-+ condlog(0, "Cannot open pidfile, %s : %s", file,
-+ strerror(errno));
-+ return -1;
-+ }
-+ lock.l_type = F_WRLCK;
-+ lock.l_start = 0;
-+ lock.l_whence = SEEK_SET;
-+ lock.l_len = 0;
-+
-+ if (fcntl(fd, F_GETLK, &lock) < 0) {
-+ condlog(0, "Cannot check lock on pidfile, %s : %s", file,
-+ strerror(errno));
-+ return -1;
-+ }
-+ close(fd);
-+ if (lock.l_type == F_UNLCK)
-+ return 0;
-+ return 1;
-+}
-+
-+
-+
-Index: multipath-tools/libmultipath/file.h
-===================================================================
---- multipath-tools.orig/libmultipath/file.h
-+++ multipath-tools/libmultipath/file.h
-@@ -7,5 +7,6 @@
-
- #define FILE_TIMEOUT 30
- int open_file(char *file, int *can_write, char *header);
-+int pidfile_check(const char *file);
-
- #endif /* _FILE_H */