Skip to content

Commit 0d1e0c7

Browse files
Josef Bacikaxboe
authored andcommitted
blk: introduce REQ_SWAP
Just like REQ_META, it's important to know the IO coming down is swap in order to guard against potential IO priority inversion issues with cgroups. Add REQ_SWAP and use it for all swap IO, and add it to our bio_issue_as_root_blkg helper. Signed-off-by: Josef Bacik <jbacik@fb.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 903d23f commit 0d1e0c7

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

include/linux/blk-cgroup.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio)
254254
*/
255255
static inline bool bio_issue_as_root_blkg(struct bio *bio)
256256
{
257-
return (bio->bi_opf & REQ_META);
257+
return (bio->bi_opf & (REQ_META | REQ_SWAP)) != 0;
258258
}
259259

260260
/**

include/linux/blk_types.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ enum req_flag_bits {
329329

330330
/* for driver use */
331331
__REQ_DRV,
332-
332+
__REQ_SWAP, /* swapping request. */
333333
__REQ_NR_BITS, /* stops here */
334334
};
335335

@@ -351,6 +351,7 @@ enum req_flag_bits {
351351
#define REQ_NOUNMAP (1ULL << __REQ_NOUNMAP)
352352

353353
#define REQ_DRV (1ULL << __REQ_DRV)
354+
#define REQ_SWAP (1ULL << __REQ_SWAP)
354355

355356
#define REQ_FAILFAST_MASK \
356357
(REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)

mm/page_io.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
338338
ret = -ENOMEM;
339339
goto out;
340340
}
341-
bio->bi_opf = REQ_OP_WRITE | wbc_to_write_flags(wbc);
341+
bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc);
342342
count_swpout_vm_event(page);
343343
set_page_writeback(page);
344344
unlock_page(page);

0 commit comments

Comments
 (0)