This adds a new request flag, REQ_BG, that callers can use to tell
the block layer that this is background (non-urgent) IO.

No functional changes in this patch.

Signed-off-by: Jens Axboe <ax...@fb.com>
---
 include/linux/blk_types.h | 4 +++-
 include/linux/fs.h        | 4 ++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index 86a38ea1823f..223012451c7a 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -161,6 +161,7 @@ enum rq_flag_bits {
        __REQ_INTEGRITY,        /* I/O includes block integrity payload */
        __REQ_FUA,              /* forced unit access */
        __REQ_FLUSH,            /* request for cache flush */
+       __REQ_BG,               /* background activity */
 
        /* bio only flags */
        __REQ_RAHEAD,           /* read ahead, can fail anytime */
@@ -208,7 +209,7 @@ enum rq_flag_bits {
 #define REQ_COMMON_MASK \
        (REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_PRIO | \
         REQ_DISCARD | REQ_WRITE_SAME | REQ_NOIDLE | REQ_FLUSH | REQ_FUA | \
-        REQ_SECURE | REQ_INTEGRITY)
+        REQ_SECURE | REQ_INTEGRITY | REQ_BG)
 #define REQ_CLONE_MASK         REQ_COMMON_MASK
 
 #define BIO_NO_ADVANCE_ITER_MASK       (REQ_DISCARD|REQ_WRITE_SAME)
@@ -235,6 +236,7 @@ enum rq_flag_bits {
 #define REQ_COPY_USER          (1ULL << __REQ_COPY_USER)
 #define REQ_FLUSH              (1ULL << __REQ_FLUSH)
 #define REQ_FLUSH_SEQ          (1ULL << __REQ_FLUSH_SEQ)
+#define REQ_BG                 (1ULL << __REQ_BG)
 #define REQ_IO_STAT            (1ULL << __REQ_IO_STAT)
 #define REQ_MIXED_MERGE                (1ULL << __REQ_MIXED_MERGE)
 #define REQ_SECURE             (1ULL << __REQ_SECURE)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 70e61b58baaf..bb8f951cc619 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -192,6 +192,9 @@ typedef void (dax_iodone_t)(struct buffer_head *bh_map, int 
uptodate);
  * WRITE_FLUSH_FUA     Combination of WRITE_FLUSH and FUA. The IO is preceded
  *                     by a cache flush and data is guaranteed to be on
  *                     non-volatile media on completion.
+ * WRITE_BG            Background write. This is for background activity like
+ *                     the periodic flush and background threshold writeback
+ *
  *
  */
 #define RW_MASK                        REQ_WRITE
@@ -207,6 +210,7 @@ typedef void (dax_iodone_t)(struct buffer_head *bh_map, int 
uptodate);
 #define WRITE_FLUSH            (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FLUSH)
 #define WRITE_FUA              (WRITE | REQ_SYNC | REQ_NOIDLE | REQ_FUA)
 #define WRITE_FLUSH_FUA                (WRITE | REQ_SYNC | REQ_NOIDLE | 
REQ_FLUSH | REQ_FUA)
+#define WRITE_BG               (WRITE | REQ_NOIDLE | REQ_BG)
 
 /*
  * Attribute flags.  These should be or-ed together to figure out what
-- 
2.8.0.rc4.6.g7e4ba36

Reply via email to