• NeilBrown's avatar
    md: Ensure no IO request to get md device before it is properly initialised. · 0ca69886
    NeilBrown authored
    When an md device is in the process of coming on line it is possible
    for an IO request (typically a partition table probe) to get through
    before the array is fully initialised, which can cause unexpected
    behaviour (e.g. a crash).
    
    So explicitly record when the array is ready for IO and don't allow IO
    through until then.
    
    There is no possibility for a similar problem when the array is going
    off-line as there must only be one 'open' at that time, and it is busy
    off-lining the array and so cannot send IO requests.  So no memory
    barrier is needed in md_stop()
    
    This has been a bug since commit 409c57f3 in 2.6.30 which
    introduced md_make_request.  Before then, each personality would
    register its own make_request_fn when it was ready.
    This is suitable for any stable kernel from 2.6.30.y onwards.
    
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    Reported-by: default avatar"Hawrylewicz Czarnowski, Przemyslaw" <przemyslaw.hawrylewicz.czarnowski@intel.com>
    0ca69886
md.c 190 KB