aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/as-iosched.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/block/as-iosched.c b/block/as-iosched.c
index b201d16a7102..96036846a001 100644
--- a/block/as-iosched.c
+++ b/block/as-iosched.c
@@ -1275,9 +1275,13 @@ static void as_merged_requests(struct request_queue *q, struct request *req,
1275 * Don't copy here but swap, because when anext is 1275 * Don't copy here but swap, because when anext is
1276 * removed below, it must contain the unused context 1276 * removed below, it must contain the unused context
1277 */ 1277 */
1278 double_spin_lock(&rioc->lock, &nioc->lock, rioc < nioc); 1278 if (rioc != nioc) {
1279 swap_io_context(&rioc, &nioc); 1279 double_spin_lock(&rioc->lock, &nioc->lock,
1280 double_spin_unlock(&rioc->lock, &nioc->lock, rioc < nioc); 1280 rioc < nioc);
1281 swap_io_context(&rioc, &nioc);
1282 double_spin_unlock(&rioc->lock, &nioc->lock,
1283 rioc < nioc);
1284 }
1281 } 1285 }
1282 } 1286 }
1283 1287