pve-kernel-lowlatency-qoup/patches/kernel/0008-Revert-block-remove-the-ERESTARTSYS-handling-in-blkd.patch

41 lines
1.2 KiB
Diff
Raw Normal View History

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/block/bdev.c b/block/bdev.c
index 485a258b0ab3..f93165f05987 100644
--- a/block/bdev.c
+++ b/block/bdev.c
@@ -800,6 +800,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);
@@ -852,6 +856,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);