Yeah, I realize the scenario. What's confusing is, it's has been a while since I've seen any cache failure message get spit out. But your logic is pretty solid. Anyway, your idea of converting fc_remove_host() to call scsi_remove_target() for all the targets prior to deleting the rports is a good one. And the terminate_rport_io call is already in fc_rport_final_delete(). This doesn't make sense to me though: > then in the fcoe termniate_rport_io function we could stop the port? If "port" means the fcoe port, and if this was the last rport, then I guess it kinda makes sense. But I would have assumed that the outer thread that is calling fc_remove_host() and scsi_remove_host() would have actually have been the one to stop/terminate the fcoe port after making these calls. -- james s > Mike Christie wrote: > I guess we have the terminate_rport_io callback already. So > we could do: > > > fc_remove_host() > for each target > scsi_remove_target(); > for each rport > fc_queue_work(shost, &rport->rport_delete_work); > > ..... > > > fc_rport_final_delete() > i->f->terminate_rport_io > > ....... > > then in the fcoe termniate_rport_io function we could stop the port? > -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html