Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

libata: make WARN_ON conditions in ata_sff_hsm_move() more strict

WARN_ON()'s in ata_hsm_move() was too liberal and got triggerred when
it shouldn't (e.g. hotplug events at the right moment). As the HSM
only deals with device errors and state machine violations, make it
check only against them.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Mark Lord <liml@rtr.ca>
Cc: Albert Lee <albertcc@tw.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

authored by

Tejun Heo and committed by
Jeff Garzik
411cb386 458622fc

+2 -2
+2 -2
drivers/ata/libata-sff.c
··· 1208 1208 DPRINTK("ata%u: dev %u command complete, drv_stat 0x%x\n", 1209 1209 ap->print_id, qc->dev->devno, status); 1210 1210 1211 - WARN_ON(qc->err_mask); 1211 + WARN_ON(qc->err_mask & (AC_ERR_DEV | AC_ERR_HSM)); 1212 1212 1213 1213 ap->hsm_task_state = HSM_ST_IDLE; 1214 1214 ··· 1222 1222 /* make sure qc->err_mask is available to 1223 1223 * know what's wrong and recover 1224 1224 */ 1225 - WARN_ON(qc->err_mask == 0); 1225 + WARN_ON(!(qc->err_mask & (AC_ERR_DEV | AC_ERR_HSM))); 1226 1226 1227 1227 ap->hsm_task_state = HSM_ST_IDLE; 1228 1228