On 06/19/2015 03:05 PM, Christoph Hellwig wrote: >> --- a/drivers/target/target_core_alua.c >> +++ b/drivers/target/target_core_alua.c >> @@ -1880,12 +1880,19 @@ static void core_alua_put_tg_pt_gp_from_name( >> static void __target_attach_tg_pt_gp(struct se_lun *lun, >> struct t10_alua_tg_pt_gp *tg_pt_gp) >> { >> + struct se_dev_entry *se_deve; >> + >> assert_spin_locked(&lun->lun_tg_pt_gp_lock); >> >> spin_lock(&tg_pt_gp->tg_pt_gp_lock); >> lun->lun_tg_pt_gp = tg_pt_gp; >> list_add_tail(&lun->lun_tg_pt_gp_link, &tg_pt_gp->tg_pt_gp_lun_list); >> tg_pt_gp->tg_pt_gp_members++; >> + spin_lock_bh(&lun->lun_deve_lock); >> + list_for_each_entry(se_deve, &lun->lun_deve_list, lun_link) >> + core_scsi3_ua_allocate(se_deve, 0x3f, >> + ASCQ_3FH_INQUIRY_DATA_HAS_CHANGED); >> + spin_unlock_bh(&lun->lun_deve_lock); >> spin_unlock(&tg_pt_gp->tg_pt_gp_lock); > > Taking a _bh lock inside a regular spinlock is completely broken. > > Fortunately I don't think lun_deve_lock needs to disable bottom halves, > but this needs to be fixed first. > This harks back to my previous mail: Under which circumstances will there be more than one se_dev_entry structures in lun_deve_list? Isn't there a 1:1 relationship? Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in