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