From: Rusty Russell <rusty@rustcorp.com.au>
To: David Miller <davem@davemloft.net>
Cc: fujita.tomonori@lab.ntt.co.jp, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org, jens.axboe@oracle.com,
dougg@torque.net
Subject: Re: [PATCH 0/5] sg_ring for scsi
Date: Fri, 21 Dec 2007 10:13:38 +1100 [thread overview]
Message-ID: <200712211013.38511.rusty@rustcorp.com.au> (raw)
In-Reply-To: <20071219.235807.173273479.davem@davemloft.net>
On Thursday 20 December 2007 18:58:07 David Miller wrote:
> From: Rusty Russell <rusty@rustcorp.com.au>
> Date: Thu, 20 Dec 2007 18:53:48 +1100
>
> > Manipulating the magic chains is horrible; it looks simple to the
> > places which simply want to iterate through it, but it's awful for
> > code which wants to create them.
>
> I'm not saying complexity is inherent in this stuff, but
> assuming that it is the complexity should live as far away
> from the minions (the iterators in this case). Therefore,
> the creators is the right spot for the hard stuff.
In this case, the main benefit of the sg chaining was that the conversion of
most scsi drivers was easy (basically sg++ -> sg = sg_next(sg)). The
conversion to sg_ring is more complex, but the end result is not
significantly more complex.
However, the cost to code which manipulates sg chains was significant: I tried
using them in virtio and it was too ugly to live (so that doesn't support sg
chaining). If this was the best we could do, that'd be fine.
But, as demonstrated, there are real benefits of having an explicit header:
1) It removes the chain-end/explicit count ambiguity (see
http://lkml.org/lkml/2007/10/25/209 & thread)
2) It allows others to manipulate sg chains, which couldn't be done before
(eg. the ATA code which wants to append a padding element).
3) I can now hand you an sg ring for you to fill: sg chains can't do that.
In short, sg_ring is generally useful primitive. sg chains are a clever hack
for scsi_lib to create, and everyone else to read.
Hope that clarifies,
Rusty.
next prev parent reply other threads:[~2007-12-20 23:13 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-20 5:45 [PATCH 0/5] sg_ring for scsi Rusty Russell
2007-12-20 5:48 ` [PATCH 1/5] sg_ring: sg_ring.h Rusty Russell
2007-12-20 5:49 ` [PATCH 2/5] dma_map_sg_ring() helper Rusty Russell
2007-12-20 5:50 ` [PATCH 3/5] blk_rq_map_sg_ring as a counterpart to blk_rq_map_sg Rusty Russell
2007-12-20 5:51 ` [PATCH 4/5] sg_ring: Convert core scsi code to sg_ring Rusty Russell
2007-12-20 5:53 ` [PATCH 5/5] sg_ring: Convert scsi_debug Rusty Russell
2007-12-20 7:06 ` [PATCH 2/5] dma_map_sg_ring() helper FUJITA Tomonori
2007-12-20 7:42 ` David Miller
2007-12-20 22:58 ` Rusty Russell
2007-12-21 0:00 ` FUJITA Tomonori
2007-12-21 0:35 ` Rusty Russell
2007-12-21 0:40 ` David Miller
2007-12-21 2:22 ` FUJITA Tomonori
2007-12-21 2:47 ` Rusty Russell
2007-12-20 7:07 ` [PATCH 0/5] sg_ring for scsi FUJITA Tomonori
2007-12-20 7:53 ` Rusty Russell
2007-12-20 7:58 ` David Miller
2007-12-20 7:58 ` Jens Axboe
2007-12-20 23:13 ` Rusty Russell [this message]
2007-12-21 0:30 ` David Miller
2007-12-21 2:28 ` FUJITA Tomonori
2007-12-21 3:26 ` Rusty Russell
2007-12-21 4:37 ` FUJITA Tomonori
2007-12-26 0:27 ` Rusty Russell
2007-12-27 2:09 ` FUJITA Tomonori
2007-12-27 11:52 ` Rusty Russell
2007-12-21 12:13 ` Herbert Xu
2007-12-20 7:58 ` Jens Axboe
2007-12-20 13:55 ` Boaz Harrosh
2007-12-20 14:00 ` [PATCH 1/3] SG: Move functions to lib/scatterlist.c and add sg chaining allocator helpers Boaz Harrosh
2007-12-20 14:21 ` Boaz Harrosh
2007-12-21 12:15 ` Herbert Xu
2007-12-20 14:03 ` [PATCH 2/3] SG: Convert SCSI to use scatterlist helpers for sg chaining Boaz Harrosh
2007-12-20 14:26 ` Boaz Harrosh
2007-12-20 14:06 ` [PATCH 3/3] SG: Update ide/ to use sg_table Boaz Harrosh
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=200712211013.38511.rusty@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=davem@davemloft.net \
--cc=dougg@torque.net \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox