Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d1e0c7c authored by Josef Bacik's avatar Josef Bacik Committed by Jens Axboe
Browse files

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: default avatarJosef Bacik <jbacik@fb.com>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 903d23f0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -254,7 +254,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio)
 */
static inline bool bio_issue_as_root_blkg(struct bio *bio)
{
	return (bio->bi_opf & REQ_META);
	return (bio->bi_opf & (REQ_META | REQ_SWAP)) != 0;
}

/**
+2 −1
Original line number Diff line number Diff line
@@ -329,7 +329,7 @@ enum req_flag_bits {

	/* for driver use */
	__REQ_DRV,

	__REQ_SWAP,		/* swapping request. */
	__REQ_NR_BITS,		/* stops here */
};

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

#define REQ_DRV			(1ULL << __REQ_DRV)
#define REQ_SWAP		(1ULL << __REQ_SWAP)

#define REQ_FAILFAST_MASK \
	(REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)
+1 −1
Original line number Diff line number Diff line
@@ -338,7 +338,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
		ret = -ENOMEM;
		goto out;
	}
	bio->bi_opf = REQ_OP_WRITE | wbc_to_write_flags(wbc);
	bio->bi_opf = REQ_OP_WRITE | REQ_SWAP | wbc_to_write_flags(wbc);
	count_swpout_vm_event(page);
	set_page_writeback(page);
	unlock_page(page);