diff options
author | Shaohua Li <shli@kernel.org> | 2012-08-02 08:33:00 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-08-02 08:33:00 +1000 |
commit | 8811b5968f6216e97ccb9fe7b9883af39e339921 (patch) | |
tree | 9693073f6cb1bcd8743d429d7d3330018bc0ce6d /drivers/md/raid5.h | |
parent | 74018dc3063a2c729fc73041c0a9f03aac995920 (diff) | |
download | lwn-8811b5968f6216e97ccb9fe7b9883af39e339921.tar.gz lwn-8811b5968f6216e97ccb9fe7b9883af39e339921.zip |
raid5: make_request use batch stripe release
make_request() does stripe release for every stripe and the stripe usually has
count 1, which makes previous release_stripe() optimization not work. In my
test, this release_stripe() becomes the heaviest pleace to take
conf->device_lock after previous patches applied.
Below patch makes stripe release batch. All the stripes will be released in
unplug. The STRIPE_ON_UNPLUG_LIST bit is to protect concurrent access stripe
lru.
Signed-off-by: Shaohua Li <shli@fusionio.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r-- | drivers/md/raid5.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h index 2164021f3b5f..9a7b36f0a425 100644 --- a/drivers/md/raid5.h +++ b/drivers/md/raid5.h @@ -319,6 +319,7 @@ enum { STRIPE_BIOFILL_RUN, STRIPE_COMPUTE_RUN, STRIPE_OPS_REQ_PENDING, + STRIPE_ON_UNPLUG_LIST, }; /* |