Commit 9ddb27b44ffeb3080b71cc493b2edff2224d9356
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) { |