Commit 9ddb27b44ffeb3080b71cc493b2edff2224d9356

Authored by Stephen M. Cameron
Committed by Jens Axboe
1 parent 8ce51966d3

cciss: Clear all sysfs-exposed data for deleted logical drives.

When removing a logical drive, clear all the information that is
now exposed by sysfs (e.g. vendor, model, serial number.)

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

Showing 1 changed file with 21 additions and 10 deletions Side-by-side Diff

drivers/block/cciss.c
... ... @@ -2134,6 +2134,25 @@
2134 2134 goto freeret;
2135 2135 }
2136 2136  
  2137 +static void cciss_clear_drive_info(drive_info_struct *drive_info)
  2138 +{
  2139 + /* zero out the disk size info */
  2140 + drive_info->nr_blocks = 0;
  2141 + drive_info->block_size = 0;
  2142 + drive_info->heads = 0;
  2143 + drive_info->sectors = 0;
  2144 + drive_info->cylinders = 0;
  2145 + drive_info->raid_level = -1;
  2146 + memset(drive_info->serial_no, 0, sizeof(drive_info->serial_no));
  2147 + memset(drive_info->model, 0, sizeof(drive_info->model));
  2148 + memset(drive_info->rev, 0, sizeof(drive_info->rev));
  2149 + memset(drive_info->vendor, 0, sizeof(drive_info->vendor));
  2150 + /*
  2151 + * don't clear the LUNID though, we need to remember which
  2152 + * one this one is.
  2153 + */
  2154 +}
  2155 +
2137 2156 /* This function will deregister the disk and it's queue from the
2138 2157 * kernel. It must be called with the controller lock held and the
2139 2158 * drv structures busy_configuring flag set. It's parameters are:
... ... @@ -2212,16 +2231,8 @@
2212 2231 }
2213 2232  
2214 2233 --h->num_luns;
2215   - /* zero out the disk size info */
2216   - drv->nr_blocks = 0;
2217   - drv->block_size = 0;
2218   - drv->heads = 0;
2219   - drv->sectors = 0;
2220   - drv->cylinders = 0;
2221   - drv->raid_level = -1; /* This can be used as a flag variable to
2222   - * indicate that this element of the drive
2223   - * array is free.
2224   - */
  2234 + cciss_clear_drive_info(drv);
  2235 +
2225 2236 if (clear_all) {
2226 2237 /* check to see if it was the last disk */
2227 2238 if (drv == h->drv + h->highest_lun) {