From: Jens Axboe <jens.axboe@oracle.com>
To: Tejun Heo <htejun@gmail.com>
Cc: Torsten Kaiser <just.for.lkml@googlemail.com>,
Jeff Garzik <jeff@garzik.org>,
linux-kernel@vger.kernel.org, akpm@linux-foundation.org
Subject: Re: sata_sil24 broken since 2.6.23-rc4-mm1
Date: Thu, 11 Oct 2007 12:28:40 +0200 [thread overview]
Message-ID: <20071011102840.GG5142@kernel.dk> (raw)
In-Reply-To: <470DE09D.7080508@gmail.com>
On Thu, Oct 11 2007, Tejun Heo wrote:
> Jens Axboe wrote:
> > This is the old ata_sg_is_last:
> >
> > static inline int
> > ata_sg_is_last(struct scatterlist *sg, struct ata_queued_cmd *qc)
> > {
> > if (sg == &qc->pad_sgent)
> > return 1;
> > if (qc->pad_len)
> > return 0;
> > if (((sg - qc->__sg) + 1) == qc->n_elem)
> > return 1;
> > return 0;
> > }
> >
> > and the new one:
> >
> > static inline int
> > ata_sg_is_last(struct scatterlist *sg, struct ata_queued_cmd *qc)
> > {
> > if (sg == &qc->pad_sgent)
> > return 1;
> > if (qc->pad_len)
> > return 0;
> > if (qc->n_iter == qc->n_elem)
> > return 1;
> > return 0;
> > }
> >
> > ->n_iter is how ata_qc_next_sg() walks over the sglist, I don't
> > understand your reference to why depending on that during iteration
> > would be bad?
>
> Because that makes ata_sg iterator macros have hidden side effects
> (nothing in the interface suggests it can't be nested and when somebody
> actually nests it, finding what went wrong can be pretty difficult). I
> think it would be better to have explicit ata_sg_iter passed around if
> sg itself isn't enough to walk the sg list.
I think it's implicit in the interface, since you don't pass an sgtable
in. But it's not a big deal to me, if you want it changed, go ahead :-)
> > So we could add a test for sg_last() there, but that would turn sg table
> > iteration into an O(N^2) operation for those drivers that use
> > ata_sg_is_last() with chained sg tables. I'd much rather just get rid of
> > ata_sg_is_last(), it's only used to mark end-of-table entries for
> > hardware. That logic can be performed cheaper.
>
> Yeap, it can be removed but having "is this the last one?" test is just
> nicer to low level drivers. With ata_sg_iter, I think we can do it in
> O(N) by looking up and caching the next entry.
Sure, of you could just lookup sg_last() in the beginning of the loop.
Still seems a bit silly to me just to keep the ata_sg_is_last()
interface, since it can be done for free basically by maintaining an
sglast element in the loop that you then use when the loop is done to
set your SG_END marker (or whatever the driver needs).
--
Jens Axboe
prev parent reply other threads:[~2007-10-11 10:28 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-26 20:26 sata_sil24 broken since 2.6.23-rc4-mm1 Torsten Kaiser
2007-09-27 4:54 ` Tejun Heo
2007-09-27 4:57 ` Tejun Heo
2007-09-27 6:14 ` Torsten Kaiser
2007-09-27 6:24 ` Jeff Garzik
2007-09-27 17:34 ` Torsten Kaiser
2007-09-27 20:22 ` Tejun Heo
2007-09-28 5:36 ` Torsten Kaiser
2007-09-30 6:00 ` Torsten Kaiser
2007-09-30 14:34 ` Tejun Heo
2007-09-30 16:19 ` Torsten Kaiser
2007-09-30 17:39 ` Tejun Heo
2007-09-30 18:39 ` Torsten Kaiser
2007-10-01 18:00 ` Torsten Kaiser
2007-10-03 15:21 ` Torsten Kaiser
2007-10-03 15:55 ` Torsten Kaiser
2007-10-03 16:38 ` Matt Mackall
2007-10-03 17:36 ` Torsten Kaiser
2007-10-03 17:51 ` Matt Mackall
2007-10-03 18:06 ` Torsten Kaiser
2007-10-04 5:32 ` Torsten Kaiser
2007-10-04 17:05 ` Matt Mackall
2007-10-05 6:06 ` Torsten Kaiser
2007-10-07 8:44 ` Torsten Kaiser
2007-10-07 14:39 ` Torsten Kaiser
2007-10-11 3:25 ` Tejun Heo
2007-10-11 5:54 ` Torsten Kaiser
2007-10-11 6:26 ` Tejun Heo
2007-10-11 17:51 ` Torsten Kaiser
2007-10-11 8:26 ` Jens Axboe
2007-10-11 8:36 ` Tejun Heo
2007-10-11 10:28 ` Jens Axboe [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071011102840.GG5142@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=htejun@gmail.com \
--cc=jeff@garzik.org \
--cc=just.for.lkml@googlemail.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.