linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Should mdraid implement timeouts?
@ 2012-04-19 13:11 Pierre Beck
  2012-04-19 21:46 ` NeilBrown
  0 siblings, 1 reply; 2+ messages in thread
From: Pierre Beck @ 2012-04-19 13:11 UTC (permalink / raw)
  To: linux-raid

Hello,

currently, mdraid will simply block and wait for the underlying layers 
to execute commands and does not handle timeouts on its own.

In a perfect world, disks will respond within a limited timeframe when 
for example a bad sector is encountered. Unfortunately, I see even disks 
with set TLER that don't. Then, with a configurable timeout, Linux 
Kernel will reset the device in question, then the bus, then the 
controller. This process takes time (and I think the bus / controller 
reset is really adding to that time and should be optional in the first 
place) during which data is unavailable, though there is redundancy and 
another device is ready to respond.

For a read operations, things are simple: mdraid can re-issue the read 
on the redundant device(s) and deliver data. For write operations, I see 
no other option than kicking the disk from the array. With write-intent 
bitmaps in place, the disk can be re-added and resync fast once it is 
available again.

If possible, commands sent to the bad disk should be aborted, so Kernel 
doesn't reset the bus.

To add response time management, the timeout could work with several 
values and sum up like this:

max_response_time_ms = 20
timeout_ms = 10000

Every request would measure response time. If response time - 
max_response_time_ms > 0, decrease timeout_ms temporarily by that value. 
So slow disks would be kicked by the same timeout mechanism.

Greetings,

Pierre Beck

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-04-19 21:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-19 13:11 Should mdraid implement timeouts? Pierre Beck
2012-04-19 21:46 ` NeilBrown

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).