aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/blk_types.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2024-04-12 01:07:29 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2024-05-02 19:50:11 -0400
commit1116b9fa15c09748ae05d2365a305fa22671eb1e (patch)
tree0d380782b6d3aadc770d758ef956887f028423fa /include/linux/blk_types.h
parentwrapper for access to ->bd_partno (diff)
downloadlinux-rng-1116b9fa15c09748ae05d2365a305fa22671eb1e.tar.xz
linux-rng-1116b9fa15c09748ae05d2365a305fa22671eb1e.zip
bdev: infrastructure for flags
Replace bd_partno with a 32bit field (__bd_flags). The lower 8 bits contain the partition number, the upper 24 are for flags. Helpers: bdev_{test,set,clear}_flag(bdev, flag), with atomic_or() and atomic_andnot() used to set/clear. NOTE: this commit does not actually move any flags over there - they are still bool fields. As the result, it shifts the fields wrt cacheline boundaries; that's going to be restored once the first 3 flags are dealt with. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/blk_types.h')
-rw-r--r--include/linux/blk_types.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index cb1526ec44b5..04f92737ab08 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -45,8 +45,9 @@ struct block_device {
struct request_queue * bd_queue;
struct disk_stats __percpu *bd_stats;
unsigned long bd_stamp;
+ atomic_t __bd_flags; // partition number + flags
+#define BD_PARTNO 255 // lower 8 bits; assign-once
bool bd_read_only; /* read-only policy */
- u8 bd_partno;
bool bd_write_holder;
bool bd_has_submit_bio;
dev_t bd_dev;