]> git.proxmox.com Git - pve-kernel.git/blame - patches/kernel/0008-Revert-block-remove-the-ERESTARTSYS-handling-in-blkd.patch
zfs: update to 2.1.2
[pve-kernel.git] / patches / kernel / 0008-Revert-block-remove-the-ERESTARTSYS-handling-in-blkd.patch
CommitLineData
38c898a1
TL
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Thomas Lamprecht <t.lamprecht@proxmox.com>
3Date: Tue, 9 Nov 2021 12:01:12 +0100
4Subject: [PATCH] Revert "block: remove the -ERESTARTSYS handling in
5 blkdev_get_by_dev"
6
7This reverts commit a8ed1a0607cfa5478ff6009539f44790c4d0956d.
8
9It breaks ZFS sometimes:
10https://github.com/openzfs/zfs/issues/12301#issuecomment-873303739
11
12Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13---
74962917 14 block/bdev.c | 6 ++++++
38c898a1
TL
15 1 file changed, 6 insertions(+)
16
7ffd90ef
TL
17diff --git a/block/bdev.c b/block/bdev.c
18index 485a258b0ab3..f93165f05987 100644
74962917
TL
19--- a/block/bdev.c
20+++ b/block/bdev.c
7ffd90ef 21@@ -800,6 +800,10 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
38c898a1
TL
22 if (ret)
23 return ERR_PTR(ret);
24
25+ /*
26+ * If we lost a race with 'disk' being deleted, try again. See md.c.
27+ */
28+retry:
29 bdev = blkdev_get_no_open(dev);
30 if (!bdev)
31 return ERR_PTR(-ENXIO);
7ffd90ef 32@@ -852,6 +856,8 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
38c898a1
TL
33 disk_unblock_events(disk);
34 put_blkdev:
35 blkdev_put_no_open(bdev);
36+ if (ret == -ERESTARTSYS)
37+ goto retry;
38 return ERR_PTR(ret);
39 }
40 EXPORT_SYMBOL(blkdev_get_by_dev);