File mdadm-wait-for-remove.patch of Package mdadm.7533
---
Manage.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
--- a/Manage.c
+++ b/Manage.c
@@ -1083,7 +1083,15 @@ int Manage_remove(struct supertype *tst,
/* device has been removed and we don't know
* the major:minor number
*/
- int n = write(sysfd, "remove", 6);
+ int n;
+ int slpcnt = 30;
+ do {
+ n = write(sysfd, "remove", 6);
+ if (n != -1 || errno != EBUSY)
+ break;
+ sleep(1);
+ } while (--slpcnt > 0);
+
if (n != 6)
err = -1;
else