Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 854270 Details for
Bug 1056976
Improve the way the mpath handles path failure/reinstatement to avoid extra processing for any device stack layered on top
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
patch to make it possible to recognize reload event - mark it with a proper udev flag
mpath-udev-reload-flag.patch (text/plain), 8.35 KB, created by
Peter Rajnoha
on 2014-01-23 09:45:04 UTC
(
hide
)
Description:
patch to make it possible to recognize reload event - mark it with a proper udev flag
Filename:
MIME Type:
Creator:
Peter Rajnoha
Created:
2014-01-23 09:45:04 UTC
Size:
8.35 KB
patch
obsolete
>diff -purN multipath-tools-130222.orig/kpartx/devmapper.c multipath-tools-130222/kpartx/devmapper.c >--- multipath-tools-130222.orig/kpartx/devmapper.c 2013-02-21 22:10:18.000000000 +0100 >+++ multipath-tools-130222/kpartx/devmapper.c 2014-01-20 15:52:12.343926644 +0100 >@@ -60,7 +60,7 @@ dm_prereq (char * str, int x, int y, int > } > > extern int >-dm_simplecmd (int task, const char *name, int no_flush, uint32_t *cookie) { >+dm_simplecmd (int task, const char *name, int no_flush, uint32_t *cookie, uint16_t udev_flags) { > int r = 0; > int udev_wait_flag = (task == DM_DEVICE_RESUME || > task == DM_DEVICE_REMOVE); >@@ -78,7 +78,7 @@ dm_simplecmd (int task, const char *name > if (no_flush) > dm_task_no_flush(dmt); > >- if (udev_wait_flag && !dm_task_set_cookie(dmt, cookie, (udev_sync)? 0 : DM_UDEV_DISABLE_LIBRARY_FALLBACK)) >+ if (udev_wait_flag && !dm_task_set_cookie(dmt, cookie, ((udev_sync)? 0 : DM_UDEV_DISABLE_LIBRARY_FALLBACK) | udev_flags)) > goto out; > r = dm_task_run(dmt); > >diff -purN multipath-tools-130222.orig/kpartx/devmapper.h multipath-tools-130222/kpartx/devmapper.h >--- multipath-tools-130222.orig/kpartx/devmapper.h 2013-02-21 22:10:18.000000000 +0100 >+++ multipath-tools-130222/kpartx/devmapper.h 2014-01-20 15:21:45.995010282 +0100 >@@ -2,10 +2,12 @@ > #define MINOR(dev) ((dev & 0xff) | ((dev >> 12) & 0xfff00)) > #define MKDEV(ma,mi) ((mi & 0xff) | (ma << 8) | ((mi & ~0xff) << 12)) > >+#define MPATH_UDEV_RELOAD_FLAG DM_SUBSYSTEM_UDEV_FLAG0 >+ > extern int udev_sync; > > int dm_prereq (char *, int, int, int); >-int dm_simplecmd (int, const char *, int, uint32_t *); >+int dm_simplecmd (int, const char *, int, uint32_t *, uint16_t); > int dm_addmap (int, const char *, const char *, const char *, uint64_t, > int, const char *, int, mode_t, uid_t, gid_t, uint32_t *); > int dm_map_present (char *); >diff -purN multipath-tools-130222.orig/kpartx/kpartx.c multipath-tools-130222/kpartx/kpartx.c >--- multipath-tools-130222.orig/kpartx/kpartx.c 2014-01-20 14:17:53.189239006 +0100 >+++ multipath-tools-130222/kpartx/kpartx.c 2014-01-20 15:14:06.271066689 +0100 >@@ -421,7 +421,7 @@ main(int argc, char **argv){ > continue; > > if (!dm_simplecmd(DM_DEVICE_REMOVE, partname, >- 0, &cookie)) { >+ 0, &cookie, 0)) { > r++; > continue; > } >@@ -473,7 +473,7 @@ main(int argc, char **argv){ > } > if (op == DM_DEVICE_RELOAD && > !dm_simplecmd(DM_DEVICE_RESUME, partname, >- 1, &cookie)) { >+ 1, &cookie, MPATH_UDEV_RELOAD_FLAG)) { > fprintf(stderr, "resume failed on %s\n", > partname); > r++; >@@ -505,7 +505,7 @@ main(int argc, char **argv){ > continue; > > if (!dm_simplecmd(DM_DEVICE_REMOVE, >- partname, 1, &cookie)) { >+ partname, 1, &cookie, 0)) { > r++; > continue; > } >diff -purN multipath-tools-130222.orig/libmultipath/configure.c multipath-tools-130222/libmultipath/configure.c >--- multipath-tools-130222.orig/libmultipath/configure.c 2014-01-20 14:17:53.141239119 +0100 >+++ multipath-tools-130222/libmultipath/configure.c 2014-01-20 15:11:36.899440156 +0100 >@@ -390,13 +390,13 @@ domap (struct multipath * mpp, char * pa > case ACT_RELOAD: > r = dm_addmap_reload(mpp, params); > if (r) >- r = dm_simplecmd_noflush(DM_DEVICE_RESUME, mpp->alias); >+ r = dm_simplecmd_noflush(DM_DEVICE_RESUME, mpp->alias, MPATH_UDEV_RELOAD_FLAG); > break; > > case ACT_RESIZE: > r = dm_addmap_reload(mpp, params); > if (r) >- r = dm_simplecmd_flush(DM_DEVICE_RESUME, mpp->alias, 1); >+ r = dm_simplecmd_flush(DM_DEVICE_RESUME, mpp->alias, 1, 0); > break; > > case ACT_RENAME: >diff -purN multipath-tools-130222.orig/libmultipath/devmapper.c multipath-tools-130222/libmultipath/devmapper.c >--- multipath-tools-130222.orig/libmultipath/devmapper.c 2014-01-20 14:17:53.176239037 +0100 >+++ multipath-tools-130222/libmultipath/devmapper.c 2014-01-20 15:52:05.698942187 +0100 >@@ -200,7 +200,7 @@ dm_prereq (void) > } > > static int >-dm_simplecmd (int task, const char *name, int no_flush, int need_sync) { >+dm_simplecmd (int task, const char *name, int no_flush, int need_sync, uint16_t udev_flags) { > int r = 0; > int udev_wait_flag = (need_sync && (task == DM_DEVICE_RESUME || > task == DM_DEVICE_REMOVE)); >@@ -219,7 +219,7 @@ dm_simplecmd (int task, const char *name > dm_task_no_flush(dmt); /* for DM_DEVICE_SUSPEND/RESUME */ > #endif > >- if (udev_wait_flag && !dm_task_set_cookie(dmt, &conf->cookie, (conf->daemon)? DM_UDEV_DISABLE_LIBRARY_FALLBACK : 0)) >+ if (udev_wait_flag && !dm_task_set_cookie(dmt, &conf->cookie, ((conf->daemon)? DM_UDEV_DISABLE_LIBRARY_FALLBACK : 0) | udev_flags)) > goto out; > r = dm_task_run (dmt); > >@@ -229,13 +229,13 @@ dm_simplecmd (int task, const char *name > } > > extern int >-dm_simplecmd_flush (int task, const char *name, int needsync) { >- return dm_simplecmd(task, name, 0, needsync); >+dm_simplecmd_flush (int task, const char *name, int needsync, uint16_t udev_flags) { >+ return dm_simplecmd(task, name, 0, needsync, udev_flags); > } > > extern int >-dm_simplecmd_noflush (int task, const char *name) { >- return dm_simplecmd(task, name, 1, 1); >+dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags) { >+ return dm_simplecmd(task, name, 1, 1, udev_flags); > } > > extern int >@@ -670,7 +670,7 @@ _dm_flush_map (const char * mapname, int > return 1; > } > >- r = dm_simplecmd_flush(DM_DEVICE_REMOVE, mapname, need_sync); >+ r = dm_simplecmd_flush(DM_DEVICE_REMOVE, mapname, need_sync, 0); > > if (r) { > condlog(4, "multipath map %s removed", mapname); >@@ -703,14 +703,14 @@ dm_suspend_and_flush_map (const char * m > if (s) > queue_if_no_path = 0; > else >- s = dm_simplecmd_flush(DM_DEVICE_SUSPEND, mapname, 0); >+ s = dm_simplecmd_flush(DM_DEVICE_SUSPEND, mapname, 0, 0); > > if (!dm_flush_map(mapname)) { > condlog(4, "multipath map %s removed", mapname); > return 0; > } > condlog(2, "failed to remove multipath map %s", mapname); >- dm_simplecmd_noflush(DM_DEVICE_RESUME, mapname); >+ dm_simplecmd_noflush(DM_DEVICE_RESUME, mapname, 0); > if (queue_if_no_path) > s = dm_queue_if_no_path((char *)mapname, 1); > return 1; >@@ -1077,7 +1077,7 @@ dm_remove_partmaps (const char * mapname > condlog(4, "partition map %s removed", > names->name); > dm_simplecmd_flush(DM_DEVICE_REMOVE, names->name, >- need_sync); >+ need_sync, 0); > } > > next = names->next; >@@ -1305,7 +1305,7 @@ int dm_reassign_table(const char *name, > condlog(3, "%s: failed to reassign targets", name); > goto out_reload; > } >- dm_simplecmd_noflush(DM_DEVICE_RESUME, name); >+ dm_simplecmd_noflush(DM_DEVICE_RESUME, name, MPATH_UDEV_RELOAD_FLAG); > } > r = 1; > >diff -purN multipath-tools-130222.orig/libmultipath/devmapper.h multipath-tools-130222/libmultipath/devmapper.h >--- multipath-tools-130222.orig/libmultipath/devmapper.h 2014-01-20 14:17:53.176239037 +0100 >+++ multipath-tools-130222/libmultipath/devmapper.h 2014-01-20 15:22:06.198963690 +0100 >@@ -6,11 +6,13 @@ > #define TGT_MPATH "multipath" > #define TGT_PART "linear" > >+#define MPATH_UDEV_RELOAD_FLAG DM_SUBSYSTEM_UDEV_FLAG0 >+ > void dm_init(void); > int dm_prereq (void); > int dm_drv_version (unsigned int * version, char * str); >-int dm_simplecmd_flush (int, const char *, int); >-int dm_simplecmd_noflush (int, const char *); >+int dm_simplecmd_flush (int, const char *, int, uint16_t); >+int dm_simplecmd_noflush (int, const char *, uint16_t); > int dm_addmap_create (struct multipath *mpp, char *params); > int dm_addmap_reload (struct multipath *mpp, char *params); > int dm_map_present (const char *); >diff -purN multipath-tools-130222.orig/multipathd/cli_handlers.c multipath-tools-130222/multipathd/cli_handlers.c >--- multipath-tools-130222.orig/multipathd/cli_handlers.c 2014-01-20 14:17:53.198238985 +0100 >+++ multipath-tools-130222/multipathd/cli_handlers.c 2014-01-20 15:10:30.727606608 +0100 >@@ -783,7 +783,7 @@ cli_suspend(void * v, char ** reply, int > { > struct vectors * vecs = (struct vectors *)data; > char * param = get_keyparam(v, MAP); >- int r = dm_simplecmd_noflush(DM_DEVICE_SUSPEND, param); >+ int r = dm_simplecmd_noflush(DM_DEVICE_SUSPEND, param, 0); > > param = convert_dev(param, 0); > condlog(2, "%s: suspend (operator)", param); >@@ -805,7 +805,7 @@ cli_resume(void * v, char ** reply, int > { > struct vectors * vecs = (struct vectors *)data; > char * param = get_keyparam(v, MAP); >- int r = dm_simplecmd_noflush(DM_DEVICE_RESUME, param); >+ int r = dm_simplecmd_noflush(DM_DEVICE_RESUME, param, 0); > > param = convert_dev(param, 0); > condlog(2, "%s: resume (operator)", param);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1056976
:
854268
| 854270