]>
Commit | Line | Data |
---|---|---|
38c898a1 TL |
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 | --- | |
74962917 | 14 | block/bdev.c | 6 ++++++ |
38c898a1 TL |
15 | 1 file changed, 6 insertions(+) |
16 | ||
7ffd90ef TL |
17 | diff --git a/block/bdev.c b/block/bdev.c |
18 | index 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); |