diff options
author | Mike Snitzer <snitzer@redhat.com> | 2016-02-22 23:27:50 +0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2016-03-11 01:12:07 +0300 |
commit | 032482fda4d19e0de10e0e99420a616c1e3e7820 (patch) | |
tree | 32c11b7344e9027f56351e1d98b0fa57d8abbf14 /drivers/md | |
parent | 1d3aa6f683b1c1a813a63339d7309cff58ba4531 (diff) | |
download | linux-032482fda4d19e0de10e0e99420a616c1e3e7820.tar.xz |
dm: reorder 'struct mapped_device' members to fix alignment and holes
Saves 16 bytes by eliminating 4 4byte holes but more importantly:
numerous members that crossed cachelines were fixed.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 3cae8547420a..503988ff66ea 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -126,8 +126,6 @@ struct dm_rq_clone_bio_info { struct mapped_device { struct srcu_struct io_barrier; struct mutex suspend_lock; - atomic_t holders; - atomic_t open_count; /* * The current mapping (struct dm_table *). @@ -148,6 +146,9 @@ struct mapped_device { /* Protect queue and type against concurrent access. */ struct mutex type_lock; + atomic_t holders; + atomic_t open_count; + struct dm_target *immutable_target; struct target_type *immutable_target_type; @@ -162,8 +163,20 @@ struct mapped_device { atomic_t pending[2]; wait_queue_head_t wait; struct work_struct work; - struct bio_list deferred; spinlock_t deferred_lock; + struct bio_list deferred; + + /* + * Event handling. + */ + wait_queue_head_t eventq; + atomic_t event_nr; + atomic_t uevent_seq; + struct list_head uevent_list; + spinlock_t uevent_lock; /* Protect access to uevent_list */ + + /* the number of internal suspends */ + unsigned internal_suspend_count; /* * Processing queue (flush) @@ -179,32 +192,21 @@ struct mapped_device { struct bio_set *bs; /* - * Event handling. - */ - atomic_t event_nr; - wait_queue_head_t eventq; - atomic_t uevent_seq; - struct list_head uevent_list; - spinlock_t uevent_lock; /* Protect access to uevent_list */ - - /* * freeze/thaw support require holding onto a super block */ struct super_block *frozen_sb; - struct block_device *bdev; /* forced geometry settings */ struct hd_geometry geometry; + struct block_device *bdev; + /* kobject and completion */ struct dm_kobject_holder kobj_holder; /* zero-length flush that will be cloned and submitted to targets */ struct bio flush_bio; - /* the number of internal suspends */ - unsigned internal_suspend_count; - struct dm_stats stats; struct kthread_worker kworker; |