Commit 3bc217ffe6774e7971d6a7ce6350ce806ebab044

Authored by Jens Axboe
1 parent 8bdd3f8a69

block: kill swap_io_context()

It blindly copies everything in the io_context, including the lock.
That doesn't work so well for either lock ordering or lockdep.

There seems zero point in swapping io contexts on a request to request
merge, so the best point of action is to just remove it.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

Showing 3 changed files with 0 additions and 24 deletions Side-by-side Diff

... ... @@ -1268,22 +1268,8 @@
1268 1268 */
1269 1269 if (!list_empty(&req->queuelist) && !list_empty(&next->queuelist)) {
1270 1270 if (time_before(rq_fifo_time(next), rq_fifo_time(req))) {
1271   - struct io_context *rioc = RQ_IOC(req);
1272   - struct io_context *nioc = RQ_IOC(next);
1273   -
1274 1271 list_move(&req->queuelist, &next->queuelist);
1275 1272 rq_set_fifo_time(req, rq_fifo_time(next));
1276   - /*
1277   - * Don't copy here but swap, because when anext is
1278   - * removed below, it must contain the unused context
1279   - */
1280   - if (rioc != nioc) {
1281   - double_spin_lock(&rioc->lock, &nioc->lock,
1282   - rioc < nioc);
1283   - swap_io_context(&rioc, &nioc);
1284   - double_spin_unlock(&rioc->lock, &nioc->lock,
1285   - rioc < nioc);
1286   - }
1287 1273 }
1288 1274 }
1289 1275  
... ... @@ -176,15 +176,6 @@
176 176 }
177 177 EXPORT_SYMBOL(copy_io_context);
178 178  
179   -void swap_io_context(struct io_context **ioc1, struct io_context **ioc2)
180   -{
181   - struct io_context *temp;
182   - temp = *ioc1;
183   - *ioc1 = *ioc2;
184   - *ioc2 = temp;
185   -}
186   -EXPORT_SYMBOL(swap_io_context);
187   -
188 179 int __init blk_ioc_init(void)
189 180 {
190 181 iocontext_cachep = kmem_cache_create("blkdev_ioc",
include/linux/blkdev.h
... ... @@ -39,7 +39,6 @@
39 39 struct io_context *get_io_context(gfp_t gfp_flags, int node);
40 40 struct io_context *alloc_io_context(gfp_t gfp_flags, int node);
41 41 void copy_io_context(struct io_context **pdst, struct io_context **psrc);
42   -void swap_io_context(struct io_context **ioc1, struct io_context **ioc2);
43 42  
44 43 struct request;
45 44 typedef void (rq_end_io_fn)(struct request *, int);