]> git.proxmox.com Git - pve-kernel.git/blob - 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
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Thomas Lamprecht <t.lamprecht@proxmox.com>
3 Date: Tue, 9 Nov 2021 12:01:12 +0100
4 Subject: [PATCH] Revert "block: remove the -ERESTARTSYS handling in
5 blkdev_get_by_dev"
6
7 This reverts commit a8ed1a0607cfa5478ff6009539f44790c4d0956d.
8
9 It breaks ZFS sometimes:
10 https://github.com/openzfs/zfs/issues/12301#issuecomment-873303739
11
12 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 ---
14 block/bdev.c | 6 ++++++
15 1 file changed, 6 insertions(+)
16
17 diff --git a/block/bdev.c b/block/bdev.c
18 index 485a258b0ab3..f93165f05987 100644
19 --- a/block/bdev.c
20 +++ b/block/bdev.c
21 @@ -800,6 +800,10 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
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);
32 @@ -852,6 +856,8 @@ struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder)
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);