diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/as-iosched.c | 10 |
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 | ||