0a100e5103
- Update to latest mdadm which is requested by jsc#SLE-13700 from partners. Mostly the purpose is for latest Intel IMSM raid support, while some other fixes are important too. - imsm: Correct minimal device size (jsc#SLE-13700) 0073-imsm-Correct-minimal-device-size.patch - Detail: show correct bitmap info for cluster raid device (jsc#SLE-13700) 0074-Detail-show-correct-bitmap-info-for-cluster-raid-dev.patch - imsm: support the Array Creation Time field in metadata (jsc#SLE-13700) 0075-imsm-support-the-Array-Creation-Time-field-in-metada.patch - imsm: show Subarray and Volume ID in --examine output (jsc#SLE-13700) 0076-imsm-show-Subarray-and-Volume-ID-in-examine-output.patch - udev: Ignore change event for imsm (jsc#SLE-13700) 0077-udev-Ignore-change-event-for-imsm.patch - Manage, imsm: Write metadata before add (jsc#SLE-13700) 0078-Manage-imsm-Write-metadata-before-add.patch - Assemble: print error message if mdadm fails assembling with --uuid option (jsc#SLE-13700) 0079-Assemble-print-error-message-if-mdadm-fails-assembli.patch - clean up meaning of small typo (jsc#SLE-13700) 0080-clean-up-meaning-of-small-typo.patch - Assemble.c: respect force flag (jsc#SLE-13700) 0081-Assemble.c-respect-force-flag.patch - mdcheck: Log when done (jsc#SLE-13700) 0082-mdcheck-Log-when-done.patch - Makefile: add EXTRAVERSION support (jsc#SLE-13700) 0083-Makefile-add-EXTRAVERSION-support.patch - uuid.c: split uuid stuffs from util.c (jsc#SLE-13700) OBS-URL: https://build.opensuse.org/request/show/841255 OBS-URL: https://build.opensuse.org/package/show/Base:System/mdadm?expand=0&rev=189
69 lines
2.2 KiB
Diff
69 lines
2.2 KiB
Diff
From 77b72fa828132a35c8b2e08d3fb07eea80b11895 Mon Sep 17 00:00:00 2001
|
|
From: allenpeng <allenpeng@synology.com>
|
|
Date: Fri, 12 Jun 2020 17:00:39 +0800
|
|
Subject: [PATCH 86/89] mdadm/Grow: prevent md's fd from being occupied during
|
|
delayed time
|
|
Commit: 77b72fa828132a35c8b2e08d3fb07eea80b11895
|
|
Patch-mainline: mdadm-4.1+
|
|
References: jsc#SLE-13700
|
|
|
|
If we start reshaping on md which shares sub-devices with another
|
|
resyncing md, it may be forced to wait for others to complete. mdadm
|
|
occupies the md's fd during this time, which causes the md can not be
|
|
stopped and the filesystem can not be mounted on the md. We can close
|
|
md's fd earlier to solve this problem.
|
|
|
|
Reproducible Steps:
|
|
|
|
1. create two partitions on sda, sdb, sdc, sdd
|
|
2. create raid1 with sda1, sdb1
|
|
mdadm -C /dev/md1 --assume-clean -l1 -n2 /dev/sda1 /dev/sdb1
|
|
3. create raid5 with sda2, sdb2, sdc2
|
|
mdadm -C /dev/md2 --assume-clean -l5 -n3 /dev/sda2 /dev/sdb2 /dev/sdc2
|
|
4. start resync at md1
|
|
echo repair > /sys/block/md1/md/sync_action
|
|
5. reshape raid5 to raid6
|
|
mdadm -a /dev/md2 /dev/sdd2
|
|
mdadm --grow /dev/md2 -n4 -l6 --backup-file=/root/md2-backup
|
|
|
|
Now mdadm is occupying the fd of md2, causing md2 unable to be stopped
|
|
|
|
6.Try to stop md2, an error message shows
|
|
mdadm -S /dev/md2
|
|
mdadm: Cannot get exclusive access to /dev/md3:Perhaps a running process,
|
|
mounted filesystem or active volume group?
|
|
|
|
Reviewed-by: Alex Wu <alexwu@synology.com>
|
|
Reviewed-by: BingJing Chang <bingjingc@synology.com>
|
|
Reviewed-by: Danny Shih <dannyshih@synology.com>
|
|
Signed-off-by: ChangSyun Peng <allenpeng@synology.com>
|
|
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
|
Signed-off-by: Coly Li <colyli@suse.de>
|
|
---
|
|
Grow.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/Grow.c b/Grow.c
|
|
index 764374f..57db7d4 100644
|
|
--- a/Grow.c
|
|
+++ b/Grow.c
|
|
@@ -3517,6 +3517,7 @@ started:
|
|
return 0;
|
|
}
|
|
|
|
+ close(fd);
|
|
/* Now we just need to kick off the reshape and watch, while
|
|
* handling backups of the data...
|
|
* This is all done by a forked background process.
|
|
@@ -3569,7 +3570,6 @@ started:
|
|
mdstat_wait(30 - (delayed-1) * 25);
|
|
} while (delayed);
|
|
mdstat_close();
|
|
- close(fd);
|
|
if (check_env("MDADM_GROW_VERIFY"))
|
|
fd = open(devname, O_RDONLY | O_DIRECT);
|
|
else
|
|
--
|
|
2.26.2
|
|
|