static void nbd_size_update(struct nbd_device *nbd)
 {
        struct nbd_config *config = nbd->config;
+       struct block_device *bdev = bdget_disk(nbd->disk, 0);
+
        blk_queue_logical_block_size(nbd->disk->queue, config->blksize);
        blk_queue_physical_block_size(nbd->disk->queue, config->blksize);
        set_capacity(nbd->disk, config->bytesize >> 9);
+       if (bdev) {
+               if (bdev->bd_disk)
+                       bd_set_size(bdev, config->bytesize);
+               else
+                       bdev->bd_invalidated = 1;
+               bdput(bdev);
+       }
        kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE);
 }
 
        if (ret)
                return ret;
 
-       bd_set_size(bdev, config->bytesize);
        if (max_part)
                bdev->bd_invalidated = 1;
        mutex_unlock(&nbd->config_lock);