I'm of course a little byassed by having spent a lot of my own time on this, but this version now looks ready to merge to me: Acked-by: Christoph Hellwig <hch@xxxxxx> But as Jens just merged my series to reopen the open flag we'll also need to fold this in: diff --git a/drivers/block/blksnap/diff_area.c b/drivers/block/blksnap/diff_area.c index 169fa003b6d66d..0848c947591508 100644 --- a/drivers/block/blksnap/diff_area.c +++ b/drivers/block/blksnap/diff_area.c @@ -128,7 +128,7 @@ void diff_area_free(struct kref *kref) xa_destroy(&diff_area->chunk_map); if (diff_area->orig_bdev) { - blkdev_put(diff_area->orig_bdev, FMODE_READ | FMODE_WRITE); + blkdev_put(diff_area->orig_bdev, NULL); diff_area->orig_bdev = NULL; } @@ -214,7 +214,8 @@ struct diff_area *diff_area_new(dev_t dev_id, struct diff_storage *diff_storage) pr_debug("Open device [%u:%u]\n", MAJOR(dev_id), MINOR(dev_id)); - bdev = blkdev_get_by_dev(dev_id, FMODE_READ | FMODE_WRITE, NULL, NULL); + bdev = blkdev_get_by_dev(dev_id, BLK_OPEN_READ | BLK_OPEN_WRITE, NULL, + NULL); if (IS_ERR(bdev)) { int err = PTR_ERR(bdev); @@ -224,7 +225,7 @@ struct diff_area *diff_area_new(dev_t dev_id, struct diff_storage *diff_storage) diff_area = kzalloc(sizeof(struct diff_area), GFP_KERNEL); if (!diff_area) { - blkdev_put(bdev, FMODE_READ | FMODE_WRITE); + blkdev_put(bdev, NULL); return ERR_PTR(-ENOMEM); } diff --git a/drivers/block/blksnap/diff_storage.c b/drivers/block/blksnap/diff_storage.c index 1787fa6931a816..f3814474b9804a 100644 --- a/drivers/block/blksnap/diff_storage.c +++ b/drivers/block/blksnap/diff_storage.c @@ -123,7 +123,7 @@ void diff_storage_free(struct kref *kref) } while ((storage_bdev = first_storage_bdev(diff_storage))) { - blkdev_put(storage_bdev->bdev, FMODE_READ | FMODE_WRITE); + blkdev_put(storage_bdev->bdev, NULL); list_del(&storage_bdev->link); kfree(storage_bdev); } @@ -138,7 +138,7 @@ static struct block_device *diff_storage_add_storage_bdev( struct storage_bdev *storage_bdev, *existing_bdev = NULL; struct block_device *bdev; - bdev = blkdev_get_by_path(bdev_path, FMODE_READ | FMODE_WRITE, + bdev = blkdev_get_by_path(bdev_path, BLK_OPEN_READ | BLK_OPEN_WRITE, NULL, NULL); if (IS_ERR(bdev)) { pr_err("Failed to open device. errno=%ld\n", PTR_ERR(bdev)); @@ -153,14 +153,14 @@ static struct block_device *diff_storage_add_storage_bdev( spin_unlock(&diff_storage->lock); if (existing_bdev->bdev == bdev) { - blkdev_put(bdev, FMODE_READ | FMODE_WRITE); + blkdev_put(bdev, NULL); return existing_bdev->bdev; } storage_bdev = kzalloc(sizeof(struct storage_bdev) + strlen(bdev_path) + 1, GFP_KERNEL); if (!storage_bdev) { - blkdev_put(bdev, FMODE_READ | FMODE_WRITE); + blkdev_put(bdev, NULL); return ERR_PTR(-ENOMEM); }