Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4b86a872561ad052bdc6f092a06807822d26beb1
Commit:     4b86a872561ad052bdc6f092a06807822d26beb1
Parent:     dff4982f5cd4e30e2a140a3bca95d8814115bf5b
Author:     Paul Clements <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 23:27:36 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Oct 17 08:42:55 2007 -0700

    NBD: set uninitialized devices to size 0
    
    This fixes errors with utilities (such as LVM's vgscan) that try to scan all
    devices.  Previously this would generate read errors when uninitialized nbd
    devices were scanned:
    
    # vgscan
       Reading all physical volumes.  This may take a while...
       /dev/nbd0: read failed after 0 of 1024 at 0: Input/output error
       /dev/nbd0: read failed after 0 of 1024 at 509804544: Input/output error
       /dev/nbd0: read failed after 0 of 2048 at 0: Input/output error
       /dev/nbd1: read failed after 0 of 1024 at 509804544: Input/output error
       /dev/nbd1: read failed after 0 of 2048 at 0: Input/output error
    
     From now on, uninitialized nbd devices will have size zero, which
    prevents these errors.
    
    Signed-off-by: Paul Clements <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/block/nbd.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index dc88bcf..89bdafd 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -578,6 +578,9 @@ static int nbd_ioctl(struct inode *inode, struct file *file,
                printk(KERN_WARNING "%s: queue cleared\n", lo->disk->disk_name);
                if (file)
                        fput(file);
+               lo->bytesize = 0;
+               inode->i_bdev->bd_inode->i_size = 0;
+               set_capacity(lo->disk, 0);
                return lo->harderror;
        case NBD_CLEAR_QUE:
                /*
@@ -655,14 +658,14 @@ static int __init nbd_init(void)
                mutex_init(&nbd_dev[i].tx_lock);
                init_waitqueue_head(&nbd_dev[i].active_wq);
                nbd_dev[i].blksize = 1024;
-               nbd_dev[i].bytesize = 0x7ffffc00ULL << 10; /* 2TB */
+               nbd_dev[i].bytesize = 0;
                disk->major = NBD_MAJOR;
                disk->first_minor = i;
                disk->fops = &nbd_fops;
                disk->private_data = &nbd_dev[i];
                disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO;
                sprintf(disk->disk_name, "nbd%d", i);
-               set_capacity(disk, 0x7ffffc00ULL << 1); /* 2 TB */
+               set_capacity(disk, 0);
                add_disk(disk);
        }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to