From 05cec1657f600d5a3769bf977b91f302e2570a65 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Mon, 28 Jan 2019 13:21:33 +0800 Subject: [PATCH] mkdumprd: refine regex on dropping mount options Currently we use "\b" (word boundary) as the delimiter for ro option, which is not correct. For mount options like "defaults,errors=remount-ro" the ro on the tail will also be replaced and result in an invalid mount option. So we use a more strict logic on detecting ro mount option. It should either starts with "," or "^" (begin of line) and ends with "," or "$" (end of line), and keep the delimiter untouched. This should ensure only valid mount option got detected and replaced. This passed following tests: defaults,ro,noauto,errors=remount-ro,nobootwait,nofail => defaults,rw,errors=remount-ro, defaults,errors=remount-ro => defaults,errors=remount-ro defaults,ro,relatime => defaults,rw,relatime defaults,ro => defaults,rw Signed-off-by: Kairui Song Acked-by: Dave Young --- mkdumprd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mkdumprd b/mkdumprd index de9ca48..6fc68fe 100644 --- a/mkdumprd +++ b/mkdumprd @@ -106,14 +106,14 @@ to_mount() { _options=$(echo $_options | sed 's/,clientaddr=[^,]*//') fi fi + # mount fs target as rw in 2nd kernel + _options=$(echo $_options | sed 's/\(^\|,\)ro\($\|,\)/\1rw\2/g') # with 'noauto' in fstab nfs and non-root disk mount will fail in 2nd # kernel, filter it out here. - _options=$(echo $_options | sed 's/\bnoauto\b//') - #mount fs target as rw in 2nd kernel - _options=$(echo $_options | sed 's/\bro\b/rw/') + _options=$(echo $_options | sed 's/\(^\|,\)noauto\($\|,\)/\1/g') # drop nofail or nobootwait - _options=$(echo $_options | sed 's/\bnofail\b//') - _options=$(echo $_options | sed 's/\bnobootwait\b//') + _options=$(echo $_options | sed 's/\(^\|,\)nofail\($\|,\)/\1/g') + _options=$(echo $_options | sed 's/\(^\|,\)nobootwait\($\|,\)/\1/g') _mntopts="$_target $_fstype $_options" #for non-nfs _dev converting to use udev persistent name