[cciss: PATCH 06/17] Rearrange logical drive sysfs code to make the"changing a disk" path work.

From: Stephen M. Cameron
Date: Thu Aug 20 2009 - 11:18:24 EST


Rearrange logical drive sysfs code to make the "changing a disk" path work.

Signed-off-by: Stephen M. Cameron <scameron@xxxxxxxxxxxxxxxxxx>
---

drivers/block/cciss.c | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 4f9ef49..557b958 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -1915,9 +1915,10 @@ static int cciss_add_gendisk(ctlr_info_t *h, __u32 lunid, int controller_node)
}
}
h->drv[drv_index].LunID = lunid;
- if (cciss_create_ld_sysfs_entry(h, drv_index))
- goto err_free_disk;
-
+ if (h->drv[drv_index].dev == NULL) {
+ if (cciss_create_ld_sysfs_entry(h, drv_index))
+ goto err_free_disk;
+ }
/* Don't need to mark this busy because nobody */
/* else knows about this disk yet to contend */
/* for access to it. */
@@ -2144,8 +2145,10 @@ static int deregister_disk(ctlr_info_t *h, int drv_index,
*/
if (h->gendisk[0] != disk) {
struct request_queue *q = disk->queue;
- if (disk->flags & GENHD_FL_UP)
+ if (disk->flags & GENHD_FL_UP) {
+ cciss_destroy_ld_sysfs_entry(h, drv_index);
del_gendisk(disk);
+ }
if (q) {
blk_cleanup_queue(q);
/* Set drv->queue to NULL so that we do not try
@@ -2189,7 +2192,6 @@ static int deregister_disk(ctlr_info_t *h, int drv_index,
* indicate that this element of the drive
* array is free.
*/
- cciss_destroy_ld_sysfs_entry(h, drv_index);

if (clear_all) {
/* check to see if it was the last disk */
@@ -4307,15 +4309,13 @@ static void __devexit cciss_remove_one(struct pci_dev *pdev)
if (disk) {
struct request_queue *q = disk->queue;

- if (disk->flags & GENHD_FL_UP)
+ if (disk->flags & GENHD_FL_UP) {
+ cciss_destroy_ld_sysfs_entry(hba[i], j);
del_gendisk(disk);
+ }
if (q)
blk_cleanup_queue(q);
}
- if (hba[i]->drv[j].dev != NULL &&
- (j == 0 || hba[i]->drv[j].raid_level != -1))
- cciss_destroy_ld_sysfs_entry(hba[i], j);
-
}

#ifdef CONFIG_CISS_SCSI_TAPE

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/