bug-ddrescue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-ddrescue] How to increase retries within a pass?


From: Jarkko Lavinen
Subject: Re: [Bug-ddrescue] How to increase retries within a pass?
Date: Wed, 26 Jun 2013 14:56:49 +0300
User-agent: Mutt/1.5.20 (2009-06-14)

On Thu, Jun 13, 2013 at 02:41:33PM +0300, Jarkko Lavinen wrote:
> The documentaion says "Every bad sector is tried only one time per
> pass."

> ... the remaining bad sectors are very stubborn. Reads stall
> frequently and I have to use timeout and "while true" shell loop to
> continue. Most of the time is spent on the timeouts.

Those reads were stuck since the kernel was in endless retry loop
which was terminated by ddrescue timeout.

There was discuession "ata_eh_link_autopsy: Bug?" in linux-ide about 
media errors year ago:
  http://comments.gmane.org/gmane.linux.ide/52019

The endless retry on media errors has been fixed in v3.5 kernel.

I had been using v3.2 kernel in Debian testing which suffered from
this endless retry problem.  In the kernel ring buffer there were
repetitive pattern of read error and its media error aftermath with 8
seconds cycle length. So effectively increasing timeout to 5 minutes
gave 38 retries per sector.

When I tried later kernel v3.6 with the fix, there is only one error
in the kernel ring buffer per each sector. Increasing the timeout
does not increase any more the retries per sector. Instead it increased 
the number of sectors tried before ddrescue exits.

It takes 8 seconds to read a sector and this gives 64 B/s average read 
speed on bad sectors.  When I used timeout with v3.2 kernel I saw even 
slower average speed due to these numerous retries.

Next I am going to try if I could do bad sector multisampling in user 
space.

Jarkko Lavinen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]