From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht 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 --- 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);