Re: sata_sil24 broken since 2.6.23-rc4-mm1

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Tejun Heo <htejun@...>
Cc: Torsten Kaiser <just.for.lkml@...>, Jeff Garzik <jeff@...>, <linux-kernel@...>, <akpm@...>
Date: Thursday, October 11, 2007 - 4:26 am

On Thu, Oct 11 2007, Tejun Heo 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?

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.

Torsten, your analysis does look correct. Does it work with this simple
patch?

diff --git a/include/linux/libata.h b/include/linux/libata.h
index 2784163..0152bf4 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -947,7 +947,7 @@ ata_sg_is_last(struct scatterlist *sg, struct ata_queued_cmd *qc)
 		return 1;
 	if (qc->pad_len)
 		return 0;
-	if (qc->n_iter == qc->n_elem)
+	if ((qc->n_iter + 1) == qc->n_elem)
 		return 1;
 	return 0;
 }

-- 
Jens Axboe

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Wed Sep 26, 4:26 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Thu Sep 27, 12:54 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Thu Sep 27, 12:57 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Thu Sep 27, 2:14 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Jeff Garzik, (Thu Sep 27, 2:24 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Thu Sep 27, 1:34 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Thu Sep 27, 4:22 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Fri Sep 28, 1:36 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Sun Sep 30, 2:00 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Sun Sep 30, 10:34 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Sun Sep 30, 12:19 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Sun Sep 30, 1:39 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Sun Sep 30, 2:39 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Mon Oct 1, 2:00 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Wed Oct 3, 11:21 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Wed Oct 3, 11:55 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Matt Mackall, (Wed Oct 3, 12:38 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Thu Oct 4, 1:32 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Matt Mackall, (Thu Oct 4, 1:05 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Fri Oct 5, 2:06 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Sun Oct 7, 4:44 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Sun Oct 7, 10:39 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Wed Oct 10, 11:25 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Jens Axboe, (Thu Oct 11, 4:26 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Thu Oct 11, 4:36 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Jens Axboe, (Thu Oct 11, 6:28 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Thu Oct 11, 1:54 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Tejun Heo, (Thu Oct 11, 2:26 am)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Thu Oct 11, 1:51 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Wed Oct 3, 1:36 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Matt Mackall, (Wed Oct 3, 1:51 pm)
Re: sata_sil24 broken since 2.6.23-rc4-mm1, Torsten Kaiser, (Wed Oct 3, 2:06 pm)