diff options
author | Changqing Li <changqing.li@windriver.com> | 2018-07-18 15:31:22 +0800 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2018-07-20 16:07:12 -0700 |
commit | 3dc38c444b5fc88f9f0ba342a2e7db4c6566719f (patch) | |
tree | 9e5e01abfada189189bb79f57e7647f7a5c34c82 /meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch | |
parent | 61c6d99fb814be8ba295d6923f549179dfb51fe8 (diff) | |
download | meta-openembedded-3dc38c444b5fc88f9f0ba342a2e7db4c6566719f.tar.gz |
multipath-tools: upgrade 0.7.1 -> 0.7.7
1. Backport patches from fedora:
git://pkgs.fedoraproject.org/rpms/device-mapper-multipath
- 0001 ~ 0028
2. drop obsolute patch and rebase still needed patch
rebased patch: 0029~0031
Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch')
-rw-r--r-- | meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch | 648 |
1 files changed, 0 insertions, 648 deletions
diff --git a/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch b/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch deleted file mode 100644 index acef41023..000000000 --- a/meta-oe/recipes-support/multipath-tools/files/0005-RH-add-mpathconf.patch +++ /dev/null | |||
@@ -1,648 +0,0 @@ | |||
1 | From de44504fe7f7802cd474efd92ac15b5a8857db1f Mon Sep 17 00:00:00 2001 | ||
2 | From: Benjamin Marzinski <bmarzins@redhat.com> | ||
3 | Date: Thu, 16 Oct 2014 15:49:01 -0500 | ||
4 | Subject: [PATCH 05/14] RH: add mpathconf | ||
5 | |||
6 | mpathconf is a program (largely based on lvmcomf) to help users | ||
7 | configure /etc/multipath.conf and enable or disable multipathing. It | ||
8 | has a couple of built-in options that can be set directly from the | ||
9 | command line. But, mostly it is used to get a multipath.conf file | ||
10 | with the OS defaults, and to enable and disable multipathing via | ||
11 | a single command. | ||
12 | |||
13 | Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> | ||
14 | --- | ||
15 | libmultipath/config.c | 1 + | ||
16 | multipath/Makefile | 5 + | ||
17 | multipath/mpathconf | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
18 | multipath/mpathconf.8 | 101 +++++++++++ | ||
19 | 4 files changed, 571 insertions(+) | ||
20 | create mode 100644 multipath/mpathconf | ||
21 | create mode 100644 multipath/mpathconf.8 | ||
22 | |||
23 | diff --git a/libmultipath/config.c b/libmultipath/config.c | ||
24 | index aae69b8..c485748 100644 | ||
25 | --- a/libmultipath/config.c | ||
26 | +++ b/libmultipath/config.c | ||
27 | @@ -672,6 +672,7 @@ load_config (char * file) | ||
28 | condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices."); | ||
29 | condlog(0, "A default multipath.conf file is located at"); | ||
30 | condlog(0, "/usr/share/doc/device-mapper-multipath-%d.%d.%d/multipath.conf", MULTIPATH_VERSION(VERSION_CODE)); | ||
31 | + condlog(0, "You can run /sbin/mpathconf to create or modify /etc/multipath.conf"); | ||
32 | if (conf->blist_devnode == NULL) { | ||
33 | conf->blist_devnode = vector_alloc(); | ||
34 | if (!conf->blist_devnode) { | ||
35 | diff --git a/multipath/Makefile b/multipath/Makefile | ||
36 | index 1e9ee4b..3d4d459 100644 | ||
37 | --- a/multipath/Makefile | ||
38 | +++ b/multipath/Makefile | ||
39 | @@ -18,10 +18,12 @@ $(EXEC): $(OBJS) | ||
40 | $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS) $(LIBDEPS) | ||
41 | $(GZIP) $(EXEC).8 > $(EXEC).8.gz | ||
42 | $(GZIP) $(EXEC).conf.5 > $(EXEC).conf.5.gz | ||
43 | + $(GZIP) mpathconf.8 > mpathconf.8.gz | ||
44 | |||
45 | install: | ||
46 | $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir) | ||
47 | $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/ | ||
48 | + $(INSTALL_PROGRAM) -m 755 mpathconf $(DESTDIR)$(bindir)/ | ||
49 | $(INSTALL_PROGRAM) -d $(DESTDIR)$(udevrulesdir) | ||
50 | $(INSTALL_PROGRAM) -m 644 11-dm-mpath.rules $(DESTDIR)$(udevrulesdir) | ||
51 | $(INSTALL_PROGRAM) -m 644 $(EXEC).rules $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules | ||
52 | @@ -29,13 +31,16 @@ install: | ||
53 | $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(man8dir) | ||
54 | $(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir) | ||
55 | $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5.gz $(DESTDIR)$(man5dir) | ||
56 | + $(INSTALL_PROGRAM) -m 644 mpathconf.8.gz $(DESTDIR)$(man8dir) | ||
57 | |||
58 | uninstall: | ||
59 | $(RM) $(DESTDIR)$(bindir)/$(EXEC) | ||
60 | $(RM) $(DESTDIR)$(udevrulesdir)/11-dm-mpath.rules | ||
61 | $(RM) $(DESTDIR)$(libudevdir)/rules.d/62-multipath.rules | ||
62 | + $(RM) $(DESTDIR)$(bindir)/mpathconf | ||
63 | $(RM) $(DESTDIR)$(man8dir)/$(EXEC).8.gz | ||
64 | $(RM) $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz | ||
65 | + $(RM) $(DESTDIR)$(man8dir)/mpathconf.8.gz | ||
66 | |||
67 | clean: | ||
68 | $(RM) core *.o $(EXEC) *.gz | ||
69 | diff --git a/multipath/mpathconf b/multipath/mpathconf | ||
70 | new file mode 100644 | ||
71 | index 0000000..e839134 | ||
72 | --- /dev/null | ||
73 | +++ b/multipath/mpathconf | ||
74 | @@ -0,0 +1,464 @@ | ||
75 | +#!/bin/bash | ||
76 | +# | ||
77 | +# Copyright (C) 2010 Red Hat, Inc. All rights reserved. | ||
78 | +# | ||
79 | +# This file is part of the device-mapper-multipath package. | ||
80 | +# | ||
81 | +# This copyrighted material is made available to anyone wishing to use, | ||
82 | +# modify, copy, or redistribute it subject to the terms and conditions | ||
83 | +# of the GNU General Public License v.2. | ||
84 | +# | ||
85 | +# You should have received a copy of the GNU General Public License | ||
86 | +# along with this program; if not, write to the Free Software Foundation, | ||
87 | +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
88 | + | ||
89 | +# | ||
90 | +# Simple editting of /etc/multipath.conf | ||
91 | +# This program was largely ripped off from lvmconf | ||
92 | +# | ||
93 | + | ||
94 | +unset ENABLE FIND FRIENDLY MODULE MULTIPATHD HAVE_DISABLE HAVE_WWID_DISABLE HAVE_FIND HAVE_BLACKLIST HAVE_EXCEPTIONS HAVE_DEFAULTS HAVE_FRIENDLY HAVE_MULTIPATHD HAVE_MODULE HAVE_OUTFILE SHOW_STATUS CHANGED_CONFIG WWID_LIST | ||
95 | + | ||
96 | +DEFAULT_CONFIG="# device-mapper-multipath configuration file | ||
97 | + | ||
98 | +# For a complete list of the default configuration values, run either: | ||
99 | +# # multipath -t | ||
100 | +# or | ||
101 | +# # multipathd show config | ||
102 | + | ||
103 | +# For a list of configuration options with descriptions, see the | ||
104 | +# multipath.conf man page. | ||
105 | + | ||
106 | +defaults { | ||
107 | + user_friendly_names yes | ||
108 | + find_multipaths yes | ||
109 | +} | ||
110 | + | ||
111 | +blacklist_exceptions { | ||
112 | + property \"(SCSI_IDENT_|ID_WWN)\" | ||
113 | +}" | ||
114 | + | ||
115 | +CONFIGFILE="/etc/multipath.conf" | ||
116 | +OUTPUTFILE="/etc/multipath.conf" | ||
117 | +MULTIPATHDIR="/etc/multipath" | ||
118 | +TMPFILE="/etc/multipath/.multipath.conf.tmp" | ||
119 | +WWIDS=0 | ||
120 | + | ||
121 | +function usage | ||
122 | +{ | ||
123 | + echo "usage: $0 <command>" | ||
124 | + echo "" | ||
125 | + echo "Commands:" | ||
126 | + echo "Enable: --enable " | ||
127 | + echo "Disable: --disable" | ||
128 | + echo "Only allow certain wwids (instead of enable): --allow <WWID>" | ||
129 | + echo "Set user_friendly_names (Default y): --user_friendly_names <y|n>" | ||
130 | + echo "Set find_multipaths (Default y): --find_multipaths <y|n>" | ||
131 | + echo "Load the dm-multipath modules on enable (Default y): --with_module <y|n>" | ||
132 | + echo "start/stop/reload multipathd (Default n): --with_multipathd <y|n>" | ||
133 | + echo "select output file (Default /etc/multipath.conf): --outfile <FILE>" | ||
134 | + echo "" | ||
135 | +} | ||
136 | + | ||
137 | +function add_wwid | ||
138 | +{ | ||
139 | + INDEX=0 | ||
140 | + while [ "$INDEX" -lt "$WWIDS" ] ; do | ||
141 | + if [ "$1" = "${WWID_LIST[$INDEX]}" ] ; then | ||
142 | + return | ||
143 | + fi | ||
144 | + ((INDEX++)) | ||
145 | + done | ||
146 | + WWID_LIST[$WWIDS]="$1" | ||
147 | + ((WWIDS++)) | ||
148 | +} | ||
149 | + | ||
150 | +function get_dm_deps | ||
151 | +{ | ||
152 | + shift 3 | ||
153 | + while [ -n "$1" -a -n "$2" ]; do | ||
154 | + MAJOR=$(echo $1 | tr -d '(,') | ||
155 | + MINOR=$(echo $2 | tr -d ')') | ||
156 | + UUID=`dmsetup info -c --noheadings -o uuid -j $MAJOR -m $MINOR 2> /dev/null` | ||
157 | + if [ -n "$UUID" ] ; then | ||
158 | + set_dm_wwid $UUID | ||
159 | + fi | ||
160 | + shift 2 | ||
161 | + done | ||
162 | +} | ||
163 | + | ||
164 | +function set_dm_wwid | ||
165 | +{ | ||
166 | + if [[ "$1" =~ ^part[[:digit:]]+-mpath- ]] ; then | ||
167 | + add_wwid "${1##part*-mpath-}" | ||
168 | + elif [[ "$1" =~ ^mpath- ]] ; then | ||
169 | + add_wwid "${1##mpath-}" | ||
170 | + else | ||
171 | + get_dm_deps `dmsetup deps -u $1` | ||
172 | + fi | ||
173 | +} | ||
174 | + | ||
175 | +function set_wwid | ||
176 | +{ | ||
177 | + UUID="" | ||
178 | + if [[ "$1" =~ ^[[:digit:]]+:[[:digit:]]+$ ]] ; then | ||
179 | + MAJOR=${1%%:*} | ||
180 | + MINOR=${1##*:} | ||
181 | + UUID=`dmsetup info -c --noheadings -o uuid -j $MAJOR -m $MINOR 2> /dev/null` | ||
182 | + else | ||
183 | + UUID=`dmsetup info -c --noheadings -o uuid $1 2> /dev/null` | ||
184 | + fi | ||
185 | + if [ -n "$UUID" ] ; then | ||
186 | + set_dm_wwid $UUID | ||
187 | + else | ||
188 | + add_wwid "$1" | ||
189 | + fi | ||
190 | +} | ||
191 | + | ||
192 | +function parse_args | ||
193 | +{ | ||
194 | + while [ -n "$1" ]; do | ||
195 | + case $1 in | ||
196 | + --enable) | ||
197 | + ENABLE=1 | ||
198 | + shift | ||
199 | + ;; | ||
200 | + --disable) | ||
201 | + ENABLE=0 | ||
202 | + shift | ||
203 | + ;; | ||
204 | + --allow) | ||
205 | + ENABLE=2 | ||
206 | + if [ -n "$2" ]; then | ||
207 | + set_wwid $2 | ||
208 | + shift 2 | ||
209 | + else | ||
210 | + usage | ||
211 | + exit 1 | ||
212 | + fi | ||
213 | + ;; | ||
214 | + --user_friendly_names) | ||
215 | + if [ -n "$2" ]; then | ||
216 | + FRIENDLY=$2 | ||
217 | + shift 2 | ||
218 | + else | ||
219 | + usage | ||
220 | + exit 1 | ||
221 | + fi | ||
222 | + ;; | ||
223 | + --find_multipaths) | ||
224 | + if [ -n "$2" ]; then | ||
225 | + FIND=$2 | ||
226 | + shift 2 | ||
227 | + else | ||
228 | + usage | ||
229 | + exit 1 | ||
230 | + fi | ||
231 | + ;; | ||
232 | + --with_module) | ||
233 | + if [ -n "$2" ]; then | ||
234 | + MODULE=$2 | ||
235 | + shift 2 | ||
236 | + else | ||
237 | + usage | ||
238 | + exit 1 | ||
239 | + fi | ||
240 | + ;; | ||
241 | + --with_multipathd) | ||
242 | + if [ -n "$2" ]; then | ||
243 | + MULTIPATHD=$2 | ||
244 | + shift 2 | ||
245 | + else | ||
246 | + usage | ||
247 | + exit 1 | ||
248 | + fi | ||
249 | + ;; | ||
250 | + --outfile) | ||
251 | + if [ -n "$2" ]; then | ||
252 | + OUTPUTFILE=$2 | ||
253 | + HAVE_OUTFILE=1 | ||
254 | + shift 2 | ||
255 | + else | ||
256 | + usage | ||
257 | + exit 1 | ||
258 | + fi | ||
259 | + ;; | ||
260 | + *) | ||
261 | + usage | ||
262 | + exit | ||
263 | + esac | ||
264 | + done | ||
265 | +} | ||
266 | + | ||
267 | +function validate_args | ||
268 | +{ | ||
269 | + if [ "$ENABLE" = "0" ] && [ -n "$FRIENDLY" -o -n "$FIND" -o -n "$MODULE" ]; then | ||
270 | + echo "ignoring extra parameters on disable" | ||
271 | + FRIENDLY="" | ||
272 | + FIND="" | ||
273 | + MODULE="" | ||
274 | + fi | ||
275 | + if [ -n "$FRIENDLY" ] && [ "$FRIENDLY" != "y" -a "$FRIENDLY" != "n" ]; then | ||
276 | + echo "--user_friendly_names must be either 'y' or 'n'" | ||
277 | + exit 1 | ||
278 | + fi | ||
279 | + if [ -n "$FIND" ] && [ "$FIND" != "y" -a "$FIND" != "n" ]; then | ||
280 | + echo "--find_multipaths must be either 'y' or 'n'" | ||
281 | + exit 1 | ||
282 | + fi | ||
283 | + if [ -z "$ENABLE" -a -z "$FIND" -a -z "$FRIENDLY" ]; then | ||
284 | + SHOW_STATUS=1 | ||
285 | + fi | ||
286 | + if [ -n "$MODULE" ] && [ "$MODULE" != "y" -a "$MODULE" != "n" ]; then | ||
287 | + echo "--with_module must be either 'y' or 'n'" | ||
288 | + exit 1 | ||
289 | + fi | ||
290 | + if [ -n "$MULTIPATHD" ] && [ "$MULTIPATHD" != "y" -a "$MULTIPATHD" != "n" ]; then | ||
291 | + echo "--with_multipathd must be either 'y' or 'n'" | ||
292 | + exit 1 | ||
293 | + fi | ||
294 | + if [ "$ENABLE" = 2 -a -z "$HAVE_OUTFILE" ]; then | ||
295 | + echo "Because --allow makes changes that cannot be automatically reversed," | ||
296 | + echo "you must set --outfile when you set --allow" | ||
297 | + exit 1 | ||
298 | + fi | ||
299 | +} | ||
300 | + | ||
301 | +function add_blacklist_exceptions | ||
302 | +{ | ||
303 | + INDEX=0 | ||
304 | + while [ "$INDEX" -lt "$WWIDS" ] ; do | ||
305 | + sed -i '/^blacklist_exceptions[[:space:]]*{/ a\ | ||
306 | + wwid '"\"${WWID_LIST[$INDEX]}\""' | ||
307 | +' $TMPFILE | ||
308 | + ((INDEX++)) | ||
309 | + done | ||
310 | +} | ||
311 | + | ||
312 | +umask 0077 | ||
313 | + | ||
314 | +parse_args "$@" | ||
315 | + | ||
316 | +validate_args | ||
317 | + | ||
318 | +if [ ! -d "$MULTIPATHDIR" ]; then | ||
319 | + echo "/etc/multipath/ does not exist. failing" | ||
320 | + exit 1 | ||
321 | +fi | ||
322 | + | ||
323 | +rm $TMPFILE 2> /dev/null | ||
324 | +echo "$DEFAULT_CONFIG" > $TMPFILE | ||
325 | +if [ -f "$CONFIGFILE" ]; then | ||
326 | + cp $CONFIGFILE $TMPFILE | ||
327 | +fi | ||
328 | + | ||
329 | +if grep -q "^blacklist[[:space:]]*{" $TMPFILE ; then | ||
330 | + HAVE_BLACKLIST=1 | ||
331 | +fi | ||
332 | + | ||
333 | +if grep -q "^blacklist_exceptions[[:space:]]*{" $TMPFILE ; then | ||
334 | + HAVE_EXCEPTIONS=1 | ||
335 | +fi | ||
336 | + | ||
337 | +if grep -q "^defaults[[:space:]]*{" $TMPFILE ; then | ||
338 | + HAVE_DEFAULTS=1 | ||
339 | +fi | ||
340 | + | ||
341 | +if [ -z "$MODULE" -o "$MODULE" = "y" ]; then | ||
342 | + if lsmod | grep -q "dm_multipath" ; then | ||
343 | + HAVE_MODULE=1 | ||
344 | + else | ||
345 | + HAVE_MODULE=0 | ||
346 | + fi | ||
347 | +fi | ||
348 | + | ||
349 | +if [ "$MULTIPATHD" = "y" ]; then | ||
350 | + if /bin/systemctl status multipathd.service > /dev/null 2>&1 ; then | ||
351 | + HAVE_MULTIPATHD=1 | ||
352 | + else | ||
353 | + HAVE_MULTIPATHD=0 | ||
354 | + fi | ||
355 | +fi | ||
356 | + | ||
357 | +if [ "$HAVE_BLACKLIST" = "1" ]; then | ||
358 | + if sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*devnode \"\.\?\*\"" ; then | ||
359 | + HAVE_DISABLE=1 | ||
360 | + elif sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*devnode \"\.\?\*\"" ; then | ||
361 | + HAVE_DISABLE=0 | ||
362 | + fi | ||
363 | +fi | ||
364 | + | ||
365 | +if [ "$HAVE_BLACKLIST" = "1" ]; then | ||
366 | + if sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*wwid \"\.\?\*\"" ; then | ||
367 | + HAVE_WWID_DISABLE=1 | ||
368 | + elif sed -n '/^blacklist[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*#[[:space:]]*wwid \"\.\?\*\"" ; then | ||
369 | + HAVE_WWID_DISABLE=0 | ||
370 | + fi | ||
371 | +fi | ||
372 | + | ||
373 | +if [ "$HAVE_DEFAULTS" = "1" ]; then | ||
374 | + if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*find_multipaths[[:space:]]*\(yes\|1\)" ; then | ||
375 | + HAVE_FIND=1 | ||
376 | + elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*find_multipaths[[:space:]]*\(no\|0\)" ; then | ||
377 | + HAVE_FIND=0 | ||
378 | + fi | ||
379 | + if sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*user_friendly_names[[:space:]]*\(yes\|1\)" ; then | ||
380 | + HAVE_FRIENDLY=1 | ||
381 | + elif sed -n '/^defaults[[:space:]]*{/,/^}/ p' $TMPFILE | grep -q "^[[:space:]]*user_friendly_names[[:space:]]*\(no\|0\)" ; then | ||
382 | + HAVE_FRIENDLY=0 | ||
383 | + fi | ||
384 | +fi | ||
385 | + | ||
386 | +if [ -n "$SHOW_STATUS" ]; then | ||
387 | + if [ -z "$HAVE_DISABLE" -o "$HAVE_DISABLE" = 0 ]; then | ||
388 | + echo "multipath is enabled" | ||
389 | + else | ||
390 | + echo "multipath is disabled" | ||
391 | + fi | ||
392 | + if [ -z "$HAVE_FIND" -o "$HAVE_FIND" = 0 ]; then | ||
393 | + echo "find_multipaths is disabled" | ||
394 | + else | ||
395 | + echo "find_multipaths is enabled" | ||
396 | + fi | ||
397 | + if [ -z "$HAVE_FRIENDLY" -o "$HAVE_FRIENDLY" = 0 ]; then | ||
398 | + echo "user_friendly_names is disabled" | ||
399 | + else | ||
400 | + echo "user_friendly_names is enabled" | ||
401 | + fi | ||
402 | + if [ -n "$HAVE_MODULE" ]; then | ||
403 | + if [ "$HAVE_MODULE" = 1 ]; then | ||
404 | + echo "dm_multipath module is loaded" | ||
405 | + else | ||
406 | + echo "dm_multipath module is not loaded" | ||
407 | + fi | ||
408 | + fi | ||
409 | + if [ -z "$HAVE_MULTIPATHD" ]; then | ||
410 | + if /bin/systemctl status multipathd.service > /dev/null 2>&1 ; then | ||
411 | + HAVE_MULTIPATHD=1 | ||
412 | + else | ||
413 | + HAVE_MULTIPATHD=0 | ||
414 | + fi | ||
415 | + fi | ||
416 | + if [ "$HAVE_MULTIPATHD" = 1 ]; then | ||
417 | + echo "multipathd is running" | ||
418 | + else | ||
419 | + echo "multipathd is not running" | ||
420 | + fi | ||
421 | + exit 0 | ||
422 | +fi | ||
423 | + | ||
424 | +if [ -z "$HAVE_BLACKLIST" ]; then | ||
425 | + cat >> $TMPFILE <<- _EOF_ | ||
426 | + | ||
427 | +blacklist { | ||
428 | +} | ||
429 | +_EOF_ | ||
430 | +fi | ||
431 | + | ||
432 | +if [ -z "$HAVE_DEFAULTS" ]; then | ||
433 | + cat >> $TMPFILE <<- _EOF_ | ||
434 | + | ||
435 | +defaults { | ||
436 | +} | ||
437 | +_EOF_ | ||
438 | +fi | ||
439 | + | ||
440 | +if [ "$ENABLE" = 2 ]; then | ||
441 | + if [ "$HAVE_DISABLE" = 1 ]; then | ||
442 | + sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*devnode \"\.\?\*\"/# devnode ".*"/' $TMPFILE | ||
443 | + fi | ||
444 | + if [ -z "$HAVE_WWID_DISABLE" ]; then | ||
445 | + sed -i '/^blacklist[[:space:]]*{/ a\ | ||
446 | + wwid ".*" | ||
447 | +' $TMPFILE | ||
448 | + elif [ "$HAVE_WWID_DISABLE" = 0 ]; then | ||
449 | + sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*wwid \"\.\?\*\"/ wwid ".*"/' $TMPFILE | ||
450 | + fi | ||
451 | + if [ "$HAVE_EXCEPTIONS" = 1 ]; then | ||
452 | + sed -i '/^blacklist_exceptions[[:space:]]*{/,/^}/ {/^[[:space:]]*wwid/ d}' $TMPFILE | ||
453 | + else | ||
454 | + cat >> $TMPFILE <<- _EOF_ | ||
455 | + | ||
456 | +blacklist_exceptions { | ||
457 | +} | ||
458 | +_EOF_ | ||
459 | + fi | ||
460 | + add_blacklist_exceptions | ||
461 | +elif [ "$ENABLE" = 1 ]; then | ||
462 | + if [ "$HAVE_DISABLE" = 1 ]; then | ||
463 | + sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*devnode \"\.\?\*\"/# devnode ".*"/' $TMPFILE | ||
464 | + fi | ||
465 | +elif [ "$ENABLE" = 0 ]; then | ||
466 | + if [ -z "$HAVE_DISABLE" ]; then | ||
467 | + sed -i '/^blacklist[[:space:]]*{/ a\ | ||
468 | + devnode ".*" | ||
469 | +' $TMPFILE | ||
470 | + elif [ "$HAVE_DISABLE" = 0 ]; then | ||
471 | + sed -i '/^blacklist[[:space:]]*{/,/^}/ s/^[[:space:]]*#[[:space:]]*devnode \"\.\?\*\"/ devnode ".*"/' $TMPFILE | ||
472 | + fi | ||
473 | +fi | ||
474 | + | ||
475 | +if [ "$FIND" = "n" ]; then | ||
476 | + if [ "$HAVE_FIND" = 1 ]; then | ||
477 | + sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*find_multipaths[[:space:]]*\(yes\|1\)/ find_multipaths no/' $TMPFILE | ||
478 | + CHANGED_CONFIG=1 | ||
479 | + fi | ||
480 | +elif [ "$FIND" = "y" ]; then | ||
481 | + if [ -z "$HAVE_FIND" ]; then | ||
482 | + sed -i '/^defaults[[:space:]]*{/ a\ | ||
483 | + find_multipaths yes | ||
484 | +' $TMPFILE | ||
485 | + CHANGED_CONFIG=1 | ||
486 | + elif [ "$HAVE_FIND" = 0 ]; then | ||
487 | + sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*find_multipaths[[:space:]]*\(no\|0\)/ find_multipaths yes/' $TMPFILE | ||
488 | + CHANGED_CONFIG=1 | ||
489 | + fi | ||
490 | +fi | ||
491 | + | ||
492 | +if [ "$FRIENDLY" = "n" ]; then | ||
493 | + if [ "$HAVE_FRIENDLY" = 1 ]; then | ||
494 | + sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*user_friendly_names[[:space:]]*\(yes\|1\)/ user_friendly_names no/' $TMPFILE | ||
495 | + CHANGED_CONFIG=1 | ||
496 | + fi | ||
497 | +elif [ "$FRIENDLY" = "y" ]; then | ||
498 | + if [ -z "$HAVE_FRIENDLY" ]; then | ||
499 | + sed -i '/^defaults[[:space:]]*{/ a\ | ||
500 | + user_friendly_names yes | ||
501 | +' $TMPFILE | ||
502 | + CHANGED_CONFIG=1 | ||
503 | + elif [ "$HAVE_FRIENDLY" = 0 ]; then | ||
504 | + sed -i '/^defaults[[:space:]]*{/,/^}/ s/^[[:space:]]*user_friendly_names[[:space:]]*\(no\|0\)/ user_friendly_names yes/' $TMPFILE | ||
505 | + CHANGED_CONFIG=1 | ||
506 | + fi | ||
507 | +fi | ||
508 | + | ||
509 | +if [ -f "$OUTPUTFILE" ]; then | ||
510 | + cp $OUTPUTFILE $OUTPUTFILE.old | ||
511 | + if [ $? != 0 ]; then | ||
512 | + echo "failed to backup old config file, $OUTPUTFILE not updated" | ||
513 | + exit 1 | ||
514 | + fi | ||
515 | +fi | ||
516 | + | ||
517 | +cp $TMPFILE $OUTPUTFILE | ||
518 | +if [ $? != 0 ]; then | ||
519 | + echo "failed to copy new config file into place, check $OUTPUTFILE is still OK" | ||
520 | + exit 1 | ||
521 | +fi | ||
522 | + | ||
523 | +rm -f $TMPFILE | ||
524 | + | ||
525 | +if [ "$ENABLE" = 1 ]; then | ||
526 | + if [ "$HAVE_MODULE" = 0 ]; then | ||
527 | + modprobe dm_multipath | ||
528 | + fi | ||
529 | + if [ "$HAVE_MULTIPATHD" = 0 ]; then | ||
530 | + systemctl start multipathd.service | ||
531 | + fi | ||
532 | +elif [ "$ENABLE" = 0 ]; then | ||
533 | + if [ "$HAVE_MULTIPATHD" = 1 ]; then | ||
534 | + systemctl stop multipathd.service | ||
535 | + fi | ||
536 | +elif [ -n "$CHANGED_CONFIG" -a "$HAVE_MULTIPATHD" = 1 ]; then | ||
537 | + systemctl reload multipathd.service | ||
538 | +fi | ||
539 | diff --git a/multipath/mpathconf.8 b/multipath/mpathconf.8 | ||
540 | new file mode 100644 | ||
541 | index 0000000..4cd3267 | ||
542 | --- /dev/null | ||
543 | +++ b/multipath/mpathconf.8 | ||
544 | @@ -0,0 +1,101 @@ | ||
545 | +.TH MPATHCONF 8 "June 2010" "" "Linux Administrator's Manual" | ||
546 | +.SH NAME | ||
547 | +mpathconf - A tool for configuring device-mapper-multipath | ||
548 | +.SH SYNOPSIS | ||
549 | +.B mpathconf | ||
550 | +.RB [\| commands \|] | ||
551 | +.RB [\| options \|] | ||
552 | +.SH DESCRIPTION | ||
553 | +.B mpathconf | ||
554 | +is a utility that creates or modifies | ||
555 | +.B /etc/multipath.conf. | ||
556 | +It can enable or disable multipathing and configure some common options. | ||
557 | +.B mpathconf | ||
558 | +can also load the | ||
559 | +.B dm_multipath | ||
560 | +module, start and stop the | ||
561 | +.B multipathd | ||
562 | +daemon, and configure the | ||
563 | +.B multipathd | ||
564 | +service to start automatically or not. If | ||
565 | +.B mpathconf | ||
566 | +is called with no commands, it will display the current configuration. | ||
567 | + | ||
568 | +The default options for mpathconf are | ||
569 | +.B --with_module | ||
570 | +The | ||
571 | +.B --with_multipathd | ||
572 | +option is not set by default. Enabling multipathing will load the | ||
573 | +.B dm_multipath | ||
574 | +module but it will not immediately start it. This is so | ||
575 | +that users can manually edit their config file if necessary, before starting | ||
576 | +.B multipathd. | ||
577 | + | ||
578 | +If | ||
579 | +.B /etc/multipath.conf | ||
580 | +already exists, mpathconf will edit it. If it does not exist, mpathconf will | ||
581 | +create a default file with | ||
582 | +.B user_friendly_names | ||
583 | +and | ||
584 | +.B find_multipaths | ||
585 | +set. To disable these, use the | ||
586 | +.B --user_friendly_names n | ||
587 | +and | ||
588 | +.B --find_multipaths n | ||
589 | +options | ||
590 | +.SH COMMANDS | ||
591 | +.TP | ||
592 | +.B --enable | ||
593 | +Removes any line that blacklists all device nodes from the | ||
594 | +.B /etc/multipath.conf | ||
595 | +blacklist section. | ||
596 | +.TP | ||
597 | +.B --disable | ||
598 | +Adds a line that blacklists all device nodes to the | ||
599 | +.B /etc/multipath.conf | ||
600 | +blacklist section. If no blacklist section exists, it will create one. | ||
601 | +.TP | ||
602 | +.B --user_friendly_name \fP { \fBy\fP | \fBn\fP } | ||
603 | +If set to \fBy\fP, this adds the line | ||
604 | +.B user_friendly_names yes | ||
605 | +to the | ||
606 | +.B /etc/multipath.conf | ||
607 | +defaults section. If set to \fBn\fP, this removes the line, if present. This | ||
608 | +command can be used along with any other command. | ||
609 | +.TP | ||
610 | +.B --find_multipaths\fP { \fBy\fP | \fBn\fP } | ||
611 | +If set to \fBy\fP, this adds the line | ||
612 | +.B find_multipaths yes | ||
613 | +to the | ||
614 | +.B /etc/multipath.conf | ||
615 | +defaults section. If set to \fBn\fP, this removes the line, if present. This | ||
616 | +command can be used aldong with any other command. | ||
617 | +.SH OPTIONS | ||
618 | +.TP | ||
619 | +.B --with_module\fP { \fBy\fP | \fBn\fP } | ||
620 | +If set to \fBy\fP, this runs | ||
621 | +.B modprobe dm_multipath | ||
622 | +to install the multipath modules. This option only works with the | ||
623 | +.B --enable | ||
624 | +command. This option is set to \fBy\fP by default. | ||
625 | +.TP | ||
626 | +.B --with_multipathd { \fBy\fP | \fBn\fP } | ||
627 | +If set to \fBy\fP, this runs | ||
628 | +.B service multipathd start | ||
629 | +to start the multipathd daemon on \fB--enable\fP, | ||
630 | +.B service multipathd stop | ||
631 | +to stop the multipathd daemon on \fB--disable\fP, and | ||
632 | +.B service multipathd reload | ||
633 | +to reconfigure multipathd on \fB--user_frindly_names\fP and | ||
634 | +\fB--find_multipaths\fP. | ||
635 | +This option is set to \fBn\fP by default. | ||
636 | +.SH FILES | ||
637 | +.BR /etc/multipath.conf | ||
638 | +.SH "SEE ALSO" | ||
639 | +.BR multipath.conf (5), | ||
640 | +.BR modprobe (8), | ||
641 | +.BR multipath (8), | ||
642 | +.BR multipathd (8), | ||
643 | +.BR service (8), | ||
644 | +.SH AUTHOR | ||
645 | +Benjamin Marzinski <bmarzins@redhat.com> | ||
646 | -- | ||
647 | 2.8.1 | ||
648 | |||