提交 0d1e0c7c 编写于 作者: J Josef Bacik 提交者: Jens Axboe

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: NJosef Bacik <jbacik@fb.com>
Acked-by: NTejun Heo <tj@kernel.org>
Signed-off-by: NJens Axboe <axboe@kernel.dk>
上级 903d23f0
...@@ -254,7 +254,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio) ...@@ -254,7 +254,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio)
*/ */
static inline bool bio_issue_as_root_blkg(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;
} }
/** /**
......
...@@ -329,7 +329,7 @@ enum req_flag_bits { ...@@ -329,7 +329,7 @@ enum req_flag_bits {
/* for driver use */ /* for driver use */
__REQ_DRV, __REQ_DRV,
__REQ_SWAP, /* swapping request. */
__REQ_NR_BITS, /* stops here */ __REQ_NR_BITS, /* stops here */
}; };
...@@ -351,6 +351,7 @@ enum req_flag_bits { ...@@ -351,6 +351,7 @@ enum req_flag_bits {
#define REQ_NOUNMAP (1ULL << __REQ_NOUNMAP) #define REQ_NOUNMAP (1ULL << __REQ_NOUNMAP)
#define REQ_DRV (1ULL << __REQ_DRV) #define REQ_DRV (1ULL << __REQ_DRV)
#define REQ_SWAP (1ULL << __REQ_SWAP)
#define REQ_FAILFAST_MASK \ #define REQ_FAILFAST_MASK \
(REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER) (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)
......
...@@ -338,7 +338,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc, ...@@ -338,7 +338,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc,
ret = -ENOMEM; ret = -ENOMEM;
goto out; 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); count_swpout_vm_event(page);
set_page_writeback(page); set_page_writeback(page);
unlock_page(page); unlock_page(page);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册