Messages in this thread | | | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: [PATCH libata/for-3.16-fixes] libata: introduce ata_host->n_tags to avoid oops on SAS controllers | Date | Wed, 23 Jul 2014 18:46:05 +0200 |
| |
On Wednesday, July 23, 2014 12:36:01 PM Tejun Heo wrote: > Hello, > > On Wed, Jul 23, 2014 at 06:31:58PM +0200, Bartlomiej Zolnierkiewicz wrote: > > Hmmm, wasn't ATA_MAX_QUEUE used before not ATA_MAX_QUEUE - 1? > > > > It seems that after your patch the loop in the ata_qc_new() will use > > only 30 tags and not 31 ones? > > It was always 31 (ATA_MAX_QUEUE - 1) with the tag 31 reserved for EH > commands. The previous patch just used limit value which is one too > high. I'm planning to change that but this is the way it has always > been.
I see, thanks for explaining this.
BTW: /* the last tag is reserved for internal command. */ if (tag == ATA_TAG_INTERNAL) continue;
in ata_qc_new()'s loop now becomes a dead code (loop will be done maximum ATA_MAX_QUEUE - 2 times and ATA_TAG_INTERNAL is defined as ATA_MAX_QUEUE - 1). Compiler can probably optimize it away so as a bonus of your patch we may get one condition check less in a hot-path. :)
Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics
| |