fs: decouple READ and WRITE from the block layer ops
authorChristoph Hellwig <hch@lst.de>
Tue, 1 Nov 2016 13:40:11 +0000 (07:40 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 1 Nov 2016 15:43:26 +0000 (09:43 -0600)
Move READ and WRITE to kernel.h and don't define them in terms of block
layer ops; they are our generic data direction indicators these days
and have no more resemblance with the block layer ops.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/bio.h
include/linux/fs.h
include/linux/kernel.h
include/linux/uio.h

index 87ce64dafb93ad99508f5dbaf470e992c7f15d58..fe9a1701760816af17b2bd8a4487ec89e33c1dc2 100644 (file)
 #define bio_sectors(bio)       ((bio)->bi_iter.bi_size >> 9)
 #define bio_end_sector(bio)    ((bio)->bi_iter.bi_sector + bio_sectors((bio)))
 
+/*
+ * Return the data direction, READ or WRITE.
+ */
+#define bio_data_dir(bio) \
+       (op_is_write(bio_op(bio)) ? WRITE : READ)
+
 /*
  * Check whether this bio carries any data or not. A NULL bio is allowed.
  */
index 7a1b78ab7c1527cda6bb419aa02f4f8c58551e75..0ad36e0c7fa795656bd9717dce07080f8f1d3fe2 100644 (file)
@@ -151,11 +151,6 @@ typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
  */
 #define CHECK_IOVEC_ONLY -1
 
-#define RW_MASK                        REQ_OP_WRITE
-
-#define READ                   REQ_OP_READ
-#define WRITE                  REQ_OP_WRITE
-
 /*
  * Attribute flags.  These should be or-ed together to figure out what
  * has been changed!
@@ -2452,14 +2447,6 @@ extern void make_bad_inode(struct inode *);
 extern bool is_bad_inode(struct inode *);
 
 #ifdef CONFIG_BLOCK
-/*
- * return data direction, READ or WRITE
- */
-static inline int bio_data_dir(struct bio *bio)
-{
-       return op_is_write(bio_op(bio)) ? WRITE : READ;
-}
-
 extern void check_disk_size_change(struct gendisk *disk,
                                   struct block_device *bdev);
 extern int revalidate_disk(struct gendisk *);
index bc6ed52a39b967898c6e2f2814e23fbd6f2a3332..01b6b460c34d2bc7c2c92995be35ae6ab0b4a1e4 100644 (file)
 #define PTR_ALIGN(p, a)                ((typeof(p))ALIGN((unsigned long)(p), (a)))
 #define IS_ALIGNED(x, a)               (((x) & ((typeof(x))(a) - 1)) == 0)
 
+/* generic data direction definitions */
+#define READ                   0
+#define WRITE                  1
+
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
 
 #define u64_to_user_ptr(x) (           \
index 6e22b544d03913746e3190c21b9a1094f6e9f28a..d5aba1512b8bdd2da5d98cfe5f6092036d2e44ae 100644 (file)
@@ -125,7 +125,7 @@ static inline bool iter_is_iovec(const struct iov_iter *i)
  *
  * The ?: is just for type safety.
  */
-#define iov_iter_rw(i) ((0 ? (struct iov_iter *)0 : (i))->type & RW_MASK)
+#define iov_iter_rw(i) ((0 ? (struct iov_iter *)0 : (i))->type & (READ | WRITE))
 
 /*
  * Cap the iov_iter by given limit; note that the second argument is