Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5ee37bc authored by Miao Xie's avatar Miao Xie Committed by Chris Mason
Browse files

Btrfs: make the device lock and its protected data in the same cacheline



The lock in btrfs_device structure was far away from its protected data, it would
make CPU load the cache line twice when we accessed them, move them together.

Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 5f546063
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -36,30 +36,31 @@ struct btrfs_device {
	struct list_head dev_list;
	struct list_head dev_alloc_list;
	struct btrfs_fs_devices *fs_devices;

	struct btrfs_root *dev_root;

	struct rcu_string *name;

	u64 generation;

	spinlock_t io_lock ____cacheline_aligned;
	int running_pending;
	/* regular prio bios */
	struct btrfs_pending_bios pending_bios;
	/* WRITE_SYNC bios */
	struct btrfs_pending_bios pending_sync_bios;

	u64 generation;
	int running_pending;
	struct block_device *bdev;

	/* the mode sent to blkdev_get */
	fmode_t mode;

	int writeable;
	int in_fs_metadata;
	int missing;
	int can_discard;
	int is_tgtdev_for_dev_replace;

	spinlock_t io_lock;
	/* the mode sent to blkdev_get */
	fmode_t mode;

	struct block_device *bdev;


	struct rcu_string *name;

	/* the internal btrfs device id */
	u64 devid;

@@ -83,7 +84,6 @@ struct btrfs_device {
	/* minimal io size for this device */
	u32 sector_size;


	/* physical drive uuid (or lvm uuid) */
	u8 uuid[BTRFS_UUID_SIZE];

@@ -107,7 +107,6 @@ struct btrfs_device {
	struct radix_tree_root reada_zones;
	struct radix_tree_root reada_extents;


	/* disk I/O failure stats. For detailed description refer to
	 * enum btrfs_dev_stat_values in ioctl.h */
	int dev_stats_valid;