[PATCH 1/2] NBD: set uninitialized devices to size 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Patch applies and was tested against 2.6.23-rc2-mm2.

Thanks,
Paul
Signed-Off-By: Paul Clements <[email protected]>

--- ./drivers/block/nbd.c.ERROR_RETURNS	2007-08-15 15:41:19.000000000 -0400
+++ ./drivers/block/nbd.c	2007-08-16 13:08:06.000000000 -0400
@@ -589,6 +589,9 @@ static int nbd_ioctl(struct inode *inode
 		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:
 		/*
@@ -666,14 +669,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);
 	}
 

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux