linux/include/linux/blkdev.h
<<
>>
Prefs
   1#ifndef _LINUX_BLKDEV_H
   2#define _LINUX_BLKDEV_H
   3
   4#include <linux/sched.h>
   5
   6#ifdef CONFIG_BLOCK
   7
   8#include <linux/major.h>
   9#include <linux/genhd.h>
  10#include <linux/list.h>
  11#include <linux/llist.h>
  12#include <linux/timer.h>
  13#include <linux/workqueue.h>
  14#include <linux/pagemap.h>
  15#include <linux/backing-dev-defs.h>
  16#include <linux/wait.h>
  17#include <linux/mempool.h>
  18#include <linux/pfn.h>
  19#include <linux/bio.h>
  20#include <linux/stringify.h>
  21#include <linux/gfp.h>
  22#include <linux/bsg.h>
  23#include <linux/smp.h>
  24#include <linux/rcupdate.h>
  25#include <linux/percpu-refcount.h>
  26#include <linux/scatterlist.h>
  27
  28struct module;
  29struct scsi_ioctl_command;
  30
  31struct request_queue;
  32struct elevator_queue;
  33struct blk_trace;
  34struct request;
  35struct sg_io_hdr;
  36struct bsg_job;
  37struct blkcg_gq;
  38struct blk_flush_queue;
  39struct pr_ops;
  40
  41#define BLKDEV_MIN_RQ   4
  42#define BLKDEV_MAX_RQ   128     /* Default maximum */
  43
  44/*
  45 * Maximum number of blkcg policies allowed to be registered concurrently.
  46 * Defined here to simplify include dependency.
  47 */
  48#define BLKCG_MAX_POLS          2
  49
  50typedef void (rq_end_io_fn)(struct request *, int);
  51
  52#define BLK_RL_SYNCFULL         (1U << 0)
  53#define BLK_RL_ASYNCFULL        (1U << 1)
  54
  55struct request_list {
  56        struct request_queue    *q;     /* the queue this rl belongs to */
  57#ifdef CONFIG_BLK_CGROUP
  58        struct blkcg_gq         *blkg;  /* blkg this request pool belongs to */
  59#endif
  60        /*
  61         * count[], starved[], and wait[] are indexed by
  62         * BLK_RW_SYNC/BLK_RW_ASYNC
  63         */
  64        int                     count[2];
  65        int                     starved[2];
  66        mempool_t               *rq_pool;
  67        wait_queue_head_t       wait[2];
  68        unsigned int            flags;
  69};
  70
  71/*
  72 * request command types
  73 */
  74enum rq_cmd_type_bits {
  75        REQ_TYPE_FS             = 1,    /* fs request */
  76        REQ_TYPE_BLOCK_PC,              /* scsi command */
  77        REQ_TYPE_DRV_PRIV,              /* driver defined types from here */
  78};
  79
  80#define BLK_MAX_CDB     16
  81
  82/*
  83 * Try to put the fields that are referenced together in the same cacheline.
  84 *
  85 * If you modify this structure, make sure to update blk_rq_init() and
  86 * especially blk_mq_rq_ctx_init() to take care of the added fields.
  87 */
  88struct request {
  89        struct list_head queuelist;
  90        union {
  91                struct call_single_data csd;
  92                u64 fifo_time;
  93        };
  94
  95        struct request_queue *q;
  96        struct blk_mq_ctx *mq_ctx;
  97
  98        int cpu;
  99        unsigned cmd_type;
 100        u64 cmd_flags;
 101        unsigned long atomic_flags;
 102
 103        /* the following two fields are internal, NEVER access directly */
 104        unsigned int __data_len;        /* total data len */
 105        sector_t __sector;              /* sector cursor */
 106
 107        struct bio *bio;
 108        struct bio *biotail;
 109
 110        /*
 111         * The hash is used inside the scheduler, and killed once the
 112         * request reaches the dispatch list. The ipi_list is only used
 113         * to queue the request for softirq completion, which is long
 114         * after the request has been unhashed (and even removed from
 115         * the dispatch list).
 116         */
 117        union {
 118                struct hlist_node hash; /* merge hash */
 119                struct list_head ipi_list;
 120        };
 121
 122        /*
 123         * The rb_node is only used inside the io scheduler, requests
 124         * are pruned when moved to the dispatch queue. So let the
 125         * completion_data share space with the rb_node.
 126         */
 127        union {
 128                struct rb_node rb_node; /* sort/lookup */
 129                void *completion_data;
 130        };
 131
 132        /*
 133         * Three pointers are available for the IO schedulers, if they need
 134         * more they have to dynamically allocate it.  Flush requests are
 135         * never put on the IO scheduler. So let the flush fields share
 136         * space with the elevator data.
 137         */
 138        union {
 139                struct {
 140                        struct io_cq            *icq;
 141                        void                    *priv[2];
 142                } elv;
 143
 144                struct {
 145                        unsigned int            seq;
 146                        struct list_head        list;
 147                        rq_end_io_fn            *saved_end_io;
 148                } flush;
 149        };
 150
 151        struct gendisk *rq_disk;
 152        struct hd_struct *part;
 153        unsigned long start_time;
 154#ifdef CONFIG_BLK_CGROUP
 155        struct request_list *rl;                /* rl this rq is alloced from */
 156        unsigned long long start_time_ns;
 157        unsigned long long io_start_time_ns;    /* when passed to hardware */
 158#endif
 159        /* Number of scatter-gather DMA addr+len pairs after
 160         * physical address coalescing is performed.
 161         */
 162        unsigned short nr_phys_segments;
 163#if defined(CONFIG_BLK_DEV_INTEGRITY)
 164        unsigned short nr_integrity_segments;
 165#endif
 166
 167        unsigned short ioprio;
 168
 169        void *special;          /* opaque pointer available for LLD use */
 170
 171        int tag;
 172        int errors;
 173
 174        /*
 175         * when request is used as a packet command carrier
 176         */
 177        unsigned char __cmd[BLK_MAX_CDB];
 178        unsigned char *cmd;
 179        unsigned short cmd_len;
 180
 181        unsigned int extra_len; /* length of alignment and padding */
 182        unsigned int sense_len;
 183        unsigned int resid_len; /* residual count */
 184        void *sense;
 185
 186        unsigned long deadline;
 187        struct list_head timeout_list;
 188        unsigned int timeout;
 189        int retries;
 190
 191        /*
 192         * completion callback.
 193         */
 194        rq_end_io_fn *end_io;
 195        void *end_io_data;
 196
 197        /* for bidi */
 198        struct request *next_rq;
 199};
 200
 201#define REQ_OP_SHIFT (8 * sizeof(u64) - REQ_OP_BITS)
 202#define req_op(req)  ((req)->cmd_flags >> REQ_OP_SHIFT)
 203
 204#define req_set_op(req, op) do {                                \
 205        WARN_ON(op >= (1 << REQ_OP_BITS));                      \
 206        (req)->cmd_flags &= ((1ULL << REQ_OP_SHIFT) - 1);       \
 207        (req)->cmd_flags |= ((u64) (op) << REQ_OP_SHIFT);       \
 208} while (0)
 209
 210#define req_set_op_attrs(req, op, flags) do {   \
 211        req_set_op(req, op);                    \
 212        (req)->cmd_flags |= flags;              \
 213} while (0)
 214
 215static inline unsigned short req_get_ioprio(struct request *req)
 216{
 217        return req->ioprio;
 218}
 219
 220#include <linux/elevator.h>
 221
 222struct blk_queue_ctx;
 223
 224typedef void (request_fn_proc) (struct request_queue *q);
 225typedef blk_qc_t (make_request_fn) (struct request_queue *q, struct bio *bio);
 226typedef int (prep_rq_fn) (struct request_queue *, struct request *);
 227typedef void (unprep_rq_fn) (struct request_queue *, struct request *);
 228
 229struct bio_vec;
 230typedef void (softirq_done_fn)(struct request *);
 231typedef int (dma_drain_needed_fn)(struct request *);
 232typedef int (lld_busy_fn) (struct request_queue *q);
 233typedef int (bsg_job_fn) (struct bsg_job *);
 234
 235enum blk_eh_timer_return {
 236        BLK_EH_NOT_HANDLED,
 237        BLK_EH_HANDLED,
 238        BLK_EH_RESET_TIMER,
 239};
 240
 241typedef enum blk_eh_timer_return (rq_timed_out_fn)(struct request *);
 242
 243enum blk_queue_state {
 244        Queue_down,
 245        Queue_up,
 246};
 247
 248struct blk_queue_tag {
 249        struct request **tag_index;     /* map of busy tags */
 250        unsigned long *tag_map;         /* bit map of free/busy tags */
 251        int busy;                       /* current depth */
 252        int max_depth;                  /* what we will send to device */
 253        int real_max_depth;             /* what the array can hold */
 254        atomic_t refcnt;                /* map can be shared */
 255        int alloc_policy;               /* tag allocation policy */
 256        int next_tag;                   /* next tag */
 257};
 258#define BLK_TAG_ALLOC_FIFO 0 /* allocate starting from 0 */
 259#define BLK_TAG_ALLOC_RR 1 /* allocate starting from last allocated tag */
 260
 261#define BLK_SCSI_MAX_CMDS       (256)
 262#define BLK_SCSI_CMD_PER_LONG   (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8))
 263
 264struct queue_limits {
 265        unsigned long           bounce_pfn;
 266        unsigned long           seg_boundary_mask;
 267        unsigned long           virt_boundary_mask;
 268
 269        unsigned int            max_hw_sectors;
 270        unsigned int            max_dev_sectors;
 271        unsigned int            chunk_sectors;
 272        unsigned int            max_sectors;
 273        unsigned int            max_segment_size;
 274        unsigned int            physical_block_size;
 275        unsigned int            alignment_offset;
 276        unsigned int            io_min;
 277        unsigned int            io_opt;
 278        unsigned int            max_discard_sectors;
 279        unsigned int            max_hw_discard_sectors;
 280        unsigned int            max_write_same_sectors;
 281        unsigned int            discard_granularity;
 282        unsigned int            discard_alignment;
 283
 284        unsigned short          logical_block_size;
 285        unsigned short          max_segments;
 286        unsigned short          max_integrity_segments;
 287
 288        unsigned char           misaligned;
 289        unsigned char           discard_misaligned;
 290        unsigned char           cluster;
 291        unsigned char           discard_zeroes_data;
 292        unsigned char           raid_partial_stripes_expensive;
 293};
 294
 295struct request_queue {
 296        /*
 297         * Together with queue_head for cacheline sharing
 298         */
 299        struct list_head        queue_head;
 300        struct request          *last_merge;
 301        struct elevator_queue   *elevator;
 302        int                     nr_rqs[2];      /* # allocated [a]sync rqs */
 303        int                     nr_rqs_elvpriv; /* # allocated rqs w/ elvpriv */
 304
 305        /*
 306         * If blkcg is not used, @q->root_rl serves all requests.  If blkcg
 307         * is used, root blkg allocates from @q->root_rl and all other
 308         * blkgs from their own blkg->rl.  Which one to use should be
 309         * determined using bio_request_list().
 310         */
 311        struct request_list     root_rl;
 312
 313        request_fn_proc         *request_fn;
 314        make_request_fn         *make_request_fn;
 315        prep_rq_fn              *prep_rq_fn;
 316        unprep_rq_fn            *unprep_rq_fn;
 317        softirq_done_fn         *softirq_done_fn;
 318        rq_timed_out_fn         *rq_timed_out_fn;
 319        dma_drain_needed_fn     *dma_drain_needed;
 320        lld_busy_fn             *lld_busy_fn;
 321
 322        struct blk_mq_ops       *mq_ops;
 323
 324        unsigned int            *mq_map;
 325
 326        /* sw queues */
 327        struct blk_mq_ctx __percpu      *queue_ctx;
 328        unsigned int            nr_queues;
 329
 330        /* hw dispatch queues */
 331        struct blk_mq_hw_ctx    **queue_hw_ctx;
 332        unsigned int            nr_hw_queues;
 333
 334        /*
 335         * Dispatch queue sorting
 336         */
 337        sector_t                end_sector;
 338        struct request          *boundary_rq;
 339
 340        /*
 341         * Delayed queue handling
 342         */
 343        struct delayed_work     delay_work;
 344
 345        struct backing_dev_info backing_dev_info;
 346
 347        /*
 348         * The queue owner gets to use this for whatever they like.
 349         * ll_rw_blk doesn't touch it.
 350         */
 351        void                    *queuedata;
 352
 353        /*
 354         * various queue flags, see QUEUE_* below
 355         */
 356        unsigned long           queue_flags;
 357
 358        /*
 359         * ida allocated id for this queue.  Used to index queues from
 360         * ioctx.
 361         */
 362        int                     id;
 363
 364        /*
 365         * queue needs bounce pages for pages above this limit
 366         */
 367        gfp_t                   bounce_gfp;
 368
 369        /*
 370         * protects queue structures from reentrancy. ->__queue_lock should
 371         * _never_ be used directly, it is queue private. always use
 372         * ->queue_lock.
 373         */
 374        spinlock_t              __queue_lock;
 375        spinlock_t              *queue_lock;
 376
 377        /*
 378         * queue kobject
 379         */
 380        struct kobject kobj;
 381
 382        /*
 383         * mq queue kobject
 384         */
 385        struct kobject mq_kobj;
 386
 387#ifdef  CONFIG_BLK_DEV_INTEGRITY
 388        struct blk_integrity integrity;
 389#endif  /* CONFIG_BLK_DEV_INTEGRITY */
 390
 391#ifdef CONFIG_PM
 392        struct device           *dev;
 393        int                     rpm_status;
 394        unsigned int            nr_pending;
 395#endif
 396
 397        /*
 398         * queue settings
 399         */
 400        unsigned long           nr_requests;    /* Max # of requests */
 401        unsigned int            nr_congestion_on;
 402        unsigned int            nr_congestion_off;
 403        unsigned int            nr_batching;
 404
 405        unsigned int            dma_drain_size;
 406        void                    *dma_drain_buffer;
 407        unsigned int            dma_pad_mask;
 408        unsigned int            dma_alignment;
 409
 410        struct blk_queue_tag    *queue_tags;
 411        struct list_head        tag_busy_list;
 412
 413        unsigned int            nr_sorted;
 414        unsigned int            in_flight[2];
 415        /*
 416         * Number of active block driver functions for which blk_drain_queue()
 417         * must wait. Must be incremented around functions that unlock the
 418         * queue_lock internally, e.g. scsi_request_fn().
 419         */
 420        unsigned int            request_fn_active;
 421
 422        unsigned int            rq_timeout;
 423        struct timer_list       timeout;
 424        struct work_struct      timeout_work;
 425        struct list_head        timeout_list;
 426
 427        struct list_head        icq_list;
 428#ifdef CONFIG_BLK_CGROUP
 429        DECLARE_BITMAP          (blkcg_pols, BLKCG_MAX_POLS);
 430        struct blkcg_gq         *root_blkg;
 431        struct list_head        blkg_list;
 432#endif
 433
 434        struct queue_limits     limits;
 435
 436        /*
 437         * sg stuff
 438         */
 439        unsigned int            sg_timeout;
 440        unsigned int            sg_reserved_size;
 441        int                     node;
 442#ifdef CONFIG_BLK_DEV_IO_TRACE
 443        struct blk_trace        *blk_trace;
 444#endif
 445        /*
 446         * for flush operations
 447         */
 448        struct blk_flush_queue  *fq;
 449
 450        struct list_head        requeue_list;
 451        spinlock_t              requeue_lock;
 452        struct delayed_work     requeue_work;
 453
 454        struct mutex            sysfs_lock;
 455
 456        int                     bypass_depth;
 457        atomic_t                mq_freeze_depth;
 458
 459#if defined(CONFIG_BLK_DEV_BSG)
 460        bsg_job_fn              *bsg_job_fn;
 461        int                     bsg_job_size;
 462        struct bsg_class_device bsg_dev;
 463#endif
 464
 465#ifdef CONFIG_BLK_DEV_THROTTLING
 466        /* Throttle data */
 467        struct throtl_data *td;
 468#endif
 469        struct rcu_head         rcu_head;
 470        wait_queue_head_t       mq_freeze_wq;
 471        struct percpu_ref       q_usage_counter;
 472        struct list_head        all_q_node;
 473
 474        struct blk_mq_tag_set   *tag_set;
 475        struct list_head        tag_set_list;
 476        struct bio_set          *bio_split;
 477
 478        bool                    mq_sysfs_init_done;
 479};
 480
 481#define QUEUE_FLAG_QUEUED       1       /* uses generic tag queueing */
 482#define QUEUE_FLAG_STOPPED      2       /* queue is stopped */
 483#define QUEUE_FLAG_SYNCFULL     3       /* read queue has been filled */
 484#define QUEUE_FLAG_ASYNCFULL    4       /* write queue has been filled */
 485#define QUEUE_FLAG_DYING        5       /* queue being torn down */
 486#define QUEUE_FLAG_BYPASS       6       /* act as dumb FIFO queue */
 487#define QUEUE_FLAG_BIDI         7       /* queue supports bidi requests */
 488#define QUEUE_FLAG_NOMERGES     8       /* disable merge attempts */
 489#define QUEUE_FLAG_SAME_COMP    9       /* complete on same CPU-group */
 490#define QUEUE_FLAG_FAIL_IO     10       /* fake timeout */
 491#define QUEUE_FLAG_STACKABLE   11       /* supports request stacking */
 492#define QUEUE_FLAG_NONROT      12       /* non-rotational device (SSD) */
 493#define QUEUE_FLAG_VIRT        QUEUE_FLAG_NONROT /* paravirt device */
 494#define QUEUE_FLAG_IO_STAT     13       /* do IO stats */
 495#define QUEUE_FLAG_DISCARD     14       /* supports DISCARD */
 496#define QUEUE_FLAG_NOXMERGES   15       /* No extended merges */
 497#define QUEUE_FLAG_ADD_RANDOM  16       /* Contributes to random pool */
 498#define QUEUE_FLAG_SECERASE    17       /* supports secure erase */
 499#define QUEUE_FLAG_SAME_FORCE  18       /* force complete on same CPU */
 500#define QUEUE_FLAG_DEAD        19       /* queue tear-down finished */
 501#define QUEUE_FLAG_INIT_DONE   20       /* queue is initialized */
 502#define QUEUE_FLAG_NO_SG_MERGE 21       /* don't attempt to merge SG segments*/
 503#define QUEUE_FLAG_POLL        22       /* IO polling enabled if set */
 504#define QUEUE_FLAG_WC          23       /* Write back caching */
 505#define QUEUE_FLAG_FUA         24       /* device supports FUA writes */
 506#define QUEUE_FLAG_FLUSH_NQ    25       /* flush not queueuable */
 507#define QUEUE_FLAG_DAX         26       /* device supports DAX */
 508
 509#define QUEUE_FLAG_DEFAULT      ((1 << QUEUE_FLAG_IO_STAT) |            \
 510                                 (1 << QUEUE_FLAG_STACKABLE)    |       \
 511                                 (1 << QUEUE_FLAG_SAME_COMP)    |       \
 512                                 (1 << QUEUE_FLAG_ADD_RANDOM))
 513
 514#define QUEUE_FLAG_MQ_DEFAULT   ((1 << QUEUE_FLAG_IO_STAT) |            \
 515                                 (1 << QUEUE_FLAG_STACKABLE)    |       \
 516                                 (1 << QUEUE_FLAG_SAME_COMP)    |       \
 517                                 (1 << QUEUE_FLAG_POLL))
 518
 519static inline void queue_lockdep_assert_held(struct request_queue *q)
 520{
 521        if (q->queue_lock)
 522                lockdep_assert_held(q->queue_lock);
 523}
 524
 525static inline void queue_flag_set_unlocked(unsigned int flag,
 526                                           struct request_queue *q)
 527{
 528        __set_bit(flag, &q->queue_flags);
 529}
 530
 531static inline int queue_flag_test_and_clear(unsigned int flag,
 532                                            struct request_queue *q)
 533{
 534        queue_lockdep_assert_held(q);
 535
 536        if (test_bit(flag, &q->queue_flags)) {
 537                __clear_bit(flag, &q->queue_flags);
 538                return 1;
 539        }
 540
 541        return 0;
 542}
 543
 544static inline int queue_flag_test_and_set(unsigned int flag,
 545                                          struct request_queue *q)
 546{
 547        queue_lockdep_assert_held(q);
 548
 549        if (!test_bit(flag, &q->queue_flags)) {
 550                __set_bit(flag, &q->queue_flags);
 551                return 0;
 552        }
 553
 554        return 1;
 555}
 556
 557static inline void queue_flag_set(unsigned int flag, struct request_queue *q)
 558{
 559        queue_lockdep_assert_held(q);
 560        __set_bit(flag, &q->queue_flags);
 561}
 562
 563static inline void queue_flag_clear_unlocked(unsigned int flag,
 564                                             struct request_queue *q)
 565{
 566        __clear_bit(flag, &q->queue_flags);
 567}
 568
 569static inline int queue_in_flight(struct request_queue *q)
 570{
 571        return q->in_flight[0] + q->in_flight[1];
 572}
 573
 574static inline void queue_flag_clear(unsigned int flag, struct request_queue *q)
 575{
 576        queue_lockdep_assert_held(q);
 577        __clear_bit(flag, &q->queue_flags);
 578}
 579
 580#define blk_queue_tagged(q)     test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
 581#define blk_queue_stopped(q)    test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
 582#define blk_queue_dying(q)      test_bit(QUEUE_FLAG_DYING, &(q)->queue_flags)
 583#define blk_queue_dead(q)       test_bit(QUEUE_FLAG_DEAD, &(q)->queue_flags)
 584#define blk_queue_bypass(q)     test_bit(QUEUE_FLAG_BYPASS, &(q)->queue_flags)
 585#define blk_queue_init_done(q)  test_bit(QUEUE_FLAG_INIT_DONE, &(q)->queue_flags)
 586#define blk_queue_nomerges(q)   test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags)
 587#define blk_queue_noxmerges(q)  \
 588        test_bit(QUEUE_FLAG_NOXMERGES, &(q)->queue_flags)
 589#define blk_queue_nonrot(q)     test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags)
 590#define blk_queue_io_stat(q)    test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags)
 591#define blk_queue_add_random(q) test_bit(QUEUE_FLAG_ADD_RANDOM, &(q)->queue_flags)
 592#define blk_queue_stackable(q)  \
 593        test_bit(QUEUE_FLAG_STACKABLE, &(q)->queue_flags)
 594#define blk_queue_discard(q)    test_bit(QUEUE_FLAG_DISCARD, &(q)->queue_flags)
 595#define blk_queue_secure_erase(q) \
 596        (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags))
 597#define blk_queue_dax(q)        test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags)
 598
 599#define blk_noretry_request(rq) \
 600        ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \
 601                             REQ_FAILFAST_DRIVER))
 602
 603#define blk_account_rq(rq) \
 604        (((rq)->cmd_flags & REQ_STARTED) && \
 605         ((rq)->cmd_type == REQ_TYPE_FS))
 606
 607#define blk_rq_cpu_valid(rq)    ((rq)->cpu != -1)
 608#define blk_bidi_rq(rq)         ((rq)->next_rq != NULL)
 609/* rq->queuelist of dequeued request must be list_empty() */
 610#define blk_queued_rq(rq)       (!list_empty(&(rq)->queuelist))
 611
 612#define list_entry_rq(ptr)      list_entry((ptr), struct request, queuelist)
 613
 614#define rq_data_dir(rq)         (op_is_write(req_op(rq)) ? WRITE : READ)
 615
 616/*
 617 * Driver can handle struct request, if it either has an old style
 618 * request_fn defined, or is blk-mq based.
 619 */
 620static inline bool queue_is_rq_based(struct request_queue *q)
 621{
 622        return q->request_fn || q->mq_ops;
 623}
 624
 625static inline unsigned int blk_queue_cluster(struct request_queue *q)
 626{
 627        return q->limits.cluster;
 628}
 629
 630/*
 631 * We regard a request as sync, if either a read or a sync write
 632 */
 633static inline bool rw_is_sync(int op, unsigned int rw_flags)
 634{
 635        return op == REQ_OP_READ || (rw_flags & REQ_SYNC);
 636}
 637
 638static inline bool rq_is_sync(struct request *rq)
 639{
 640        return rw_is_sync(req_op(rq), rq->cmd_flags);
 641}
 642
 643static inline bool blk_rl_full(struct request_list *rl, bool sync)
 644{
 645        unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL;
 646
 647        return rl->flags & flag;
 648}
 649
 650static inline void blk_set_rl_full(struct request_list *rl, bool sync)
 651{
 652        unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL;
 653
 654        rl->flags |= flag;
 655}
 656
 657static inline void blk_clear_rl_full(struct request_list *rl, bool sync)
 658{
 659        unsigned int flag = sync ? BLK_RL_SYNCFULL : BLK_RL_ASYNCFULL;
 660
 661        rl->flags &= ~flag;
 662}
 663
 664static inline bool rq_mergeable(struct request *rq)
 665{
 666        if (rq->cmd_type != REQ_TYPE_FS)
 667                return false;
 668
 669        if (req_op(rq) == REQ_OP_FLUSH)
 670                return false;
 671
 672        if (rq->cmd_flags & REQ_NOMERGE_FLAGS)
 673                return false;
 674
 675        return true;
 676}
 677
 678static inline bool blk_write_same_mergeable(struct bio *a, struct bio *b)
 679{
 680        if (bio_data(a) == bio_data(b))
 681                return true;
 682
 683        return false;
 684}
 685
 686/*
 687 * q->prep_rq_fn return values
 688 */
 689enum {
 690        BLKPREP_OK,             /* serve it */
 691        BLKPREP_KILL,           /* fatal error, kill, return -EIO */
 692        BLKPREP_DEFER,          /* leave on queue */
 693        BLKPREP_INVALID,        /* invalid command, kill, return -EREMOTEIO */
 694};
 695
 696extern unsigned long blk_max_low_pfn, blk_max_pfn;
 697
 698/*
 699 * standard bounce addresses:
 700 *
 701 * BLK_BOUNCE_HIGH      : bounce all highmem pages
 702 * BLK_BOUNCE_ANY       : don't bounce anything
 703 * BLK_BOUNCE_ISA       : bounce pages above ISA DMA boundary
 704 */
 705
 706#if BITS_PER_LONG == 32
 707#define BLK_BOUNCE_HIGH         ((u64)blk_max_low_pfn << PAGE_SHIFT)
 708#else
 709#define BLK_BOUNCE_HIGH         -1ULL
 710#endif
 711#define BLK_BOUNCE_ANY          (-1ULL)
 712#define BLK_BOUNCE_ISA          (DMA_BIT_MASK(24))
 713
 714/*
 715 * default timeout for SG_IO if none specified
 716 */
 717#define BLK_DEFAULT_SG_TIMEOUT  (60 * HZ)
 718#define BLK_MIN_SG_TIMEOUT      (7 * HZ)
 719
 720#ifdef CONFIG_BOUNCE
 721extern int init_emergency_isa_pool(void);
 722extern void blk_queue_bounce(struct request_queue *q, struct bio **bio);
 723#else
 724static inline int init_emergency_isa_pool(void)
 725{
 726        return 0;
 727}
 728static inline void blk_queue_bounce(struct request_queue *q, struct bio **bio)
 729{
 730}
 731#endif /* CONFIG_MMU */
 732
 733struct rq_map_data {
 734        struct page **pages;
 735        int page_order;
 736        int nr_entries;
 737        unsigned long offset;
 738        int null_mapped;
 739        int from_user;
 740};
 741
 742struct req_iterator {
 743        struct bvec_iter iter;
 744        struct bio *bio;
 745};
 746
 747/* This should not be used directly - use rq_for_each_segment */
 748#define for_each_bio(_bio)              \
 749        for (; _bio; _bio = _bio->bi_next)
 750#define __rq_for_each_bio(_bio, rq)     \
 751        if ((rq->bio))                  \
 752                for (_bio = (rq)->bio; _bio; _bio = _bio->bi_next)
 753
 754#define rq_for_each_segment(bvl, _rq, _iter)                    \
 755        __rq_for_each_bio(_iter.bio, _rq)                       \
 756                bio_for_each_segment(bvl, _iter.bio, _iter.iter)
 757
 758#define rq_iter_last(bvec, _iter)                               \
 759                (_iter.bio->bi_next == NULL &&                  \
 760                 bio_iter_last(bvec, _iter.iter))
 761
 762#ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE
 763# error "You should define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE for your platform"
 764#endif
 765#if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE
 766extern void rq_flush_dcache_pages(struct request *rq);
 767#else
 768static inline void rq_flush_dcache_pages(struct request *rq)
 769{
 770}
 771#endif
 772
 773#ifdef CONFIG_PRINTK
 774#define vfs_msg(sb, level, fmt, ...)                            \
 775        __vfs_msg(sb, level, fmt, ##__VA_ARGS__)
 776#else
 777#define vfs_msg(sb, level, fmt, ...)                            \
 778do {                                                            \
 779        no_printk(fmt, ##__VA_ARGS__);                          \
 780        __vfs_msg(sb, "", " ");                                 \
 781} while (0)
 782#endif
 783
 784extern int blk_register_queue(struct gendisk *disk);
 785extern void blk_unregister_queue(struct gendisk *disk);
 786extern blk_qc_t generic_make_request(struct bio *bio);
 787extern void blk_rq_init(struct request_queue *q, struct request *rq);
 788extern void blk_put_request(struct request *);
 789extern void __blk_put_request(struct request_queue *, struct request *);
 790extern struct request *blk_get_request(struct request_queue *, int, gfp_t);
 791extern void blk_rq_set_block_pc(struct request *);
 792extern void blk_requeue_request(struct request_queue *, struct request *);
 793extern void blk_add_request_payload(struct request *rq, struct page *page,
 794                int offset, unsigned int len);
 795extern int blk_lld_busy(struct request_queue *q);
 796extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src,
 797                             struct bio_set *bs, gfp_t gfp_mask,
 798                             int (*bio_ctr)(struct bio *, struct bio *, void *),
 799                             void *data);
 800extern void blk_rq_unprep_clone(struct request *rq);
 801extern int blk_insert_cloned_request(struct request_queue *q,
 802                                     struct request *rq);
 803extern int blk_rq_append_bio(struct request *rq, struct bio *bio);
 804extern void blk_delay_queue(struct request_queue *, unsigned long);
 805extern void blk_queue_split(struct request_queue *, struct bio **,
 806                            struct bio_set *);
 807extern void blk_recount_segments(struct request_queue *, struct bio *);
 808extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
 809extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
 810                              unsigned int, void __user *);
 811extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
 812                          unsigned int, void __user *);
 813extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t,
 814                         struct scsi_ioctl_command __user *);
 815
 816extern int blk_queue_enter(struct request_queue *q, bool nowait);
 817extern void blk_queue_exit(struct request_queue *q);
 818extern void blk_start_queue(struct request_queue *q);
 819extern void blk_start_queue_async(struct request_queue *q);
 820extern void blk_stop_queue(struct request_queue *q);
 821extern void blk_sync_queue(struct request_queue *q);
 822extern void __blk_stop_queue(struct request_queue *q);
 823extern void __blk_run_queue(struct request_queue *q);
 824extern void __blk_run_queue_uncond(struct request_queue *q);
 825extern void blk_run_queue(struct request_queue *);
 826extern void blk_run_queue_async(struct request_queue *q);
 827extern int blk_rq_map_user(struct request_queue *, struct request *,
 828                           struct rq_map_data *, void __user *, unsigned long,
 829                           gfp_t);
 830extern int blk_rq_unmap_user(struct bio *);
 831extern int blk_rq_map_kern(struct request_queue *, struct request *, void *, unsigned int, gfp_t);
 832extern int blk_rq_map_user_iov(struct request_queue *, struct request *,
 833                               struct rq_map_data *, const struct iov_iter *,
 834                               gfp_t);
 835extern int blk_execute_rq(struct request_queue *, struct gendisk *,
 836                          struct request *, int);
 837extern void blk_execute_rq_nowait(struct request_queue *, struct gendisk *,
 838                                  struct request *, int, rq_end_io_fn *);
 839
 840bool blk_poll(struct request_queue *q, blk_qc_t cookie);
 841
 842static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
 843{
 844        return bdev->bd_disk->queue;    /* this is never NULL */
 845}
 846
 847/*
 848 * blk_rq_pos()                 : the current sector
 849 * blk_rq_bytes()               : bytes left in the entire request
 850 * blk_rq_cur_bytes()           : bytes left in the current segment
 851 * blk_rq_err_bytes()           : bytes left till the next error boundary
 852 * blk_rq_sectors()             : sectors left in the entire request
 853 * blk_rq_cur_sectors()         : sectors left in the current segment
 854 */
 855static inline sector_t blk_rq_pos(const struct request *rq)
 856{
 857        return rq->__sector;
 858}
 859
 860static inline unsigned int blk_rq_bytes(const struct request *rq)
 861{
 862        return rq->__data_len;
 863}
 864
 865static inline int blk_rq_cur_bytes(const struct request *rq)
 866{
 867        return rq->bio ? bio_cur_bytes(rq->bio) : 0;
 868}
 869
 870extern unsigned int blk_rq_err_bytes(const struct request *rq);
 871
 872static inline unsigned int blk_rq_sectors(const struct request *rq)
 873{
 874        return blk_rq_bytes(rq) >> 9;
 875}
 876
 877static inline unsigned int blk_rq_cur_sectors(const struct request *rq)
 878{
 879        return blk_rq_cur_bytes(rq) >> 9;
 880}
 881
 882static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q,
 883                                                     int op)
 884{
 885        if (unlikely(op == REQ_OP_DISCARD || op == REQ_OP_SECURE_ERASE))
 886                return min(q->limits.max_discard_sectors, UINT_MAX >> 9);
 887
 888        if (unlikely(op == REQ_OP_WRITE_SAME))
 889                return q->limits.max_write_same_sectors;
 890
 891        return q->limits.max_sectors;
 892}
 893
 894/*
 895 * Return maximum size of a request at given offset. Only valid for
 896 * file system requests.
 897 */
 898static inline unsigned int blk_max_size_offset(struct request_queue *q,
 899                                               sector_t offset)
 900{
 901        if (!q->limits.chunk_sectors)
 902                return q->limits.max_sectors;
 903
 904        return q->limits.chunk_sectors -
 905                        (offset & (q->limits.chunk_sectors - 1));
 906}
 907
 908static inline unsigned int blk_rq_get_max_sectors(struct request *rq,
 909                                                  sector_t offset)
 910{
 911        struct request_queue *q = rq->q;
 912
 913        if (unlikely(rq->cmd_type != REQ_TYPE_FS))
 914                return q->limits.max_hw_sectors;
 915
 916        if (!q->limits.chunk_sectors ||
 917            req_op(rq) == REQ_OP_DISCARD ||
 918            req_op(rq) == REQ_OP_SECURE_ERASE)
 919                return blk_queue_get_max_sectors(q, req_op(rq));
 920
 921        return min(blk_max_size_offset(q, offset),
 922                        blk_queue_get_max_sectors(q, req_op(rq)));
 923}
 924
 925static inline unsigned int blk_rq_count_bios(struct request *rq)
 926{
 927        unsigned int nr_bios = 0;
 928        struct bio *bio;
 929
 930        __rq_for_each_bio(bio, rq)
 931                nr_bios++;
 932
 933        return nr_bios;
 934}
 935
 936/*
 937 * Request issue related functions.
 938 */
 939extern struct request *blk_peek_request(struct request_queue *q);
 940extern void blk_start_request(struct request *rq);
 941extern struct request *blk_fetch_request(struct request_queue *q);
 942
 943/*
 944 * Request completion related functions.
 945 *
 946 * blk_update_request() completes given number of bytes and updates
 947 * the request without completing it.
 948 *
 949 * blk_end_request() and friends.  __blk_end_request() must be called
 950 * with the request queue spinlock acquired.
 951 *
 952 * Several drivers define their own end_request and call
 953 * blk_end_request() for parts of the original function.
 954 * This prevents code duplication in drivers.
 955 */
 956extern bool blk_update_request(struct request *rq, int error,
 957                               unsigned int nr_bytes);
 958extern void blk_finish_request(struct request *rq, int error);
 959extern bool blk_end_request(struct request *rq, int error,
 960                            unsigned int nr_bytes);
 961extern void blk_end_request_all(struct request *rq, int error);
 962extern bool blk_end_request_cur(struct request *rq, int error);
 963extern bool blk_end_request_err(struct request *rq, int error);
 964extern bool __blk_end_request(struct request *rq, int error,
 965                              unsigned int nr_bytes);
 966extern void __blk_end_request_all(struct request *rq, int error);
 967extern bool __blk_end_request_cur(struct request *rq, int error);
 968extern bool __blk_end_request_err(struct request *rq, int error);
 969
 970extern void blk_complete_request(struct request *);
 971extern void __blk_complete_request(struct request *);
 972extern void blk_abort_request(struct request *);
 973extern void blk_unprep_request(struct request *);
 974
 975/*
 976 * Access functions for manipulating queue properties
 977 */
 978extern struct request_queue *blk_init_queue_node(request_fn_proc *rfn,
 979                                        spinlock_t *lock, int node_id);
 980extern struct request_queue *blk_init_queue(request_fn_proc *, spinlock_t *);
 981extern struct request_queue *blk_init_allocated_queue(struct request_queue *,
 982                                                      request_fn_proc *, spinlock_t *);
 983extern void blk_cleanup_queue(struct request_queue *);
 984extern void blk_queue_make_request(struct request_queue *, make_request_fn *);
 985extern void blk_queue_bounce_limit(struct request_queue *, u64);
 986extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int);
 987extern void blk_queue_chunk_sectors(struct request_queue *, unsigned int);
 988extern void blk_queue_max_segments(struct request_queue *, unsigned short);
 989extern void blk_queue_max_segment_size(struct request_queue *, unsigned int);
 990extern void blk_queue_max_discard_sectors(struct request_queue *q,
 991                unsigned int max_discard_sectors);
 992extern void blk_queue_max_write_same_sectors(struct request_queue *q,
 993                unsigned int max_write_same_sectors);
 994extern void blk_queue_logical_block_size(struct request_queue *, unsigned short);
 995extern void blk_queue_physical_block_size(struct request_queue *, unsigned int);
 996extern void blk_queue_alignment_offset(struct request_queue *q,
 997                                       unsigned int alignment);
 998extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min);
 999extern void blk_queue_io_min(struct request_queue *q, unsigned int min);
