block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
authorBart Van Assche <bart.vanassche@wdc.com>
Wed, 14 Mar 2018 22:48:06 +0000 (15:48 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Sep 2020 17:03:12 +0000 (19:03 +0200)
commit 233bde21aa43516baa013ef7ac33f3427056db3e upstream.

It happens often while I'm preparing a patch for a block driver that
I'm wondering: is a definition of SECTOR_SIZE and/or SECTOR_SHIFT
available for this driver? Do I have to introduce definitions of these
constants before I can use these constants? To avoid this confusion,
move the existing definitions of SECTOR_SIZE and SECTOR_SHIFT into the
<linux/blkdev.h> header file such that these become available for all
block drivers. Make the SECTOR_SIZE definition in the uapi msdos_fs.h
header file conditional to avoid that including that header file after
<linux/blkdev.h> causes the compiler to complain about a SECTOR_SIZE
redefinition.

Note: the SECTOR_SIZE / SECTOR_SHIFT / SECTOR_BITS definitions have
not been removed from uapi header files nor from NAND drivers in
which these constants are used for another purpose than converting
block layer offsets and sizes into a number of sectors.

Cc: David S. Miller <davem@davemloft.net>
Cc: Mike Snitzer <snitzer@redhat.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13 files changed:
arch/xtensa/platforms/iss/simdisk.c
drivers/block/brd.c
drivers/block/null_blk.c
drivers/block/rbd.c
drivers/block/zram/zram_drv.h
drivers/ide/ide-cd.c
drivers/ide/ide-cd.h
drivers/nvdimm/nd.h
drivers/scsi/gdth.h
include/linux/blkdev.h
include/linux/device-mapper.h
include/linux/ide.h
include/uapi/linux/msdos_fs.h

index c45b90bb93393bf58c20ab279bc8e63981b7dc02..c75e75932807e0654a6d90c349ef9cee392714c6 100644 (file)
@@ -21,7 +21,6 @@
 #include <platform/simcall.h>
 
 #define SIMDISK_MAJOR 240
-#define SECTOR_SHIFT 9
 #define SIMDISK_MINORS 1
 #define MAX_SIMDISK_COUNT 10
 
index 0129b1921cb364b8e19863316af109403d86fc9e..78287f029cf0791006121fdce9338c4c15677307 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <linux/uaccess.h>
 
-#define SECTOR_SHIFT           9
 #define PAGE_SECTORS_SHIFT     (PAGE_SHIFT - SECTOR_SHIFT)
 #define PAGE_SECTORS           (1 << PAGE_SECTORS_SHIFT)
 
index ec670a1b7e02f89b0f20b1547f0b9df9076dc518..b499e72b2847e8f137ea2aa0b3f58fc566d8c04e 100644 (file)
 #include <linux/configfs.h>
 #include <linux/badblocks.h>
 
-#define SECTOR_SHIFT           9
 #define PAGE_SECTORS_SHIFT     (PAGE_SHIFT - SECTOR_SHIFT)
 #define PAGE_SECTORS           (1 << PAGE_SECTORS_SHIFT)
-#define SECTOR_SIZE            (1 << SECTOR_SHIFT)
 #define SECTOR_MASK            (PAGE_SECTORS - 1)
 
 #define FREE_BATCH             16
index 557cf52f674b5e3ffbe723bf7acf8a6b8ca7a08a..b9b20e1fa8c8846cafaeda255809a61028f691bf 100644 (file)
 
 #define RBD_DEBUG      /* Activate rbd_assert() calls */
 
-/*
- * The basic unit of block I/O is a sector.  It is interpreted in a
- * number of contexts in Linux (blk, bio, genhd), but the default is
- * universally 512 bytes.  These symbols are just slightly more
- * meaningful than the bare numbers they represent.
- */
-#define        SECTOR_SHIFT    9
-#define        SECTOR_SIZE     (1ULL << SECTOR_SHIFT)
-
 /*
  * Increment the given counter and return its updated value.
  * If the counter is already 0 it will not be incremented.
index 31762db861e38486a86c9ea060ec841f90f142df..1e9bf65c0bfba5b4f241328e71239cfced3b688b 100644 (file)
@@ -37,7 +37,6 @@ static const size_t max_zpage_size = PAGE_SIZE / 4 * 3;
 
 /*-- End of configurable params */
 
-#define SECTOR_SHIFT           9
 #define SECTORS_PER_PAGE_SHIFT (PAGE_SHIFT - SECTOR_SHIFT)
 #define SECTORS_PER_PAGE       (1 << SECTORS_PER_PAGE_SHIFT)
 #define ZRAM_LOGICAL_BLOCK_SHIFT 12
index 4de45db76756c6edd4828041a84c3b0bf98415e8..5aed1de845d0d012275920ce47f4f2a8681630ec 100644 (file)
@@ -712,7 +712,7 @@ static ide_startstop_t cdrom_start_rw(ide_drive_t *drive, struct request *rq)
        struct request_queue *q = drive->queue;
        int write = rq_data_dir(rq) == WRITE;
        unsigned short sectors_per_frame =
-               queue_logical_block_size(q) >> SECTOR_BITS;
+               queue_logical_block_size(q) >> SECTOR_SHIFT;
 
        ide_debug_log(IDE_DBG_RQ, "rq->cmd[0]: 0x%x, rq->cmd_flags: 0x%x, "
                                  "secs_per_frame: %u",
@@ -919,7 +919,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
         * end up being bogus.
         */
        blocklen = be32_to_cpu(capbuf.blocklen);
-       blocklen = (blocklen >> SECTOR_BITS) << SECTOR_BITS;
+       blocklen = (blocklen >> SECTOR_SHIFT) << SECTOR_SHIFT;
        switch (blocklen) {
        case 512:
        case 1024:
@@ -935,7 +935,7 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity,
        }
 
        *capacity = 1 + be32_to_cpu(capbuf.lba);
-       *sectors_per_frame = blocklen >> SECTOR_BITS;
+       *sectors_per_frame = blocklen >> SECTOR_SHIFT;
 
        ide_debug_log(IDE_DBG_PROBE, "cap: %lu, sectors_per_frame: %lu",
                                     *capacity, *sectors_per_frame);
@@ -1012,7 +1012,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
        drive->probed_capacity = toc->capacity * sectors_per_frame;
 
        blk_queue_logical_block_size(drive->queue,
-                                    sectors_per_frame << SECTOR_BITS);
+                                    sectors_per_frame << SECTOR_SHIFT);
 
        /* first read just the header, so we know how long the TOC is */
        stat = cdrom_read_tocentry(drive, 0, 1, 0, (char *) &toc->hdr,
index 264e822eba58a1a9b8f7852448688d685e20411c..04f0f310a85661fa95af199a429bf9758409b713 100644 (file)
 
 /************************************************************************/
 
-#define SECTOR_BITS            9
-#ifndef SECTOR_SIZE
-#define SECTOR_SIZE            (1 << SECTOR_BITS)
-#endif
-#define SECTORS_PER_FRAME      (CD_FRAMESIZE >> SECTOR_BITS)
+#define SECTORS_PER_FRAME      (CD_FRAMESIZE >> SECTOR_SHIFT)
 #define SECTOR_BUFFER_SIZE     (CD_FRAMESIZE * 32)
 
 /* Capabilities Page size including 8 bytes of Mode Page Header */
index e3f060f0b83ea27646515ba09b788593b9ea8b3a..dd3cb53846290f6ef58ece490aca2434d77a4d79 100644 (file)
@@ -29,7 +29,6 @@ enum {
         * BTT instance
         */
        ND_MAX_LANES = 256,
-       SECTOR_SHIFT = 9,
        INT_LBASIZE_ALIGNMENT = 64,
        NVDIMM_IO_ATOMIC = 1,
 };
index 95fc720c1b30450a3f2696f1cecebbfe8b107830..e6e5ccb1e0f38c95484fd51803a0300ddeecc1b8 100644 (file)
 #define MSG_SIZE        34                      /* size of message structure */
 #define MSG_REQUEST     0                       /* async. event: message */
 
-/* cacheservice defines */
-#define SECTOR_SIZE     0x200                   /* always 512 bytes per sec. */
-
 /* DPMEM constants */
 #define DPMEM_MAGIC     0xC0FFEE11
 #define IC_HEADER_BYTES 48
index 5999d8031675940bc69dc8ffa036455715d2417e..1c3d774d3c8391340db972532ab735357c42fe14 100644 (file)
@@ -1015,6 +1015,19 @@ static inline struct request_queue *bdev_get_queue(struct block_device *bdev)
        return bdev->bd_disk->queue;    /* this is never NULL */
 }
 
+/*
+ * The basic unit of block I/O is a sector. It is used in a number of contexts
+ * in Linux (blk, bio, genhd). The size of one sector is 512 = 2**9
+ * bytes. Variables of type sector_t represent an offset or size that is a
+ * multiple of 512 bytes. Hence these two constants.
+ */
+#ifndef SECTOR_SHIFT
+#define SECTOR_SHIFT 9
+#endif
+#ifndef SECTOR_SIZE
+#define SECTOR_SIZE (1 << SECTOR_SHIFT)
+#endif
+
 /*
  * blk_rq_pos()                        : the current sector
  * blk_rq_bytes()              : bytes left in the entire request
@@ -1042,12 +1055,12 @@ extern unsigned int blk_rq_err_bytes(const struct request *rq);
 
 static inline unsigned int blk_rq_sectors(const struct request *rq)
 {
-       return blk_rq_bytes(rq) >> 9;
+       return blk_rq_bytes(rq) >> SECTOR_SHIFT;
 }
 
 static inline unsigned int blk_rq_cur_sectors(const struct request *rq)
 {
-       return blk_rq_cur_bytes(rq) >> 9;
+       return blk_rq_cur_bytes(rq) >> SECTOR_SHIFT;
 }
 
 /*
@@ -1067,7 +1080,8 @@ 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 >> 9);
+               return min(q->limits.max_discard_sectors,
+                          UINT_MAX >> SECTOR_SHIFT);
 
        if (unlikely(op == REQ_OP_WRITE_SAME))
                return q->limits.max_write_same_sectors;
@@ -1376,16 +1390,21 @@ extern int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
 static inline int sb_issue_discard(struct super_block *sb, sector_t block,
                sector_t nr_blocks, gfp_t gfp_mask, unsigned long flags)
 {
-       return blkdev_issue_discard(sb->s_bdev, block << (sb->s_blocksize_bits - 9),
-                                   nr_blocks << (sb->s_blocksize_bits - 9),
+       return blkdev_issue_discard(sb->s_bdev,
+                                   block << (sb->s_blocksize_bits -
+                                             SECTOR_SHIFT),
+                                   nr_blocks << (sb->s_blocksize_bits -
+                                                 SECTOR_SHIFT),
                                    gfp_mask, flags);
 }
 static inline int sb_issue_zeroout(struct super_block *sb, sector_t block,
                sector_t nr_blocks, gfp_t gfp_mask)
 {
        return blkdev_issue_zeroout(sb->s_bdev,
-                                   block << (sb->s_blocksize_bits - 9),
-                                   nr_blocks << (sb->s_blocksize_bits - 9),
+                                   block << (sb->s_blocksize_bits -
+                                             SECTOR_SHIFT),
+                                   nr_blocks << (sb->s_blocksize_bits -
+                                                 SECTOR_SHIFT),
                                    gfp_mask, 0);
 }
 
@@ -1492,7 +1511,8 @@ static inline int queue_alignment_offset(struct request_queue *q)
 static inline int queue_limit_alignment_offset(struct queue_limits *lim, sector_t sector)
 {
        unsigned int granularity = max(lim->physical_block_size, lim->io_min);
-       unsigned int alignment = sector_div(sector, granularity >> 9) << 9;
+       unsigned int alignment = sector_div(sector, granularity >> SECTOR_SHIFT)
+               << SECTOR_SHIFT;
 
        return (granularity + lim->alignment_offset - alignment) % granularity;
 }
@@ -1526,8 +1546,8 @@ static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector
                return 0;
 
        /* Why are these in bytes, not sectors? */
-       alignment = lim->discard_alignment >> 9;
-       granularity = lim->discard_granularity >> 9;
+       alignment = lim->discard_alignment >> SECTOR_SHIFT;
+       granularity = lim->discard_granularity >> SECTOR_SHIFT;
        if (!granularity)
                return 0;
 
@@ -1538,7 +1558,7 @@ static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector
        offset = (granularity + alignment - offset) % granularity;
 
        /* Turn it back into bytes, gaah */
-       return offset << 9;
+       return offset << SECTOR_SHIFT;
 }
 
 static inline int bdev_discard_alignment(struct block_device *bdev)
