pnfs/blocklayout: pass proper file mode to blkdev_get/put
authorChristoph Hellwig <hch@lst.de>
Mon, 17 Aug 2015 16:41:00 +0000 (18:41 +0200)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 17 Aug 2015 18:22:49 +0000 (13:22 -0500)
We generally want to read and write to a block device that's used by
the pNFS block layout client (and even if it's read only the server
has no way of telling us).  Add FMODE_WRITE to the mode argument
so that we don't incorrectly tell the block driver that we want a
read-only open.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/blocklayout/dev.c

index d76993a424322d122102a9fb2eff4bf88a68aad6..a861bbdfe5778e579ab88f2a5fa1393a441f3fbb 100644 (file)
@@ -22,7 +22,7 @@ bl_free_device(struct pnfs_block_dev *dev)
                kfree(dev->children);
        } else {
                if (dev->bdev)
-                       blkdev_put(dev->bdev, FMODE_READ);
+                       blkdev_put(dev->bdev, FMODE_READ | FMODE_WRITE);
        }
 }
 
@@ -200,7 +200,7 @@ bl_parse_simple(struct nfs_server *server, struct pnfs_block_dev *d,
        if (!dev)
                return -EIO;
 
-       d->bdev = blkdev_get_by_dev(dev, FMODE_READ, NULL);
+       d->bdev = blkdev_get_by_dev(dev, FMODE_READ | FMODE_WRITE, NULL);
        if (IS_ERR(d->bdev)) {
                printk(KERN_WARNING "pNFS: failed to open device %d:%d (%ld)\n",
                        MAJOR(dev), MINOR(dev), PTR_ERR(d->bdev));