block: remove a superflous ifdef in blkdev.h
[linux-2.6-microblaze.git] / include / linux / blkdev.h
index bb6e3c3..270cd0c 100644 (file)
@@ -148,6 +148,7 @@ struct gendisk {
 #define GD_NATIVE_CAPACITY             3
 #define GD_ADDED                       4
 #define GD_SUPPRESS_PART_SCAN          5
+#define GD_OWNS_QUEUE                  6
 
        struct mutex open_mutex;        /* open/close mutex */
        unsigned open_partitions;       /* number of open partitions */
@@ -170,6 +171,12 @@ struct gendisk {
        struct badblocks *bb;
        struct lockdep_map lockdep_map;
        u64 diskseq;
+
+       /*
+        * Independent sector access ranges. This is always NULL for
+        * devices that do not have multiple independent access ranges.
+        */
+       struct blk_independent_access_ranges *ia_ranges;
 };
 
 static inline bool disk_live(struct gendisk *disk)
@@ -342,7 +349,6 @@ static inline int blkdev_zone_mgmt_ioctl(struct block_device *bdev,
  */
 struct blk_independent_access_range {
        struct kobject          kobj;
-       struct request_queue    *queue;
        sector_t                sector;
        sector_t                nr_sectors;
 };
@@ -425,6 +431,11 @@ struct request_queue {
        unsigned long           nr_requests;    /* Max # of requests */
 
        unsigned int            dma_pad_mask;
+       /*
+        * Drivers that set dma_alignment to less than 511 must be prepared to
+        * handle individual bvec's that are not a multiple of a SECTOR_SIZE
+        * due to possible offsets.
+        */
        unsigned int            dma_alignment;
 
 #ifdef CONFIG_BLK_INLINE_ENCRYPTION
@@ -482,7 +493,6 @@ struct request_queue {
 #endif /* CONFIG_BLK_DEV_ZONED */
 
        int                     node;
-       struct mutex            debugfs_mutex;
 #ifdef CONFIG_BLK_DEV_IO_TRACE
        struct blk_trace __rcu  *blk_trace;
 #endif
@@ -526,19 +536,14 @@ struct request_queue {
        struct bio_set          bio_split;
 
        struct dentry           *debugfs_dir;
-
-#ifdef CONFIG_BLK_DEBUG_FS
        struct dentry           *sched_debugfs_dir;
        struct dentry           *rqos_debugfs_dir;
-#endif
-
-       bool                    mq_sysfs_init_done;
-
        /*
-        * Independent sector access ranges. This is always NULL for
-        * devices that do not have multiple independent access ranges.
+        * Serializes all debugfs metadata operations using the above dentries.
         */
-       struct blk_independent_access_ranges *ia_ranges;
+       struct mutex            debugfs_mutex;
+
+       bool                    mq_sysfs_init_done;
 
        /**
         * @srcu: Sleepable RCU. Use as lock when type of the request queue
@@ -560,7 +565,6 @@ struct request_queue {
 #define QUEUE_FLAG_NOXMERGES   9       /* No extended merges */
 #define QUEUE_FLAG_ADD_RANDOM  10      /* Contributes to random pool */
 #define QUEUE_FLAG_SAME_FORCE  12      /* force complete on same CPU */
-#define QUEUE_FLAG_DEAD                13      /* queue tear-down finished */
 #define QUEUE_FLAG_INIT_DONE   14      /* queue is initialized */
 #define QUEUE_FLAG_STABLE_WRITES 15    /* don't modify blks until WB is done */
 #define QUEUE_FLAG_POLL                16      /* IO polling enabled if set */
@@ -588,7 +592,6 @@ bool blk_queue_flag_test_and_set(unsigned int flag, struct request_queue *q);
 #define blk_queue_stopped(q)   test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
 #define blk_queue_dying(q)     test_bit(QUEUE_FLAG_DYING, &(q)->queue_flags)
 #define blk_queue_has_srcu(q)  test_bit(QUEUE_FLAG_HAS_SRCU, &(q)->queue_flags)
-#define blk_queue_dead(q)      test_bit(QUEUE_FLAG_DEAD, &(q)->queue_flags)
 #define blk_queue_init_done(q) test_bit(QUEUE_FLAG_INIT_DONE, &(q)->queue_flags)
 #define blk_queue_nomerges(q)  test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags)
 #define blk_queue_noxmerges(q) \
@@ -813,8 +816,6 @@ static inline u64 sb_bdev_nr_blocks(struct super_block *sb)
 
 int bdev_disk_changed(struct gendisk *disk, bool invalidate);
 
-struct gendisk *__alloc_disk_node(struct request_queue *q, int node_id,
-               struct lock_class_key *lkclass);
 void put_disk(struct gendisk *disk);
 struct gendisk *__blk_alloc_disk(int node, struct lock_class_key *lkclass);
 
@@ -833,7 +834,6 @@ struct gendisk *__blk_alloc_disk(int node, struct lock_class_key *lkclass);
                                                                        \
        __blk_alloc_disk(node_id, &__key);                              \
 })
-void blk_cleanup_disk(struct gendisk *disk);
 
 int __register_blkdev(unsigned int major, const char *name,
                void (*probe)(dev_t devt));
@@ -899,8 +899,6 @@ static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
        return bdev->bd_queue;  /* this is never NULL */
 }
 
-#ifdef CONFIG_BLK_DEV_ZONED
-
 /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */
 const char *blk_zone_cond_str(enum blk_zone_cond zone_cond);
 
@@ -915,48 +913,21 @@ static inline unsigned int bio_zone_is_seq(struct bio *bio)
        return blk_queue_zone_is_seq(bdev_get_queue(bio->bi_bdev),
                                     bio->bi_iter.bi_sector);
 }
-#endif /* CONFIG_BLK_DEV_ZONED */
-
-static inline unsigned int blk_queue_get_max_sectors(struct request_queue *q,
-                                                    int op)
-{
-       if (unlikely(op == REQ_OP_DISCARD || op == REQ_OP_SECURE_ERASE))
-               return min(q->limits.max_discard_sectors,
-                          UINT_MAX >> SECTOR_SHIFT);
-
-       if (unlikely(op == REQ_OP_WRITE_ZEROES))
-               return q->limits.max_write_zeroes_sectors;
-
-       return q->limits.max_sectors;
-}
 
 /*
- * Return maximum size of a request at given offset. Only valid for
- * file system requests.
+ * Return how much of the chunk is left to be used for I/O at a given offset.
  */
-static inline unsigned int blk_max_size_offset(struct request_queue *q,
-                                              sector_t offset,
-                                              unsigned int chunk_sectors)
-{
-       if (!chunk_sectors) {
-               if (q->limits.chunk_sectors)
-                       chunk_sectors = q->limits.chunk_sectors;
-               else
-                       return q->limits.max_sectors;
-       }
-
-       if (likely(is_power_of_2(chunk_sectors)))
-               chunk_sectors -= offset & (chunk_sectors - 1);
-       else
-               chunk_sectors -= sector_div(offset, chunk_sectors);
-
-       return min(q->limits.max_sectors, chunk_sectors);
+static inline unsigned int blk_chunk_sectors_left(sector_t offset,
+               unsigned int chunk_sectors)
+{
+       if (unlikely(!is_power_of_2(chunk_sectors)))
+               return chunk_sectors - sector_div(offset, chunk_sectors);
+       return chunk_sectors - (offset & (chunk_sectors - 1));
 }
 
 /*
  * Access functions for manipulating queue properties
  */
-extern void blk_cleanup_queue(struct request_queue *);
 void blk_queue_bounce_limit(struct request_queue *q, enum blk_bounce limit);
 extern void blk_queue_max_hw_sectors(struct request_queue *, unsigned int);
 extern void blk_queue_chunk_sectors(struct request_queue *, unsigned int);
@@ -1366,6 +1337,18 @@ static inline int queue_dma_alignment(const struct request_queue *q)
        return q ? q->dma_alignment : 511;
 }
 
+static inline unsigned int bdev_dma_alignment(struct block_device *bdev)
+{
+       return queue_dma_alignment(bdev_get_queue(bdev));
+}
+
+static inline bool bdev_iter_is_aligned(struct block_device *bdev,
+                                       struct iov_iter *iter)
+{
+       return iov_iter_is_aligned(iter, bdev_dma_alignment(bdev),
+                                  bdev_logical_block_size(bdev) - 1);
+}
+
 static inline int blk_rq_aligned(struct request_queue *q, unsigned long addr,
                                 unsigned int len)
 {