summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2017-12-20 21:14:42 +0100
committerJens Axboe <axboe@kernel.dk>2017-12-20 21:16:33 +0100
commit0864fe09ab90ab32b7d21fe3cd72df5b5af8492e (patch)
tree0eccf5d3eb91f7eb9432e7c70b03dc33184b7b58
parentblock: unalign call_single_data in struct request (diff)
downloadlinux-0864fe09ab90ab32b7d21fe3cd72df5b5af8492e.tar.xz
linux-0864fe09ab90ab32b7d21fe3cd72df5b5af8492e.zip
null_blk: unalign call_single_data
Commit 966a967116e6 randomly added alignment to this structure, but it's actually detrimental to performance of null_blk. Test case: Running on both the home and remote node shows a ~5% degradation in performance. While in there, move blk_status_t to the hole after the integer tag in the nullb_cmd structure. After this patch, we shrink the size from 192 to 152 bytes. Fixes: 966a967116e69 ("smp: Avoid using two cache lines for struct call_single_data") Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--drivers/block/null_blk.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
index ccb9975a97fa..ad0477ae820f 100644
--- a/drivers/block/null_blk.c
+++ b/drivers/block/null_blk.c
@@ -35,13 +35,13 @@ static inline u64 mb_per_tick(int mbps)
struct nullb_cmd {
struct list_head list;
struct llist_node ll_list;
- call_single_data_t csd;
+ struct __call_single_data csd;
struct request *rq;
struct bio *bio;
unsigned int tag;
+ blk_status_t error;
struct nullb_queue *nq;
struct hrtimer timer;
- blk_status_t error;
};
struct nullb_queue {