• N
    md: fix 'safemode' handling for external metadata. · 31a59e34
    NeilBrown 提交于
    'safemode' relates to marking an array as 'clean' if there has been no write
    traffic for a while (a couple of seconds), to reduce the chance of the array
    being found dirty on reboot.
    
    ->safemode is set to '1' when there have been no write for a while, and it
    gets set to '0' when the superblock is updates with the 'clean' flag set.
    
    This requires a few fixes for 'external' metadata:
     - When an array is set to 'clean' via sysfs, 'safemode' must be cleared.
     - when we write to an array that has 'safemode' set (there must have been
            some delay in updating the metadata), we need to clear safemode.
     - Don't try to update external metadata in md_check_recovery for safemode
            transitions - it won't work.
    
    Also, don't try to support "immediate safe mode" (safemode==2) for external
    metadata, it cannot really work (the safemode timeout can be set very low if
    this is really needed).
    Signed-off-by: NNeil Brown <neilb@suse.de>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    31a59e34
md.c 152.4 KB