All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Jeff Garzik <jeff@garzik.org>,
	linux-scsi <linux-scsi@vger.kernel.org>,
	linux-ide <linux-ide@vger.kernel.org>,
	Jens Axboe <Jens.Axboe@oracle.com>,
	FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Subject: Re: [PATCH RESEND number 2] libata: eliminate the home grown dma padding in favour of that provided by the block layer
Date: Tue, 05 Feb 2008 09:43:08 +0900	[thread overview]
Message-ID: <47A7B11C.10607@gmail.com> (raw)
In-Reply-To: <1202171564.3096.147.camel@localhost.localdomain>

Hello,

James Bottomley wrote:
>> No, it doesn't.  Drain needs to extend the sg table too 
> 
> The patches do extend the sg table.

Hmm... Where?

>> and it makes controllers lax about buffer overruns for commands they shouldn't be.
> 
> So adjust the qc->nbytes to show no drain element in libata ... although
> the extra element gets mapped, the HBA will be none the wiser if there's
> zero length allocated to it.  Thus the entire system behaves exactly
> like the drain element isn't present.  The block layer is really just
> making the drain element available ... you don't have to use it.

Adjusting qc->nbytes isn't enough.  libata will have to trim at the end
of sglist.  With both draining and padding, it means libata will have to
trim one sg entry and a few more bytes.  Block layer is behaving
differently and in a very noticeable way, it's sending inconsistent
values in data_len and sg list.

>> Gee.. What's the deal with extra four bytes?  If you're worried about
>> the size of struct request, chopping off PC request part into a separate
>> struct would be far better strategy than making what's already confusing
>> more confusing.
> 
> Well, we are trying to slim down the request structure and scsi_cmnd
> structure.  However, there's no inherent advantage to counting this all
> in the block layer.  Think of it just as a transparent passthrough.
> You've told the block layer to make sure you have room for a drain
> element when it constructs the SG list, which it does.  Whether you use
> it (by adding blk_rq_drain_size() on to the actual length you hand down)
> or not is entirely up to you ... there's no need to push the decision on
> that one into the block layer, since use or not is pretty much a cost
> free thing.

Okay, I see your point.  The biggest problem is that by doing that blk
layer breaks a pretty important rule - keeping data len consistent with
sg list and the bugs it's gonna cause will be very subtle and dangerous.
 This is definitely where we can spend four extra bytes.

Thanks.

-- 
tejun

  reply	other threads:[~2008-02-05  0:43 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-31 21:56 [PATCH] libata: eliminate the home grown dma padding in favour of that provided by the block layer James Bottomley
2007-12-31 22:56 ` Jeff Garzik
2008-01-03  7:58 ` FUJITA Tomonori
2008-01-03 15:12   ` James Bottomley
2008-01-09  2:10 ` Tejun Heo
2008-01-09  4:24   ` James Bottomley
2008-01-09  5:13     ` Tejun Heo
2008-01-09 15:13       ` James Bottomley
2008-01-18 23:14 ` [PATCH RESEND] " James Bottomley
2008-02-01 19:40   ` [PATCH RESEND number 2] " James Bottomley
2008-02-01 20:02     ` Jeff Garzik
2008-02-01 21:09       ` James Bottomley
2008-02-03  3:04         ` Tejun Heo
2008-02-03  4:32           ` James Bottomley
2008-02-03  7:37             ` Tejun Heo
2008-02-03 14:38               ` James Bottomley
2008-02-03 15:14                 ` Tejun Heo
2008-02-03 16:12                   ` James Bottomley
2008-02-03 16:38                     ` Jeff Garzik
2008-02-03 17:12                       ` James Bottomley
2008-02-04  1:21                         ` Tejun Heo
2008-02-04  1:28                     ` Tejun Heo
2008-02-04  9:25                       ` Tejun Heo
2008-02-04 14:43                         ` Tejun Heo
2008-02-04 16:23                           ` James Bottomley
2008-02-05  0:06                             ` Tejun Heo
2008-02-05  0:32                               ` James Bottomley
2008-02-05  0:43                                 ` Tejun Heo [this message]
2008-02-05  0:53                                   ` James Bottomley
2008-02-05  1:07                                     ` Tejun Heo
2008-02-05  5:03                                       ` James Bottomley
2008-02-05  5:22                                         ` Tejun Heo
2008-02-04 15:43                         ` James Bottomley

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=47A7B11C.10607@gmail.com \
    --to=htejun@gmail.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=Jens.Axboe@oracle.com \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=jeff@garzik.org \
    --cc=linux-ide@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 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.