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>
Sat, 12 Sep 2020 09:47:36 +0000 (11:47 +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>
12 files changed:
arch/xtensa/platforms/iss/simdisk.c
drivers/block/brd.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 ede04cca30dde3000930831db1ce161e25447a28..82fb5102d82442c26182b3c5e9fdc92213940b8f 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 7e35574a17dfc59fdfc334b546d4e5b27c89c24c..9d81ac8b4512a085acdb2bbbbb73d0034fd2ba80 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <asm/uaccess.h>
 
-#define SECTOR_SHIFT           9
 #define PAGE_SECTORS_SHIFT     (PAGE_SHIFT - SECTOR_SHIFT)
 #define PAGE_SECTORS           (1 << PAGE_SECTORS_SHIFT)
 
index 8a93ca4d6840c088a66c8bfca736afa2fca777c1..19f336752ad7570969f3d11de6c8aee097796d57 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 74fcf10da37499a610d99f3381878b75546ea24d..6d2475a39e84be3735ff4c71b1f202e9c3517016 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 883fe2cdd42cca59dcb5117dffcd46ba91df3d2e..6e3b3a5a3c36f351c8ee7e1c86da0bdfa5246ca8 100644 (file)
@@ -704,7 +704,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",
@@ -900,7 +900,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:
@@ -916,7 +916,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);
@@ -993,7 +993,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 1efc936f5b6672e268a38db439c63831fd59b71f..7c6d017e84e9ec4d1e3b2933c9df65a65c857867 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 bd29e598bac18e813d38aaf3b8d04d4f42d6cf9d..2a820c1fdfcde394cdf61ee893342b345cf76f97 100644 (file)
@@ -29,7 +29,6 @@ enum {
         * BTT instance
         */
        ND_MAX_LANES = 256,
-       SECTOR_SHIFT = 9,
        INT_LBASIZE_ALIGNMENT = 64,
 };
 
index 3fd8b83ffbf9f0df05d9c202d18bb7520cd6ee89..8039c809cef278c51ce4af9d331c1ca698b89231 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 060881478e59e9bf7ddac1f549ab0c0220e62151..848aab6c698239a1f432cd8dc0bceec79394c203 100644 (file)
@@ -850,6 +850,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
@@ -877,19 +890,20 @@ 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;
 }
 
 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;
@@ -1162,16 +1176,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, true);
 }
 
@@ -1278,7 +1297,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;
 }
@@ -1312,8 +1332,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;
 
@@ -1324,7 +1344,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 9661bb2fbe22114f97dbd67aec1cc2ec4edf638e..165ddd482f0d767aa43c63ddb3fb5e85dbcbbd3e 100644 (file)
@@ -576,8 +576,6 @@ extern struct ratelimit_state dm_ratelimit_state;
 #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 a633898f36ac83f387f6de86350f7768a3d73b6e..eb2ac48c99db3eb73100a0c8ed59f02721878716 100644 (file)
@@ -128,7 +128,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 e956704f5fb1b24ceba1b0157c8d37cf87ee3d15..95b8a9395ec102b69bc6d4cbd87e0270080131a0 100644 (file)
@@ -9,7 +9,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) */