On Saturday 23 April 2011, John Stultz wrote:
> From: David Ding <[email protected]>
>
> CC: Chris Ball <[email protected]>
> CC: Arnd Bergmann <[email protected]>
> CC: Dima Zavin <[email protected]>
> Signed-off-by: Bentao Zou <[email protected]>
> Signed-off-by: David Ding <[email protected]>
> Signed-off-by: San Mehat <[email protected]>
> Signed-off-by: John Stultz <[email protected]>
The disable_multi logic was introduced in 6a79e391 "mmc_block: ensure
all sectors that do not have errors are read" by Adrian Hunter. Maybe
he can comment on this.
My impression is that the code makes more sense without this
add-on patch, because the flag is set for exactly one request
and makes mmc_blk_issue_rw_rq issue all blocks in that request
one by one up to the first error, while after the patch,
we would read one sector, then read the remaining request at
once, fail, and read the next sector, and so on.
If the problem is transient read errors, a better solution might
be to retry the entire request before doing it one sector at a time.
> drivers/mmc/card/block.c | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
> index 61d233a..edac9ac 100644
> --- a/drivers/mmc/card/block.c
> +++ b/drivers/mmc/card/block.c
> @@ -440,6 +440,8 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq,
> struct request *req)
> continue;
> }
> status = get_card_status(card, req);
> + } else if (disable_multi == 1) {
> + disable_multi = 0;
> }
>
> if (brq.cmd.error) {
> --
> 1.7.3.2.146.gca209
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html