提交 3833a748 编写于 作者: M Mike Miller 提交者: Linus Torvalds

[PATCH] cciss: remove unused revalidate_allvol function

Remove the no longer used revalidate_allvol function.  It was replaced by
rebuild_lun_table.
Signed-off-by: NMike Miller <mike.miller@hp.com>
Acked-by: NJens Axboe <jens.axboe@oracle.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 7a06f789
......@@ -141,7 +141,6 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
unsigned int cmd, unsigned long arg);
static int cciss_getgeo(struct block_device *bdev, struct hd_geometry *geo);
static int revalidate_allvol(ctlr_info_t *host);
static int cciss_revalidate(struct gendisk *disk);
static int rebuild_lun_table(ctlr_info_t *h, struct gendisk *del_disk);
static int deregister_disk(struct gendisk *disk, drive_info_struct *drv,
......@@ -857,9 +856,7 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
}
case CCISS_REVALIDVOLS:
if (bdev != bdev->bd_contains || drv != host->drv)
return -ENXIO;
return revalidate_allvol(host);
return rebuild_lun_table(host, NULL);
case CCISS_GETLUNINFO:{
LogvolInfo_struct luninfo;
......@@ -1159,75 +1156,6 @@ static int cciss_ioctl(struct inode *inode, struct file *filep,
}
}
/*
* revalidate_allvol is for online array config utilities. After a
* utility reconfigures the drives in the array, it can use this function
* (through an ioctl) to make the driver zap any previous disk structs for
* that controller and get new ones.
*
* Right now I'm using the getgeometry() function to do this, but this
* function should probably be finer grained and allow you to revalidate one
* particular logical volume (instead of all of them on a particular
* controller).
*/
static int revalidate_allvol(ctlr_info_t *host)
{
int ctlr = host->ctlr, i;
unsigned long flags;
spin_lock_irqsave(CCISS_LOCK(ctlr), flags);
if (host->usage_count > 1) {
spin_unlock_irqrestore(CCISS_LOCK(ctlr), flags);
printk(KERN_WARNING "cciss: Device busy for volume"
" revalidation (usage=%d)\n", host->usage_count);
return -EBUSY;
}
host->usage_count++;
spin_unlock_irqrestore(CCISS_LOCK(ctlr), flags);
for (i = 0; i < NWD; i++) {
struct gendisk *disk = host->gendisk[i];
if (disk) {
request_queue_t *q = disk->queue;
if (disk->flags & GENHD_FL_UP)
del_gendisk(disk);
if (q)
blk_cleanup_queue(q);
}
}
/*
* Set the partition and block size structures for all volumes
* on this controller to zero. We will reread all of this data
*/
memset(host->drv, 0, sizeof(drive_info_struct)
* CISS_MAX_LUN);
/*
* Tell the array controller not to give us any interrupts while
* we check the new geometry. Then turn interrupts back on when
* we're done.
*/
host->access.set_intr_mask(host, CCISS_INTR_OFF);
cciss_getgeometry(ctlr);
host->access.set_intr_mask(host, CCISS_INTR_ON);
/* Loop through each real device */
for (i = 0; i < NWD; i++) {
struct gendisk *disk = host->gendisk[i];
drive_info_struct *drv = &(host->drv[i]);
/* we must register the controller even if no disks exist */
/* this is for the online array utilities */
if (!drv->heads && i)
continue;
blk_queue_hardsect_size(drv->queue, drv->block_size);
set_capacity(disk, drv->nr_blocks);
add_disk(disk);
}
host->usage_count--;
return 0;
}
static inline void complete_buffers(struct bio *bio, int status)
{
while (bio) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册