nbd driver for 2.5+: simply remove unneeded blksize_bits field
Subsystems (2)
PATCH 1/1 nbd driver for 2.5+: simply remove unneeded blksize_bits field
This fourth patch simply removes the blksize_bits field from the nbd_device struct and driver implementation. How this field made it into this driver to begin with is a mystery (where was Al Viro when that patch was submitted??). :-) This patch modifies both drivers/block/nbd.c and include/linux/nbd.h files. It's intended to be applied incrementally on top of my third patch (for enhanced diagnostics support). I suspect this patch is small enough however that it may apply correctly without the preceding patches but I have not tried it myself.
There are other things that can be cleaned up this way but this change was so very simple I wanted to get it out of the way early on. As always, comments welcome.
drivers/block/nbd.c +4 -9
@@ -33,6 +33,8 @@* from sending/receiving disk data. <[email protected]> * 03-06-23 Cosmetic changes. <[email protected]> * 03-06-23 Enhance diagnostics support. <[email protected]> +* 03-06-24 Remove unneeded blksize_bits field from nbd_device struct. +* <[email protected]> * * possible FIXME: make set_sock / set_blksize / set_size / do_it one syscall * why not: would need verify_area and friends, would share yet another
@@ -535,7 +537,7 @@ unsigned int cmd, unsigned long arg) {struct nbd_device *lo = inode->i_bdev->bd_disk->private_data; -int error, temp; +int error;struct request sreq ;/* Anyone capable of this syscall can do *real bad* things */
@@ -600,12 +602,6 @@if ((arg & (arg-1 )) || (arg <512 ) || (arg >PAGE_SIZE ))return -EINVAL ; lo->blksize = arg; - temp = arg >>9 ; - lo->blksize_bits =9 ; -while (temp >1 ) { - lo->blksize_bits++; - temp >>=1 ; - } lo->bytesize &= ~(lo->blksize-1 );set_capacity (lo->disk, lo->bytesize >>9 );return 0 ;
@@ -614,7 +610,7 @@set_capacity (lo->disk, lo->bytesize >>9 );return 0 ;case NBD_SET_SIZE_BLOCKS : - lo->bytesize = ((u64 ) arg) << lo->blksize_bits; + lo->bytesize = ((u64 ) arg) * lo->blksize;set_capacity (lo->disk, lo->bytesize >>9 );return 0 ;case NBD_DO_IT :
@@ -717,7 +713,6 @@INIT_LIST_HEAD (&nbd_dev[i].queue_head);init_MUTEX (&nbd_dev[i].tx_lock); nbd_dev[i].blksize =1024 ; - nbd_dev[i].blksize_bits =10 ; nbd_dev[i].bytesize = ((u64 )0x7ffffc00 ) <<10 ;/* 2TB */ disk->major =NBD_MAJOR ; disk->first_minor = i;
include/linux/nbd.h +2 -1
@@ -5,6 +5,8 @@* 2001 Copyright (C) Steven Whitehouse * New nbd_end_request() for compatibility with new linux block * layer code. +* 2003/06/24 Louis D. Langholtz <[email protected]> +* Removed unneeded blksize_bits field from nbd_device struct. */ #ifndef LINUX_NBD_H
@@ -50,7 +52,6 @@struct semaphore tx_lock;struct gendisk *disk;int blksize; -int blksize_bits;u64 bytesize; };