Disk I/O is somewhat slower but works just fine. You don't have to wait.
Hervé Eychenne wrote:
Hi,
Suppose I'm waiting for a recovery to be completed, and want to run a command afterwards (halt, send a mail, or anything else...). The most practiacl way I can see is to check /proc/mdstat.
But what if I want to do that automatically (without bothering looking at it manually from time to time)? For example, one could do: # while cat /proc/mdstat | grep recovery > /dev/null ; do sleep 5 ; done
But that's quite ugly, as: - it's an active polling, and it is time consuming (even if slightly) - it may even be unreliable, as I guess one cannot ensure that /proc/mdstat will print the "recovery" string during the (very short, but well...) transition between two partitions to recover
I think that a passive wait would be much better instead. And ideally, we should have a simple and efficient way to let a program know if a device is in a clean state (or being recovered), and another that would wait until the device is clean (recovery finished).
So, the while loop could be replaced by something like mdadm --recovery-wait (for example) which would exit only when all pending recoveries have finished, and let the script continue. That would be much practical, reliable, and cleaner than a loop, don't you think?
How this could be achieved is another question... probably the best would be that userspace can select on a file descriptor, or something like that (netlink device?) What do you think?
Hervé
-- - To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html