block: shrink bio size again
authorChristoph Hellwig <hch@lst.de>
Tue, 19 Jul 2016 09:28:43 +0000 (11:28 +0200)
committerJens Axboe <axboe@fb.com>
Wed, 20 Jul 2016 23:37:04 +0000 (17:37 -0600)
The recent ops split grew the bio by adding the new ioprio field.
Shrink it again by using a 16-bit field for the bi_flags value and
filling the holes near the beginning of the structure.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Mike Christie <mchristi@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
include/linux/blk_types.h

index b76463ea35877f9d91da76645014fdf1bb2ad437..c3525c5564b24e47d4bd1660d8cef0c6012f1427 100644 (file)
@@ -46,11 +46,11 @@ struct bvec_iter {
 struct bio {
        struct bio              *bi_next;       /* request queue link */
        struct block_device     *bi_bdev;
-       unsigned int            bi_flags;       /* status, command, etc */
        int                     bi_error;
        unsigned int            bi_rw;          /* bottom bits req flags,
                                                 * top bits REQ_OP
                                                 */
+       unsigned short          bi_flags;       /* status, command, etc */
        unsigned short          bi_ioprio;
 
        struct bvec_iter        bi_iter;
@@ -136,7 +136,7 @@ struct bio {
  * Flags starting here get preserved by bio_reset() - this includes
  * BVEC_POOL_IDX()
  */
-#define BIO_RESET_BITS 13
+#define BIO_RESET_BITS 10
 
 /*
  * We support 6 different bvec pools, the last one is magic in that it
@@ -151,7 +151,7 @@ struct bio {
  * freed.
  */
 #define BVEC_POOL_BITS         (4)
-#define BVEC_POOL_OFFSET       (32 - BVEC_POOL_BITS)
+#define BVEC_POOL_OFFSET       (16 - BVEC_POOL_BITS)
 #define BVEC_POOL_IDX(bio)     ((bio)->bi_flags >> BVEC_POOL_OFFSET)
 
 #endif /* CONFIG_BLOCK */