]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/blkdev.h
printk: when dumping regs, show the stack, not thread_info
[karo-tx-linux.git] / include / linux / blkdev.h
index 156455cb07ad00f68b66af4c5e5f7cd1222597ed..c96db9c22d1031496d01c0622a65ea0df8e2965a 100644 (file)
@@ -90,18 +90,17 @@ struct request {
        struct list_head queuelist;
        union {
                struct call_single_data csd;
-               unsigned long fifo_time;
+               u64 fifo_time;
        };
 
        struct request_queue *q;
        struct blk_mq_ctx *mq_ctx;
 
-       u64 cmd_flags;
+       int cpu;
        unsigned cmd_type;
+       u64 cmd_flags;
        unsigned long atomic_flags;
 
-       int cpu;
-
        /* the following two fields are internal, NEVER access directly */
        unsigned int __data_len;        /* total data len */
        sector_t __sector;              /* sector cursor */
@@ -506,6 +505,7 @@ struct request_queue {
 #define QUEUE_FLAG_WC         23       /* Write back caching */
 #define QUEUE_FLAG_FUA        24       /* device supports FUA writes */
 #define QUEUE_FLAG_FLUSH_NQ    25      /* flush not queueuable */
+#define QUEUE_FLAG_DAX         26      /* device supports DAX */
 
 #define QUEUE_FLAG_DEFAULT     ((1 << QUEUE_FLAG_IO_STAT) |            \
                                 (1 << QUEUE_FLAG_STACKABLE)    |       \
@@ -595,6 +595,7 @@ static inline void queue_flag_clear(unsigned int flag, struct request_queue *q)
 #define blk_queue_discard(q)   test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags)
 #define blk_queue_secure_erase(q) \
        (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags))
+#define blk_queue_dax(q)       test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags)
 
 #define blk_noretry_request(rq) \
        ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \
@@ -788,8 +789,6 @@ extern void blk_rq_init(struct request_queue *q, struct request *rq);
 extern void blk_put_request(struct request *);
 extern void __blk_put_request(struct request_queue *, struct request *);
 extern struct request *blk_get_request(struct request_queue *, int, gfp_t);
-extern struct request *blk_make_request(struct request_queue *, struct bio *,
-                                       gfp_t);
 extern void blk_rq_set_block_pc(struct request *);
 extern void blk_requeue_request(struct request_queue *, struct request *);
 extern void blk_add_request_payload(struct request *rq, struct page *page,
@@ -802,6 +801,7 @@ extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
 extern void blk_rq_unprep_clone(struct request *rq);
 extern int blk_insert_cloned_request(struct request_queue *q,
                                     struct request *rq);
+extern int blk_rq_append_bio(struct request *rq, struct bio *bio);
 extern void blk_delay_queue(struct request_queue *, unsigned long);
 extern void blk_queue_split(struct request_queue *, struct bio **,
                            struct bio_set *);
@@ -906,7 +906,8 @@ static inline unsigned int blk_max_size_offset(struct request_queue *q,
                        (offset & (q->limits.chunk_sectors - 1));
 }
 
-static inline unsigned int blk_rq_get_max_sectors(struct request *rq)
+static inline unsigned int blk_rq_get_max_sectors(struct request *rq,
+                                                 sector_t offset)
 {
        struct request_queue *q = rq->q;
 
@@ -916,7 +917,7 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq)
        if (!q->limits.chunk_sectors || (req_op(rq) == REQ_OP_DISCARD))
                return blk_queue_get_max_sectors(q, req_op(rq));
 
-       return min(blk_max_size_offset(q, blk_rq_pos(rq)),
+       return min(blk_max_size_offset(q, offset),
                        blk_queue_get_max_sectors(q, req_op(rq)));
 }