We have several bool members in struct block_device. It would be nice to pack that stuff, preferably without blowing the cacheline boundaries. That had been suggested a while ago, and initial implementation by Yu Kuai <yukuai1@xxxxxxxxxxxxxxx> ran into objections re atomicity, along with the obvious suggestion to use unsigned long and test_bit/set_bit/clear_bit for access. Unfortunately, that *does* blow the cacheline boundaries. However, it's not hard to do that without bitops; we have an 8-bit assign-once partition number nearby, and folding it into a 32-bit member leaves us up to 24 bits for flags. Using cmpxchg for setting/clearing flags is not hard, and 32bit cmpxchg is supported everywhere. Series below does that conversion. Please, review. Individual patches in followups, the branch is in git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git #work.bd_flags Shortlog: Al Viro (8): Use bdev_is_paritition() instead of open-coding it wrapper for access to ->bd_partno bdev: infrastructure for flags bdev: move ->bd_read_only to ->__bd_flags bdev: move ->bd_write_holder into ->__bd_flags bdev: move ->bd_has_subit_bio to ->__bd_flags bdev: move ->bd_ro_warned to ->__bd_flags bdev: move ->bd_make_it_fail to ->__bd_flags Diffstat: block/bdev.c | 17 ++++++++--------- block/blk-core.c | 17 ++++++++++------- block/blk-mq.c | 2 +- block/early-lookup.c | 2 +- block/genhd.c | 15 ++++++++++----- block/ioctl.c | 5 ++++- block/partitions/core.c | 12 ++++++------ include/linux/blk_types.h | 19 +++++++++++-------- include/linux/blkdev.h | 42 +++++++++++++++++++++++++++++++++++++++--- include/linux/part_stat.h | 2 +- lib/vsprintf.c | 4 ++-- 11 files changed, 93 insertions(+), 44 deletions(-)