If a SCSI device already has an exclusive access registrants only reservation, the device's size cannot be known by the client until after registration. We should therefore delay setting the block device's length until after the registration and revalidation of the disk. Signed-off-by: Benjamin Coddington <bcodding@xxxxxxxxxx> --- fs/nfs/blocklayout/dev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c index a69ef4e9c24c..4d319098f83b 100644 --- a/fs/nfs/blocklayout/dev.c +++ b/fs/nfs/blocklayout/dev.c @@ -366,7 +366,6 @@ bl_parse_scsi(struct nfs_server *server, struct pnfs_block_dev *d, return PTR_ERR(bdev); d->bdev = bdev; - d->len = i_size_read(d->bdev->bd_inode); d->map = bl_map_simple; d->pr_key = v->scsi.pr_key; @@ -388,6 +387,13 @@ bl_parse_scsi(struct nfs_server *server, struct pnfs_block_dev *d, goto out_blkdev_put; } + error = revalidate_disk(d->bdev->bd_disk); + if (error) { + pr_err("pNFS: failed to revalidate block device %s.", + d->bdev->bd_disk->disk_name); + goto out_blkdev_put; + } + d->len = i_size_read(d->bdev->bd_inode); d->pr_registered = true; return 0; -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html