You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
--- |
|
libmultipath/devmapper.c | 10 ++++++---- |
|
libmultipath/structs.h | 1 + |
|
multipathd/main.c | 5 +++-- |
|
3 files changed, 10 insertions(+), 6 deletions(-) |
|
|
|
Index: multipath-tools-130222/libmultipath/devmapper.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/devmapper.c |
|
+++ multipath-tools-130222/libmultipath/devmapper.c |
|
@@ -358,10 +358,12 @@ dm_addmap_create (struct multipath *mpp, |
|
extern int |
|
dm_addmap_reload (struct multipath *mpp, char *params) { |
|
sysfs_set_max_sectors_kb(mpp, 1); |
|
- if (dm_addmap(DM_DEVICE_RELOAD, TGT_MPATH, mpp, params, 0, ADDMAP_RW, SKIP_KPARTX_OFF)) |
|
- return 1; |
|
- if (errno != EROFS) |
|
- return 0; |
|
+ if (!mpp->force_readonly) { |
|
+ if (dm_addmap(DM_DEVICE_RELOAD, TGT_MPATH, mpp, params, 0, ADDMAP_RW, SKIP_KPARTX_OFF)) |
|
+ return 1; |
|
+ if (errno != EROFS) |
|
+ return 0; |
|
+ } |
|
return dm_addmap(DM_DEVICE_RELOAD, TGT_MPATH, mpp, params, 0, ADDMAP_RO, SKIP_KPARTX_OFF); |
|
} |
|
|
|
Index: multipath-tools-130222/libmultipath/structs.h |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/structs.h |
|
+++ multipath-tools-130222/libmultipath/structs.h |
|
@@ -259,6 +259,7 @@ struct multipath { |
|
int force_udev_reload; |
|
int skip_kpartx; |
|
int max_sectors_kb; |
|
+ int force_readonly; |
|
unsigned int dev_loss; |
|
uid_t uid; |
|
gid_t gid; |
|
Index: multipath-tools-130222/multipathd/main.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/multipathd/main.c |
|
+++ multipath-tools-130222/multipathd/main.c |
|
@@ -831,9 +831,10 @@ uev_update_path (struct uevent *uev, str |
|
pp->mpp->wait_for_udev = 2; |
|
return 0; |
|
} |
|
- |
|
+ if (ro == 1) |
|
+ pp->mpp->force_readonly = 1; |
|
retval = reload_map(vecs, pp->mpp, 0); |
|
- |
|
+ pp->mpp->force_readonly = 0; |
|
condlog(2, "%s: map %s reloaded (retval %d)", |
|
uev->kernel, pp->mpp->alias, retval); |
|
}
|
|
|