From: Tejun Heo <htejun@gmail.com>
To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Jens Axboe <jens.axboe@oracle.com>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Boaz Harrosh <bharrosh@panasas.com>,
Linux Kernel <linux-kernel@vger.kernel.org>,
linux-scsi <linux-scsi@vger.kernel.org>,
IDE/ATA development list <linux-ide@vger.kernel.org>,
Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
Borislav Petkov <petkovbb@googlemail.com>,
Pete Zaitcev <zaitcev@redhat.com>,
Eric Moore <Eric.Moore@lsi.com>,
"Darrick J. Wong" <djwong@us.ibm.com>
Subject: Re: [PATCH block#for-2.6.31 2/3] block: set rq->resid_len to blk_rq_bytes() on issue
Date: Sat, 16 May 2009 07:18:27 +0900 [thread overview]
Message-ID: <4A0DEA33.5050905@gmail.com> (raw)
In-Reply-To: <4A0D8C73.50208@ru.mvista.com>
Hello,
Sergei Shtylyov wrote:
>> Index: block/drivers/message/fusion/mptsas.c
>> ===================================================================
>> --- block.orig/drivers/message/fusion/mptsas.c
>> +++ block/drivers/message/fusion/mptsas.c
>> @@ -1357,7 +1357,8 @@ static int mptsas_smp_handler(struct Scs
>> smprep = (SmpPassthroughReply_t *)ioc->sas_mgmt.reply;
>> memcpy(req->sense, smprep, sizeof(*smprep));
>> req->sense_len = sizeof(*smprep);
>> - rsp->resid_len = blk_rq_bytes(rsp) - smprep->ResponseDataLength;
>> + req->resid_len = 0;
>> + rsp->resid_len -= smprep->ResponseDataLength;
>
> Is negative resid_len intended here? If so, shouldn't it be simply:
>
> rsp->resid_len = -smprep->ResponseDataLength;
>From patch description.
This patchset restores the original behavior by setting rq->resid_len
to blk_rq_bytes(rq) on issue and restoring explicit clearing in
affected drivers.
So, rsp->resid_len equals the initial request length before the
subtraction and after subtraction it becomes the residue count. The
original code was
req->data_len = 0;
rsp->data_len -= smprep->ResponseDataLength;
>> Index: block/drivers/scsi/libsas/sas_expander.c
>> ===================================================================
>> --- block.orig/drivers/scsi/libsas/sas_expander.c
>> +++ block/drivers/scsi/libsas/sas_expander.c
>> @@ -1937,7 +1937,11 @@ int sas_smp_handler(struct Scsi_Host *sh
>> if (ret > 0) {
>> /* positive number is the untransferred residual */
>> rsp->resid_len = ret;
>> + req->resid_len = 0;
>> ret = 0;
>> + } else if (ret == 0) {
>> + rsp->resid_len = 0;
>> + req->resid_len = 0;
Heh... there's a reason I mentioned the original commit. The original
code was
if (ret > 0) {
/* positive number is the untransferred residual */
rsp->data_len = ret;
req->data_len = 0;
ret = 0;
} else if (ret == 0) {
rsp->data_len = 0;
req->data_len = 0;
}
>> Index: block/drivers/scsi/libsas/sas_host_smp.c
>> ===================================================================
>> --- block.orig/drivers/scsi/libsas/sas_host_smp.c
>> +++ block/drivers/scsi/libsas/sas_host_smp.c
>> @@ -176,9 +176,6 @@ int sas_smp_host_handler(struct Scsi_Hos
>> resp_data[1] = req_data[1];
>> resp_data[2] = SMP_RESP_FUNC_UNK;
>>
>> - req->resid_len = blk_rq_bytes(req);
>> - rsp->resid_len = blk_rq_bytes(rsp);
>> -
Cuz it's already set to blk_rq_bytes().
>> switch (req_data[1]) {
>> case SMP_REPORT_GENERAL:
>> req->resid_len -= 8;
>> Index: block/drivers/scsi/mpt2sas/mpt2sas_transport.c
>> ===================================================================
>> --- block.orig/drivers/scsi/mpt2sas/mpt2sas_transport.c
>> +++ block/drivers/scsi/mpt2sas/mpt2sas_transport.c
>> @@ -1170,8 +1170,8 @@ transport_smp_handler(struct Scsi_Host *
>>
>> memcpy(req->sense, mpi_reply, sizeof(*mpi_reply));
>> req->sense_len = sizeof(*mpi_reply);
>> - rsp->resid_len = blk_rq_bytes(rsp) -
>> - mpi_reply->ResponseDataLength;
>> + req->resid_len = 0;
>> + rsp->resid_len -= mpi_reply->ResponseDataLength;
>
> Again, is negative resid_len intended?
Ditto.
Thanks.
--
tejun
next prev parent reply other threads:[~2009-05-15 22:18 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-15 15:14 [PATCH block#for-2.6.31 1/3] ub: use __blk_end_request_all() Tejun Heo
2009-05-15 15:14 ` Tejun Heo
2009-05-15 15:18 ` [PATCH block#for-2.6.31 2/3] block: set rq->resid_len to blk_rq_bytes() on issue Tejun Heo
2009-05-15 15:18 ` Tejun Heo
2009-05-15 15:19 ` [PATCH block#for-2.6.31 3/3] bio: always copy back data for copied kernel requests Tejun Heo
2009-05-15 15:19 ` Tejun Heo
2009-05-15 15:19 ` Tejun Heo
2009-05-15 15:38 ` [PATCH block#for-2.6.31 2/3] block: set rq->resid_len to blk_rq_bytes() on issue Sergei Shtylyov
2009-05-15 22:18 ` Tejun Heo [this message]
2009-05-16 12:29 ` Sergei Shtylyov
2009-05-16 13:48 ` Tejun Heo
2009-05-15 17:29 ` Pete Zaitcev
2009-05-15 22:14 ` Tejun Heo
2009-05-15 23:16 ` Pete Zaitcev
2009-05-16 0:14 ` Tejun Heo
2009-05-16 0:18 ` [PATCH UPDATED " Tejun Heo
2009-05-16 0:18 ` Tejun Heo
2009-05-16 0:18 ` Tejun Heo
2009-05-17 8:48 ` Boaz Harrosh
2009-05-17 11:32 ` Tejun Heo
2009-05-17 11:41 ` Tejun Heo
2009-05-17 12:05 ` [PATCH UPDATED2 " Tejun Heo
2009-05-17 12:05 ` Tejun Heo
2009-05-17 12:05 ` Tejun Heo
2009-05-18 12:49 ` Jens Axboe
2009-05-19 9:14 ` Tejun Heo
2009-05-19 9:17 ` Jens Axboe
2009-05-16 7:13 ` [PATCH " Borislav Petkov
2009-05-16 13:52 ` Tejun Heo
2009-05-16 13:52 ` Tejun Heo
2009-05-16 13:52 ` Tejun Heo
2009-05-15 15:18 ` Tejun Heo
2009-05-15 17:31 ` [PATCH block#for-2.6.31 1/3] ub: use __blk_end_request_all() Pete Zaitcev
2009-05-15 22:19 ` 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=4A0DEA33.5050905@gmail.com \
--to=htejun@gmail.com \
--cc=Eric.Moore@lsi.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bharrosh@panasas.com \
--cc=bzolnier@gmail.com \
--cc=djwong@us.ibm.com \
--cc=jens.axboe@oracle.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=petkovbb@googlemail.com \
--cc=sshtylyov@ru.mvista.com \
--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 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.