2012-05-02 04:59:38

by Mike Christie

[permalink] [raw]
Subject: Re: [PATCH 05/11] block: drop custom queue draining used by scsi_transport_{iscsi|fc}

On 04/26/2012 04:59 PM, Tejun Heo wrote:
> iscsi_remove_host() uses bsg_remove_queue() which implements custom
> queue draining. fc_bsg_remove() open-codes mostly identical logic.
>
> The draining logic isn't correct in that blk_stop_queue() doesn't
> prevent new requests from being queued - it just stops processing, so
> nothing prevents new requests to be queued after the logic determines
> that the queue is drained.
>
> blk_cleanup_queue() now implements proper queue draining and these
> custom draining logics aren't necessary. Drop them and use
> bsg_unregister_queue() + blk_cleanup_queue() instead.
>
> Signed-off-by: Tejun Heo <[email protected]>
> Cc: James Bottomley <[email protected]>
> Cc: Mike Christie <[email protected]>
> Cc: James Smart <[email protected]>
> ---
> block/bsg-lib.c | 53 -----------------------------------
> drivers/scsi/scsi_transport_fc.c | 38 -------------------------
> drivers/scsi/scsi_transport_iscsi.c | 2 +-

iSCSI changes worked ok for me. I replicated the problem that the old
code was supposed to fix and verified the new code worked ok. I also
tested the FC code briefly (I do not have a proper setup to really
stress it), and it worked ok.

Thanks for killing that code for us.

Reviewed-by: Mike Christie <[email protected]>