• NeilBrown's avatar
    md/raid5: be more selective about distributing flags across batch. · 1b956f7a
    NeilBrown authored
    When a batch of stripes is broken up, we keep some of the flags
    that were per-stripe, and copy other flags from the head to all
    others.
    
    This only happens while a stripe is being handled, so many of the
    flags are irrelevant.
    
    The "SYNC_FLAGS" (which I've renamed to make it clear there are
    several) and STRIPE_DEGRADED are set per-stripe and so need to be
    preserved.  STRIPE_INSYNC is the only flag that is set on the head
    that needs to be propagated to all others.
    
    For safety, add a WARN_ON if others are set, except:
     STRIPE_HANDLE - this is safe and per-stripe and we are going to set
          in several cases anyway
     STRIPE_INSYNC
     STRIPE_IO_STARTED - this is just a hint and doesn't hurt.
     STRIPE_ON_PLUG_LIST
     STRIPE_ON_RELEASE_LIST - It is a point pointless for a batched
               stripe to be on one of these lists, but it can happen
               as can be safely ignored.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    1b956f7a
raid5.h 22.4 KB