74962917c2
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
41 lines
1.2 KiB
Diff
41 lines
1.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
Date: Tue, 9 Nov 2021 12:01:12 +0100
|
|
Subject: [PATCH] Revert "block: remove the -ERESTARTSYS handling in
|
|
blkdev_get_by_dev"
|
|
|
|
This reverts commit a8ed1a0607cfa5478ff6009539f44790c4d0956d.
|
|
|
|
It breaks ZFS sometimes:
|
|
https://github.com/openzfs/zfs/issues/12301#issuecomment-873303739
|
|
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
---
|
|
block/bdev.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/fs/block_dev.c b/fs/block_dev.c
|
|
index e4a80bd4ddf1..4a14d28dd923 100644
|
|
--- a/block/bdev.c
|
|
+++ b/block/bdev.c
|
|
@@ -1436,6 +1436,10 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
|
|
if (ret)
|
|
return ERR_PTR(ret);
|
|
|
|
+ /*
|
|
+ * If we lost a race with 'disk' being deleted, try again. See md.c.
|
|
+ */
|
|
+retry:
|
|
bdev = blkdev_get_no_open(dev);
|
|
if (!bdev)
|
|
return ERR_PTR(-ENXIO);
|
|
@@ -1482,6 +1486,8 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
|
|
disk_unblock_events(disk);
|
|
put_blkdev:
|
|
blkdev_put_no_open(bdev);
|
|
+ if (ret == -ERESTARTSYS)
|
|
+ goto retry;
|
|
return ERR_PTR(ret);
|
|
}
|
|
EXPORT_SYMBOL(blkdev_get_by_dev);
|