1000extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt);
1001extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt);
1002extern void blk_set_default_limits(struct queue_limits *lim);
1003extern void blk_set_stacking_limits(struct queue_limits *lim);
1004extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
1005                            sector_t offset);
1006extern int bdev_stack_limits(struct queue_limits *t, struct block_device *bdev,
1007                            sector_t offset);
1008extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
1009                              sector_t offset);
1010extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b);
1011extern void blk_queue_dma_pad(struct request_queue *, unsigned int);
1012extern void blk_queue_update_dma_pad(struct request_queue *, unsigned int);
1013extern int blk_queue_dma_drain(struct request_queue *q,
1014                               dma_drain_needed_fn *dma_drain_needed,
1015                               void *buf, unsigned int size);
1016extern void blk_queue_lld_busy(struct request_queue *q, lld_busy_fn *fn);
1017extern void blk_queue_segment_boundary(struct request_queue *, unsigned long);
1018extern void blk_queue_virt_boundary(struct request_queue *, unsigned long);
1019extern void blk_queue_prep_rq(struct request_queue *, prep_rq_fn *pfn);
1020extern void blk_queue_unprep_rq(struct request_queue *, unprep_rq_fn *ufn);
1021extern void blk_queue_dma_alignment(struct request_queue *, int);
1022extern void blk_queue_update_dma_alignment(struct request_queue *, int);
1023extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *);
1024extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *);
1025extern void blk_queue_rq_timeout(struct request_queue *, unsigned int);
1026extern void blk_queue_flush_queueable(struct request_queue *q, bool queueable);
1027extern void blk_queue_write_cache(struct request_queue *q, bool enabled, bool fua);
1028extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);
1029
1030extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *);
1031extern void blk_dump_rq_flags(struct request *, char *);
1032extern long nr_blockdev_pages(void);
1033
1034bool __must_check blk_get_queue(struct request_queue *);
1035struct request_queue *blk_alloc_queue(gfp_t);
1036struct request_queue *blk_alloc_queue_node(gfp_t, int);
1037extern void blk_put_queue(struct request_queue *);
1038extern void blk_set_queue_dying(struct request_queue *);
1039
1040/*
1041 * block layer runtime pm functions
1042 */
1043#ifdef CONFIG_PM
1044extern void blk_pm_runtime_init(struct request_queue *q, struct device *dev);
1045extern int blk_pre_runtime_suspend(struct request_queue *q);
1046extern void blk_post_runtime_suspend(struct request_queue *q, int err);
1047extern void blk_pre_runtime_resume(struct request_queue *q);
1048extern void blk_post_runtime_resume(struct request_queue *q, int err);
1049extern void blk_set_runtime_active(struct request_queue *q);
1050#else
1051static inline void blk_pm_runtime_init(struct request_queue *q,
1052        struct device *dev) {}
1053static inline int blk_pre_runtime_suspend(struct request_queue *q)
1054{
1055        return -ENOSYS;
1056}
1057static inline void blk_post_runtime_suspend(struct request_queue *q, int err) {}
1058static inline void blk_pre_runtime_resume(struct request_queue *q) {}
1059static inline void blk_post_runtime_resume(struct request_queue *q, int err) {}
1060extern inline void blk_set_runtime_active(struct request_queue *q) {}
1061#endif
1062
1063/*
1064 * blk_plug permits building a queue of related requests by holding the I/O
1065 * fragments for a short period. This allows merging of sequential requests
1066 * into single larger request. As the requests are moved from a per-task list to
1067 * the device's request_queue in a batch, this results in improved scalability
1068 * as the lock contention for request_queue lock is reduced.
1069 *
1070 * It is ok not to disable preemption when adding the request to the plug list
1071 * or when attempting a merge, because blk_schedule_flush_list() will only flush
1072 * the plug list when the task sleeps by itself. For details, please see
1073 * schedule() where blk_schedule_flush_plug() is called.
1074 */
1075struct blk_plug {
1076        struct list_head list; /* requests */
1077        struct list_head mq_list; /* blk-mq requests */
1078        struct list_head cb_list; /* md requires an unplug callback */
1079};
1080#define BLK_MAX_REQUEST_COUNT 16
1081
1082struct blk_plug_cb;
1083typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool);
1084struct blk_plug_cb {
1085        struct list_head list;
1086        blk_plug_cb_fn callback;
1087        void *data;
1088};
1089extern struct blk_plug_cb *blk_check_plugged(blk_plug_cb_fn unplug,
1090                                             void *data, int size);
1091extern void blk_start_plug(struct blk_plug *);
1092extern void blk_finish_plug(struct blk_plug *);
1093extern void blk_flush_plug_list(struct blk_plug *, bool);
1094
1095static inline void blk_flush_plug(struct task_struct *tsk)
1096{
1097        struct blk_plug *plug = tsk->plug;
1098
1099        if (plug)
1100                blk_flush_plug_list(plug, false);
1101}
1102
1103static inline void blk_schedule_flush_plug(struct task_struct *tsk)
1104{
1105        struct blk_plug *plug = tsk->plug;
1106
1107        if (plug)
1108                blk_flush_plug_list(plug, true);
1109}
1110
1111static inline bool blk_needs_flush_plug(struct task_struct *tsk)
1112{
1113        struct blk_plug *plug = tsk->plug;
1114
1115        return plug &&
1116                (!list_empty(&plug->list) ||
1117                 !list_empty(&plug->mq_list) ||
1118                 !list_empty(&plug->cb_list));
1119}
1120
1121/*
1122 * tag stuff
1123 */
1124extern int blk_queue_start_tag(struct request_queue *, struct request *);
1125extern struct request *blk_queue_find_tag(struct request_queue *, int);
1126extern void blk_queue_end_tag(struct request_queue *, struct request *);
1127extern int blk_queue_init_tags(struct request_queue *, int, struct blk_queue_tag *, int);
1128extern void blk_queue_free_tags(struct request_queue *);
1129extern int blk_queue_resize_tags(struct request_queue *, int);
1130extern void blk_queue_invalidate_tags(struct request_queue *);
1131extern struct blk_queue_tag *blk_init_tags(int, int);
1132extern void blk_free_tags(struct blk_queue_tag *);
1133
1134static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt,
1135                                                int tag)
1136{
1137        if (unlikely(bqt == NULL || tag >= bqt->real_max_depth))
1138                return NULL;
1139        return bqt->tag_index[tag];
1140}
1141
1142
1143#define BLKDEV_DISCARD_SECURE   (1 << 0)        /* issue a secure erase */
1144#define BLKDEV_DISCARD_ZERO     (1 << 1)        /* must reliably zero data */
1145
1146extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
1147extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
1148                sector_t nr_sects, gfp_t gfp_mask, unsigned long flags);
1149extern int __blkdev_issue_discard(struct block_device *bdev, sector_t sector,
1150                sector_t nr_sects, gfp_t gfp_mask, int flags,
1151                struct bio **biop);
1152extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
1153                sector_t nr_sects, gfp_t gfp_mask, struct page *page);
1154extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
1155                sector_t nr_sects, gfp_t gfp_mask, bool discard);
1156static inline int sb_issue_discard(struct super_block *sb, sector_t block,
1157                sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags)
1158{
1159        return blkdev_issue_discard(sb->s_bdev, block << (sb->s_blocksize_bits - 9),
1160                                    nr_blocks << (sb->s_blocksize_bits - 9),
1161                                    gfp_mask, flags);
1162}
1163static inline int sb_issue_zeroout(struct super_block *sb, sector_t block,
1164                sector_t nr_blocks, gfp_t gfp_mask)
1165{
1166        return blkdev_issue_zeroout(sb->s_bdev,
1167                                    block << (sb->s_blocksize_bits - 9),
1168                                    nr_blocks << (sb->s_blocksize_bits - 9),
1169                                    gfp_mask, true);
1170}
1171
1172extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm);
1173
1174enum blk_default_limits {
1175        BLK_MAX_SEGMENTS        = 128,
1176        BLK_SAFE_MAX_SECTORS    = 255,
1177        BLK_DEF_MAX_SECTORS     = 2560,
1178        BLK_MAX_SEGMENT_SIZE    = 65536,
1179        BLK_SEG_BOUNDARY_MASK   = 0xFFFFFFFFUL,
1180};
1181
1182#define blkdev_entry_to_request(entry) list_entry((entry), struct request, queuelist)
1183
1184static inline unsigned long queue_bounce_pfn(struct request_queue *q)
1185{
1186        return q->limits.bounce_pfn;
1187}
1188
1189static inline unsigned long queue_segment_boundary(struct request_queue *q)
1190{
1191        return q->limits.seg_boundary_mask;
1192}
1193
1194static inline unsigned long queue_virt_boundary(struct request_queue *q)
1195{
1196        return q->limits.virt_boundary_mask;
1197}
1198
1199static inline unsigned int queue_max_sectors(struct request_queue *q)
1200{
1201        return q->limits.max_sectors;
1202}
1203
1204static inline unsigned int queue_max_hw_sectors(struct request_queue *q)
1205{
1206        return q->limits.max_hw_sectors;
1207}
1208
1209static inline unsigned short queue_max_segments(struct request_queue *q)
1210{
1211        return q->limits.max_segments;
1212}
1213
1214static inline unsigned int queue_max_segment_size(struct request_queue *q)
1215{
1216        return q->limits.max_segment_size;
1217}
1218
1219static inline unsigned short queue_logical_block_size(struct request_queue *q)
1220{
1221        int retval = 512;
1222
1223        if (q && q->limits.logical_block_size)
1224                retval = q->limits.logical_block_size;
1225
1226        return retval;
1227}
1228
1229static inline unsigned short bdev_logical_block_size(struct block_device *bdev)
1230{
1231        return queue_logical_block_size(bdev_get_queue(bdev));
1232}
1233
1234static inline unsigned int queue_physical_block_size(struct request_queue *q)
1235{
1236        return q->limits.physical_block_size;
1237}
1238
1239static inline unsigned int bdev_physical_block_size(struct block_device *bdev)
1240{
1241        return queue_physical_block_size(bdev_get_queue(bdev));
1242}
1243
1244static inline unsigned int queue_io_min(struct request_queue *q)
1245{
1246        return q->limits.io_min;
1247}
1248
1249static inline int bdev_io_min(struct block_device *bdev)
1250{
1251        return queue_io_min(bdev_get_queue(bdev));
1252}
1253
1254static inline unsigned int queue_io_opt(struct request_queue *q)
1255{
1256        return q->limits.io_opt;
1257}
1258
1259static inline int bdev_io_opt(struct block_device *bdev)
1260{
1261        return queue_io_opt(bdev_get_queue(bdev));
1262}
1263
1264static inline int queue_alignment_offset(struct request_queue *q)
1265{
1266        if (q->limits.misaligned)
1267                return -1;
1268
1269        return q->limits.alignment_offset;
1270}
1271
1272static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t sector)
1273{
1274        unsigned int granularity = max(lim->physical_block_size, lim->io_min);
1275        unsigned int alignment = sector_div(sector, granularity >> 9) << 9;
1276
1277        return (granularity + lim->alignment_offset - alignment) % granularity;
1278}
1279
1280static inline int bdev_alignment_offset(struct block_device *bdev)
1281{
1282        struct request_queue *q = bdev_get_queue(bdev);
1283
1284        if (q->limits.misaligned)
1285                return -1;
1286
1287        if (bdev != bdev->bd_contains)
1288                return bdev->bd_part->alignment_offset;
1289
1290        return q->limits.alignment_offset;
1291}
1292
1293static inline int queue_discard_alignment(struct request_queue *q)
1294{
1295        if (q->limits.discard_misaligned)
1296                return -1;
1297
1298        return q->limits.discard_alignment;
1299}
1300
1301static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector_t sector)
1302{
1303        unsigned int alignment, granularity, offset;
1304
1305        if (!lim->max_discard_sectors)
1306                return 0;
1307
1308        /* Why are these in bytes, not sectors? */
1309        alignment = lim->discard_alignment >> 9;
1310        granularity = lim->discard_granularity >> 9;
1311        if (!granularity)
1312                return 0;
1313
1314        /* Offset of the partition start in 'granularity' sectors */
1315        offset = sector_div(sector, granularity);
1316
1317        /* And why do we do this modulus *again* in blkdev_issue_discard()? */
1318        offset = (granularity + alignment - offset) % granularity;
1319
1320        /* Turn it back into bytes, gaah */
1321        return offset << 9;
1322}
1323
1324static inline int bdev_discard_alignment(struct block_device *bdev)
1325{
1326        struct request_queue *q = bdev_get_queue(bdev);
1327
1328        if (bdev != bdev->bd_contains)
1329                return bdev->bd_part->discard_alignment;
1330
1331        return q->limits.discard_alignment;
1332}
1333
1334static inline unsigned int queue_discard_zeroes_data(struct request_queue *q)
1335{
1336        if (q->limits.max_discard_sectors && q->limits.discard_zeroes_data == 1)
1337                return 1;
1338
1339        return 0;
1340}
1341
1342static inline unsigned int bdev_discard_zeroes_data(struct block_device *bdev)
1343{
1344        return queue_discard_zeroes_data(bdev_get_queue(bdev));
1345}
1346
1347static inline unsigned int bdev_write_same(struct block_device *bdev)
1348{
1349        struct request_queue *q = bdev_get_queue(bdev);
1350
1351        if (q)
1352                return q->limits.max_write_same_sectors;
1353
1354        return 0;
1355}
1356
1357static inline int queue_dma_alignment(struct request_queue *q)
1358{
1359        return q ? q->dma_alignment : 511;
1360}
1361
1362static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr,
1363                                 unsigned int len)
1364{
1365        unsigned int alignment = queue_dma_alignment(q) | q->dma_pad_mask;
1366        return !(addr & alignment) && !(len & alignment);
1367}
1368
1369/* assumes size > 256 */
1370static inline unsigned int blksize_bits(unsigned int size)
1371{
1372        unsigned int bits = 8;
1373        do {
1374                bits++;
1375                size >>= 1;
1376        } while (size > 256);
1377        return bits;
1378}
1379
1380static inline unsigned int block_size(struct block_device *bdev)
1381{
1382        return bdev->bd_block_size;
1383}
1384
1385static inline bool queue_flush_queueable(struct request_queue *q)
1386{
1387        return !test_bit(QUEUE_FLAG_FLUSH_NQ, &q->queue_flags);
1388}
1389
1390typedef struct {struct page *v;} Sector;
1391
1392unsigned char *read_dev_sector(struct block_device *, sector_t, Sector *);
1393
1394static inline void put_dev_sector(Sector p)
1395{
1396        put_page(p.v);
1397}
1398
1399static inline bool __bvec_gap_to_prev(struct request_queue *q,
1400                                struct bio_vec *bprv, unsigned int offset)
1401{
1402        return offset ||
1403                ((bprv->bv_offset + bprv->bv_len) & queue_virt_boundary(q));
1404}
1405
1406/*
1407 * Check if adding a bio_vec after bprv with offset would create a gap in
1408 * the SG list. Most drivers don't care about this, but some do.
1409 */
1410static inline bool bvec_gap_to_prev(struct request_queue *q,
1411                                struct bio_vec *bprv, unsigned int offset)
1412{
1413        if (!queue_virt_boundary(q))
1414                return false;
1415        return __bvec_gap_to_prev(q, bprv, offset);
1416}
1417
1418static inline bool bio_will_gap(struct request_queue *q, struct bio *prev,
1419                         struct bio *next)
1420{
1421        if (bio_has_data(prev) && queue_virt_boundary(q)) {
1422                struct bio_vec pb, nb;
1423
1424                bio_get_last_bvec(prev, &pb);
1425                bio_get_first_bvec(next, &nb);
1426
1427                return __bvec_gap_to_prev(q, &pb, nb.bv_offset);
1428        }
1429
1430        return false;
1431}
1432
1433static inline bool req_gap_back_merge(struct request *req, struct bio *bio)
1434{
1435        return bio_will_gap(req->q, req->biotail, bio);
1436}
1437
1438static inline bool req_gap_front_merge(struct request *req, struct bio *bio)
1439{
1440        return bio_will_gap(req->q, bio, req->bio);
1441}
1442
1443int kblockd_schedule_work(struct work_struct *work);
1444int kblockd_schedule_work_on(int cpu, struct work_struct *work);
1445int kblockd_schedule_delayed_work(struct delayed_work *dwork, unsigned long delay);
1446int kblockd_schedule_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay);
1447
1448#ifdef CONFIG_BLK_CGROUP
1449/*
1450 * This should not be using sched_clock(). A real patch is in progress
1451 * to fix this up, until that is in place we need to disable preemption
1452 * around sched_clock() in this function and set_io_start_time_ns().
1453 */
1454static inline void set_start_time_ns(struct request *req)
1455{
1456        preempt_disable();
1457        req->start_time_ns = sched_clock();
1458        preempt_enable();
1459}
1460
1461static inline void set_io_start_time_ns(struct request *req)
1462{
1463        preempt_disable();
1464        req->io_start_time_ns = sched_clock();
1465        preempt_enable();
1466}
1467
1468static inline uint64_t rq_start_time_ns(struct request *req)
1469{
1470        return req->start_time_ns;
1471}
1472
1473static inline uint64_t rq_io_start_time_ns(struct request *req)
1474{
1475        return req->io_start_time_ns;
1476}
1477#else
1478static inline void set_start_time_ns(struct request *req) {}
1479static inline void set_io_start_time_ns(struct request *req) {}
1480static inline uint64_t rq_start_time_ns(struct request *req)
1481{
1482        return 0;
1483}
1484static inline uint64_t rq_io_start_time_ns(struct request *req)
1485{
1486        return 0;
1487}
1488#endif
1489
1490#define MODULE_ALIAS_BLOCKDEV(major,minor) \
1491        MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))
1492#define MODULE_ALIAS_BLOCKDEV_MAJOR(major) \
1493        MODULE_ALIAS("block-major-" __stringify(major) "-*")
1494
1495#if defined(CONFIG_BLK_DEV_INTEGRITY)
1496
1497enum blk_integrity_flags {
1498        BLK_INTEGRITY_VERIFY            = 1 << 0,
1499        BLK_INTEGRITY_GENERATE          = 1 << 1,
1500        BLK_INTEGRITY_DEVICE_CAPABLE    = 1 << 2,
1501        BLK_INTEGRITY_IP_CHECKSUM       = 1 << 3,
1502};
1503
1504struct blk_integrity_iter {
1505        void                    *prot_buf;
1506        void                    *data_buf;
1507        sector_t                seed;
1508        unsigned int            data_size;
1509        unsigned short          interval;
1510        const char              *disk_name;
1511};
1512
1513typedef int (integrity_processing_fn) (struct blk_integrity_iter *);
1514
1515struct blk_integrity_profile {
1516        integrity_processing_fn         *generate_fn;
1517        integrity_processing_fn         *verify_fn;
1518        const char                      *name;
1519};
1520
1521extern void blk_integrity_register(struct gendisk *, struct blk_integrity *);
1522extern void blk_integrity_unregister(struct gendisk *);
1523extern int blk_integrity_compare(struct gendisk *, struct gendisk *);
1524extern int blk_rq_map_integrity_sg(struct request_queue *, struct bio *,
1525                                   struct scatterlist *);
1526extern int blk_rq_count_integrity_sg(struct request_queue *, struct bio *);
1527extern bool blk_integrity_merge_rq(struct request_queue *, struct request *,
1528                                   struct request *);
1529extern bool blk_integrity_merge_bio(struct request_queue *, struct request *,
1530                                    struct bio *);
1531
1532static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk)
1533{
1534        struct blk_integrity *bi = &disk->queue->integrity;
1535
1536        if (!bi->profile)
1537                return NULL;
1538
1539        return bi;
1540}
1541
1542static inline
1543struct blk_integrity *bdev_get_integrity(struct block_device *bdev)
1544{
1545        return blk_get_integrity(bdev->bd_disk);
1546}
1547
1548static inline bool blk_integrity_rq(struct request *rq)
1549{
1550        return rq->cmd_flags & REQ_INTEGRITY;
1551}
1552
1553static inline void blk_queue_max_integrity_segments(struct request_queue *q,
1554                                                    unsigned int segs)
1555{
1556        q->limits.max_integrity_segments = segs;
1557}
1558
1559static inline unsigned short
1560queue_max_integrity_segments(struct request_queue *q)
1561{
1562        return q->limits.max_integrity_segments;
1563}
1564
1565static inline bool integrity_req_gap_back_merge(struct request *req,
1566                                                struct bio *next)
1567{
1568        struct bio_integrity_payload *bip = bio_integrity(req->bio);
1569        struct bio_integrity_payload *bip_next = bio_integrity(next);
1570
1571        return bvec_gap_to_prev(req->q, &bip->bip_vec[bip->bip_vcnt - 1],
1572                                bip_next->bip_vec[0].bv_offset);
1573}
1574
1575static inline bool integrity_req_gap_front_merge(struct request *req,
1576                                                 struct bio *bio)
1577{
1578        struct bio_integrity_payload *bip = bio_integrity(bio);
1579        struct bio_integrity_payload *bip_next = bio_integrity(req->bio);
1580
1581        return bvec_gap_to_prev(req->q, &bip->bip_vec[bip->bip_vcnt - 1],
1582                                bip_next->bip_vec[0].bv_offset);
1583}
1584
1585#else /* CONFIG_BLK_DEV_INTEGRITY */
1586
1587struct bio;
1588struct block_device;
1589struct gendisk;
1590struct blk_integrity;
1591
1592static inline int blk_integrity_rq(struct request *rq)
1593{
1594        return 0;
1595}
1596static inline int blk_rq_count_integrity_sg(struct request_queue *q,
1597                                            struct bio *b)
1598{
1599        return 0;
1600}
1601static inline int blk_rq_map_integrity_sg(struct request_queue *q,
1602                                          struct bio *b,
1603                                          struct scatterlist *s)
1604{
1605        return 0;
1606}
1607static inline struct blk_integrity *bdev_get_integrity(struct block_device *b)
1608{
1609        return NULL;
1610}
1611static inline struct blk_integrity *blk_get_integrity(struct gendisk *disk)
1612{
1613        return NULL;
1614}
1615static inline int blk_integrity_compare(struct gendisk *a, struct gendisk *b)
1616{
1617        return 0;
1618}
1619static inline void blk_integrity_register(struct gendisk *d,
1620                                         struct blk_integrity *b)
1621{
1622}
1623static inline void blk_integrity_unregister(struct gendisk *d)
1624{
1625}
1626static inline void blk_queue_max_integrity_segments(struct request_queue *q,
1627                                                    unsigned int segs)
1628{
1629}
1630static inline unsigned short queue_max_integrity_segments(struct request_queue *q)
1631{
1632        return 0;
1633}
1634static inline bool blk_integrity_merge_rq(struct request_queue *rq,
1635                                          struct request *r1,
1636                                          struct request *r2)
1637{
1638        return true;
1639}
1640static inline bool blk_integrity_merge_bio(struct request_queue *rq,
1641                                           struct request *r,
1642                                           struct bio *b)
1643{
1644        return true;
1645}
1646
1647static inline bool integrity_req_gap_back_merge(struct request *req,
1648                                                struct bio *next)
1649{
1650        return false;
1651}
1652static inline bool integrity_req_gap_front_merge(struct request *req,
1653                                                 struct bio *bio)
1654{
1655        return false;
1656}
1657
1658#endif /* CONFIG_BLK_DEV_INTEGRITY */
1659
1660/**
1661 * struct blk_dax_ctl - control and output parameters for ->direct_access
1662 * @sector: (input) offset relative to a block_device
1663 * @addr: (output) kernel virtual address for @sector populated by driver
1664 * @pfn: (output) page frame number for @addr populated by driver
1665 * @size: (input) number of bytes requested
1666 */
1667struct blk_dax_ctl {
1668        sector_t sector;
1669        void *addr;
1670        long size;
1671        pfn_t pfn;
1672};
1673
1674struct block_device_operations {
1675        int (*open) (struct block_device *, fmode_t);
1676        void (*release) (struct gendisk *, fmode_t);
1677        int (*rw_page)(struct block_device *, sector_t, struct page *, bool);
1678        int (*ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
1679        int (*compat_ioctl) (struct block_device *, fmode_t, unsigned, unsigned long);
1680        long (*direct_access)(struct block_device *, sector_t, void **, pfn_t *,
1681                        long);
1682        unsigned int (*check_events) (struct gendisk *disk,
1683                                      unsigned int clearing);
1684        /* ->media_changed() is DEPRECATED, use ->check_events() instead */
1685        int (*media_changed) (struct gendisk *);
1686        void (*unlock_native_capacity) (struct gendisk *);
1687        int (*revalidate_disk) (struct gendisk *);
1688        int (*getgeo)(struct block_device *, struct hd_geometry *);
1689        /* this callback is with swap_lock and sometimes page table lock held */
1690        void (*swap_slot_free_notify) (struct block_device *, unsigned long);
1691        struct module *owner;
1692        const struct pr_ops *pr_ops;
1693};
1694
1695extern int __blkdev_driver_ioctl(struct block_device *, fmode_t, unsigned int,
1696                                 unsigned long);
1697extern int bdev_read_page(struct block_device *, sector_t, struct page *);
1698extern int bdev_write_page(struct block_device *, sector_t, struct page *,
1699                                                struct writeback_control *);
1700extern long bdev_direct_access(struct block_device *, struct blk_dax_ctl *);
1701extern int bdev_dax_supported(struct super_block *, int);
1702extern bool bdev_dax_capable(struct block_device *);
1703#else /* CONFIG_BLOCK */
1704
1705struct block_device;
1706
1707/*
1708 * stubs for when the block layer is configured out
1709 */
1710#define buffer_heads_over_limit 0
1711
1712static inline long nr_blockdev_pages(void)
1713{
1714        return 0;
1715}
1716
1717struct blk_plug {
1718};
1719
1720static inline void blk_start_plug(struct blk_plug *plug)
1721{
1722}
1723
1724static inline void blk_finish_plug(struct blk_plug *plug)
1725{
1726}
1727
1728static inline void blk_flush_plug(struct task_struct *task)
1729{
1730}
1731
1732static inline void blk_schedule_flush_plug(struct task_struct *task)
1733{
1734}
1735
1736
1737static inline bool blk_needs_flush_plug(struct task_struct *tsk)
1738{
1739        return false;
1740}
1741
1742static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
1743                                     sector_t *error_sector)
1744{
1745        return 0;
1746}
1747
1748#endif /* CONFIG_BLOCK */
1749
1750#endif
1751