mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 09:59:32 +00:00
cciss: Do not automatically rescan on UNIT ATTENTION/LUN DATA CHANGED
cciss: Do not automatically rescan on UNIT ATTENTION/LUN DATA CHANGED There are problems with doing this. If, say, several logical drives are deleted at once, several such UNIT ATTENTIONS will be encountered, often during the rescan triggered by the first such UNIT ATTENTION. The block layer may be in the midst of trying to add logical drives which were just deleted (resulting in the subsequent UNIT ATTENTION(s).) Making the rescan code robust enough to tolerate this kind of thing is too complicated for the moment. So, for now, we just don't do it. Note: This UNIT ATTENTION/LUN DATA CHANGED situation only occurs on the MSA2012. Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
d06dfbd236
commit
da0021841c
1 changed files with 16 additions and 2 deletions
|
@ -3416,8 +3416,22 @@ static int check_for_unit_attention(ctlr_info_t *h, CommandList_struct *c)
|
|||
case REPORT_LUNS_CHANGED:
|
||||
printk(KERN_WARNING "cciss%d: report LUN data "
|
||||
"changed\n", h->ctlr);
|
||||
add_to_scan_list(h);
|
||||
wake_up_process(cciss_scan_thread);
|
||||
/*
|
||||
* Here, we could call add_to_scan_list and wake up the scan thread,
|
||||
* except that it's quite likely that we will get more than one
|
||||
* REPORT_LUNS_CHANGED condition in quick succession, which means
|
||||
* that those which occur after the first one will likely happen
|
||||
* *during* the scan_thread's rescan. And the rescan code is not
|
||||
* robust enough to restart in the middle, undoing what it has already
|
||||
* done, and it's not clear that it's even possible to do this, since
|
||||
* part of what it does is notify the block layer, which starts
|
||||
* doing it's own i/o to read partition tables and so on, and the
|
||||
* driver doesn't have visibility to know what might need undoing.
|
||||
* In any event, if possible, it is horribly complicated to get right
|
||||
* so we just don't do it for now.
|
||||
*
|
||||
* Note: this REPORT_LUNS_CHANGED condition only occurs on the MSA2012.
|
||||
*/
|
||||
return 1;
|
||||
break;
|
||||
case POWER_OR_RESET:
|
||||
|
|
Loading…
Reference in a new issue