diff options
Diffstat (limited to '0034-RHBZ-579575-add-q-multipath-option.patch')
-rw-r--r-- | 0034-RHBZ-579575-add-q-multipath-option.patch | 135 |
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 */ |