From: Tejun Heo <tj@kernel.org>
To: Boaz Harrosh <bharrosh@panasas.com>
Cc: axboe@kernel.dk, linux-kernel@vger.kernel.org, jeff@garzik.org,
linux-ide@vger.kernel.org, James.Bottomley@HansenPartnership.com,
linux-scsi@vger.kernel.org, bzolnier@gmail.com,
petkovbb@googlemail.com, sshtylyov@ru.mvista.com,
mike.miller@hp.com, chirag.kantharia@hp.com, Eric.Moore@lsi.com,
stern@rowland.harvard.edu, fujita.tomonori@lab.ntt.co.jp,
zaitcev@redhat.com, Geert.Uytterhoeven@sonycom.com,
sfr@canb.auug.org.au, grant.likely@secretlab.ca,
paul.clements@steeleye.com, jesper.juhl@gmail.com,
tim@cyberelk.net, jeremy@xensource.com, adrian@mcmen.demon.co.uk,
oakad@yahoo.com, dwmw2@infradead.org, schwidefsky@de.ibm.com,
ballabio_dario@emc.com, davem@davemloft.net,
rusty@rustcorp.com.au, Markus.Lidel@shadowconnect.com
Subject: Re: [PATCH 07/10] block: drop request->hard_* and *nr_sectors
Date: Mon, 04 May 2009 14:06:29 +0900 [thread overview]
Message-ID: <49FE77D5.9040909@kernel.org> (raw)
In-Reply-To: <49F9ABAE.60405@panasas.com>
Hello, Boaz.
Boaz Harrosh wrote:
>> @@ -1926,8 +1892,25 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)
>> bio_iovec(bio)->bv_len -= nr_bytes;
>> }
>>
>> - blk_recalc_rq_sectors(req, total_bytes >> 9);
>> + req->data_len -= total_bytes;
>> + req->buffer = bio_data(req->bio);
>> +
>> + /* update sector only for requests with clear definition of sector */
>> + if (blk_fs_request(req) || blk_discard_rq(req))
>> + req->sector += total_bytes >> 9;
>> +
>> + /*
>> + * If total number of sectors is less than the first segment
>> + * size, something has gone terribly wrong.
>> + */
>> + if (blk_rq_bytes(req) < blk_rq_cur_bytes(req)) {
>> + printk(KERN_ERR "blk: request botched\n");
>> + req->data_len = blk_rq_cur_bytes(req);
>> + }
>
> What happens in the last bio/segment?
Can you please elaborate a bit? Nothing really changes for the last
bio/segment.
> Is it not allowed with block_pc commands that blk_rq_bytes(req) (was
> data_len) be smaller then sum_bytes(bio-chain)?
Well, before, it wasn't well defined. For PC requests w/o bio, any
completion was full completion which isn't exactly data_len being
allowed to be shorter than actual data length but more like data_len
being completely ignored. If a PC request has bio, the request should
be completed with full bio data length. After recent changes, all PC
requests use bio and thus should fully complete the PC requests and
this patch doesn't change anything about that.
> Also I never understood the drain is it not appended to the last
> bio? I thought it is costumery in the Kernel to allow mapping longer
> then actual length?
drain is implemented in slightly hacky way. All that's guaranteed is
extra room in the mapped sgl. bio never sees it.
> Maybe you would want blk_rq_cur_bytes(req) to return the minimum of
> the two, and let bio's be longer then bytes requested. (ie. reverse
> above logic)
No, blk_rq_bytes() == sum of bio_rq_cur_bytes() of all bios in the
request and must NEVER be shorter than bio_rq_cur_bytes() by
definition.
Thanks.
--
tejun
next prev parent reply other threads:[~2009-05-04 5:06 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-29 9:13 [GIT PATCH] block,scsi,ide: unify sector and data_len Tejun Heo
2009-04-29 9:13 ` [PATCH 01/10] nbd: don't clear rq->sector and nr_sectors unnecessarily Tejun Heo
2009-04-29 9:13 ` [PATCH 02/10] ide-tape: don't initialize rq->sector for rw requests Tejun Heo
2009-04-30 6:14 ` Borislav Petkov
2009-04-29 9:13 ` [PATCH 03/10] block: add rq->resid_len Tejun Heo
2009-04-29 14:41 ` James Bottomley
2009-04-30 1:59 ` Tejun Heo
2009-04-30 6:45 ` Borislav Petkov
2009-04-30 7:19 ` Tejun Heo
[not found] ` <49F95101.3010004@kernel.org>
2009-04-30 7:37 ` Borislav Petkov
2009-04-30 9:25 ` Tejun Heo
2009-04-29 9:13 ` [PATCH 04/10] block: implement blk_rq_pos/[cur_]sectors() and convert obvious ones Tejun Heo
2009-04-29 9:25 ` Geert Uytterhoeven
2009-04-29 10:16 ` Tejun Heo
2009-04-29 14:18 ` Stephen Rothwell
2009-04-29 14:49 ` Grant Likely
2009-04-29 9:13 ` [PATCH 05/10] block: convert to pos and nr_sectors accessors Tejun Heo
2009-04-29 9:40 ` Geert Uytterhoeven
2009-04-29 10:19 ` Tejun Heo
2009-04-29 14:48 ` Grant Likely
[not found] ` <1241037446.4516.2.camel@localhost.localdomain>
2009-04-30 17:30 ` Adrian McMenamin
2009-04-29 9:13 ` [PATCH 06/10] ide: convert to rq " Tejun Heo
2009-04-29 9:13 ` [PATCH 07/10] block: drop request->hard_* and *nr_sectors Tejun Heo
2009-04-30 13:46 ` Boaz Harrosh
2009-05-04 5:06 ` Tejun Heo [this message]
2009-04-29 9:13 ` [PATCH 08/10] block: cleanup rq->data_len usages Tejun Heo
2009-04-30 13:47 ` Boaz Harrosh
2009-04-30 15:35 ` James Bottomley
2009-05-01 18:27 ` Jens Axboe
2009-05-03 1:32 ` Tejun Heo
2009-05-03 13:51 ` Boaz Harrosh
2009-05-04 4:19 ` Tejun Heo
2009-05-03 1:36 ` Tejun Heo
2009-04-29 9:13 ` [PATCH 09/10] ide: " Tejun Heo
2009-04-29 9:13 ` [PATCH 10/10] block: hide request sector and data_len Tejun Heo
2009-04-30 16:07 ` [GIT PATCH] block,scsi,ide: unify " Bartlomiej Zolnierkiewicz
2009-05-01 18:29 ` Jens Axboe
2009-05-03 2:50 ` Tejun Heo
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=49FE77D5.9040909@kernel.org \
--to=tj@kernel.org \
--cc=Eric.Moore@lsi.com \
--cc=Geert.Uytterhoeven@sonycom.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=Markus.Lidel@shadowconnect.com \
--cc=adrian@mcmen.demon.co.uk \
--cc=axboe@kernel.dk \
--cc=ballabio_dario@emc.com \
--cc=bharrosh@panasas.com \
--cc=bzolnier@gmail.com \
--cc=chirag.kantharia@hp.com \
--cc=davem@davemloft.net \
--cc=dwmw2@infradead.org \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=grant.likely@secretlab.ca \
--cc=jeff@garzik.org \
--cc=jeremy@xensource.com \
--cc=jesper.juhl@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mike.miller@hp.com \
--cc=oakad@yahoo.com \
--cc=paul.clements@steeleye.com \
--cc=petkovbb@googlemail.com \
--cc=rusty@rustcorp.com.au \
--cc=schwidefsky@de.ibm.com \
--cc=sfr@canb.auug.org.au \
--cc=sshtylyov@ru.mvista.com \
--cc=stern@rowland.harvard.edu \
--cc=tim@cyberelk.net \
--cc=zaitcev@redhat.com \
/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;
as well as URLs for NNTP newsgroup(s).