index 91a063a1f3b3719844e1c46e28546a86b2f048a6..5d067136fc27df7c9b471790af6256b80a8ccc3d 100644 (file)
@@ -577,8 +577,6 @@ do {                                                                        \
 #define DMEMIT(x...) sz += ((sz >= maxlen) ? \
                          0 : scnprintf(result + sz, maxlen - sz, x))
 
-#define SECTOR_SHIFT 9
-
 /*
  * Definitions of return values from target end_io function.
  */
index 70db3af045417d7077fa2aa2fce15990f7b08547..9885080c21c5c7a778b5260654ef31635f1e4ddc 100644 (file)
@@ -165,7 +165,6 @@ struct ide_io_ports {
  */
 #define PARTN_BITS     6       /* number of minor dev bits for partitions */
 #define MAX_DRIVES     2       /* per interface; 2 assumed by lots of code */
-#define SECTOR_SIZE    512
 
 /*
  * Timeouts for various operations:
index a45d0754102e00829af76424a0a97fbcf4cd1f0f..fde753735abaecacf6c4765218a0ac4686c28b61 100644 (file)
@@ -10,7 +10,9 @@
  * The MS-DOS filesystem constants/structures
  */
 
+#ifndef SECTOR_SIZE
 #define SECTOR_SIZE    512             /* sector size (bytes) */
+#endif
 #define SECTOR_BITS    9               /* log2(SECTOR_SIZE) */
 #define MSDOS_DPB      (MSDOS_DPS)     /* dir entries per block */
 #define MSDOS_DPB_BITS 4               /* log2(MSDOS_DPB) */