Re: [PATCH] scsi: Convert scsi_host->cmd_serial_number to odd numbered atomic_t counter

James Bottomley
2010-11-17T16:10:16Z

On Thu, 2010-11-11 at 14:36 -0800, Mike Anderson wrote:
> James Bottomley <James.Bottomley@suse.de> wrote:
> > On Thu, 2010-11-11 at 13:37 -0800, Nicholas A. Bellinger wrote:
> > >
> > > ..snip..
> > >
> > > Sounds good to me, but you will recall the last attempt to make
> > > scsi_cmd_get_serial() optional for the special case LLDs, that we
> > > started running quickly in the legacy usage of cmd->serial_number in
> > > scsi_softirq_done() and the side effects in scsi_try_to_abort_cmd(), who
> > > use is complex enough that we have not found a proper resolution
> > > sufficent to andmike discussed here:
> >
> > Yes, that's what I meant by "eliminate the overloading of the serial
> > number zero value" above. This needs fixing before the serial number
> > can be dumped for fast hba drivers.
> >
>
> In the last email referenced below I believed that since
> scsi_softirq_done is calling scsi_eh_scmd_add without the
> SCSI_EH_CANCEL_CMD flag set this will stop scsi_try_to_abort_cmd from
> being called. Since scsi_softirq_done is the one setting serial_number
> to 0 I do not believe we can hit the serial number == 0 check in
> scsi_try_to_abort_cmd anymore.
>
> > > http://marc.info/?l=linux-scsi&m=128820726325009&w=2

I buy this. The REQ_ATOM_COMPLETE flag in the block layer now mediates
timer vs completion atomically ... so either one or the other is allowed
to occur.

James