1*4882a593SmuzhiyunFrom 969fbb35e40100f599d4a9781911251f21792698 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Changqing Li <changqing.li@windriver.com>
3*4882a593SmuzhiyunDate: Thu, 27 Jan 2022 17:53:01 +0800
4*4882a593SmuzhiyunSubject: [PATCH] Fix parsing of "-r" in monitor/manager mode
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunThis revert commit 546047688e1 [mdadm: fix coredump of mdadm --monitor
7*4882a593Smuzhiyun-r], and fix the coredump issue of 'mdadm --monitor -r'.
8*4882a593Smuzhiyun
9*4882a593Smuzhiyuncommit 546047688e1 make -r not work in manager mode, and testcase
10*4882a593Smuzhiyun00multipath failed.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunUpstream-Status: Submitted [send to maintainer jsorensen@fb.com]
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunSigned-off-by: Changqing Li <changqing.li@windriver.com>
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun---
17*4882a593Smuzhiyun ReadMe.c | 8 +++++---
18*4882a593Smuzhiyun mdadm.c  | 2 ++
19*4882a593Smuzhiyun mdadm.h  | 1 +
20*4882a593Smuzhiyun 3 files changed, 8 insertions(+), 3 deletions(-)
21*4882a593Smuzhiyun
22*4882a593Smuzhiyundiff --git a/ReadMe.c b/ReadMe.c
23*4882a593Smuzhiyunindex 8139976..070eea5 100644
24*4882a593Smuzhiyun--- a/ReadMe.c
25*4882a593Smuzhiyun+++ b/ReadMe.c
26*4882a593Smuzhiyun@@ -81,11 +81,13 @@ char Version[] = "mdadm - v" VERSION " - " VERS_DATE EXTRAVERSION "\n";
27*4882a593Smuzhiyun  *     found, it is started.
28*4882a593Smuzhiyun  */
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun-char short_options[]="-ABCDEFGIQhVXYWZ:vqbc:i:l:p:m:r:n:x:u:c:d:z:U:N:safRSow1tye:k";
31*4882a593Smuzhiyun+char short_options[]="-ABCDEFGIQhVXYWZ:vqbc:i:l:p:m:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
32*4882a593Smuzhiyun char short_bitmap_options[]=
33*4882a593Smuzhiyun-		"-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:r:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
34*4882a593Smuzhiyun+			"-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:n:x:u:c:d:z:U:N:sarfRSow1tye:k:";
35*4882a593Smuzhiyun char short_bitmap_auto_options[]=
36*4882a593Smuzhiyun-		"-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:r:n:x:u:c:d:z:U:N:sa:rfRSow1tye:k:";
37*4882a593Smuzhiyun+			"-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:n:x:u:c:d:z:U:N:sa:rfRSow1tye:k:";
38*4882a593Smuzhiyun+char short_increment_options[]=
39*4882a593Smuzhiyun+			"-ABCDEFGIQhVXYWZ:vqbc:i:l:r:p:m:n:x:u:c:d:z:U:N:safRSow1tye:k:";
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun struct option long_options[] = {
42*4882a593Smuzhiyun     {"manage",    0, 0, ManageOpt},
43*4882a593Smuzhiyundiff --git a/mdadm.c b/mdadm.c
44*4882a593Smuzhiyunindex 26299b2..2a3b2ee 100644
45*4882a593Smuzhiyun--- a/mdadm.c
46*4882a593Smuzhiyun+++ b/mdadm.c
47*4882a593Smuzhiyun@@ -227,6 +227,7 @@ int main(int argc, char *argv[])
48*4882a593Smuzhiyun 			shortopt = short_bitmap_auto_options;
49*4882a593Smuzhiyun 			break;
50*4882a593Smuzhiyun 		case 'F': newmode = MONITOR;
51*4882a593Smuzhiyun+			shortopt = short_increment_options;
52*4882a593Smuzhiyun 			break;
53*4882a593Smuzhiyun 		case 'G': newmode = GROW;
54*4882a593Smuzhiyun 			shortopt = short_bitmap_options;
55*4882a593Smuzhiyun@@ -268,6 +269,7 @@ int main(int argc, char *argv[])
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun 		case NoSharing:
58*4882a593Smuzhiyun 			newmode = MONITOR;
59*4882a593Smuzhiyun+			shortopt = short_increment_options;
60*4882a593Smuzhiyun 			break;
61*4882a593Smuzhiyun 		}
62*4882a593Smuzhiyun 		if (mode && newmode == mode) {
63*4882a593Smuzhiyundiff --git a/mdadm.h b/mdadm.h
64*4882a593Smuzhiyunindex ecfc137..42148dd 100644
65*4882a593Smuzhiyun--- a/mdadm.h
66*4882a593Smuzhiyun+++ b/mdadm.h
67*4882a593Smuzhiyun@@ -421,6 +421,7 @@ enum mode {
68*4882a593Smuzhiyun extern char short_options[];
69*4882a593Smuzhiyun extern char short_bitmap_options[];
70*4882a593Smuzhiyun extern char short_bitmap_auto_options[];
71*4882a593Smuzhiyun+extern char short_increment_options[];
72*4882a593Smuzhiyun extern struct option long_options[];
73*4882a593Smuzhiyun extern char Version[], Usage[], Help[], OptionHelp[],
74*4882a593Smuzhiyun 	*mode_help[],
75