Skip to content

Commit

Permalink
dm cache: eliminate holes in cache structure
Browse files Browse the repository at this point in the history
Reorder members in the cache structure to eliminate 6 out of 7 holes
(reclaiming 24 bytes).  Also, the 'worker' and 'waker' members no longer
straddle cachelines.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Acked-by: Joe Thornber <ejt@redhat.com>
  • Loading branch information
Mike Snitzer committed Aug 23, 2013
1 parent f610937 commit c9ec5d7
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions drivers/md/dm-cache-target.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ struct cache {
struct dm_target *ti;
struct dm_target_callbacks callbacks;

struct dm_cache_metadata *cmd;

/*
* Metadata is written to this device.
*/
Expand All @@ -118,11 +120,6 @@ struct cache {
*/
struct dm_dev *cache_dev;

/*
* Cache features such as write-through.
*/
struct cache_features features;

/*
* Size of the origin device in _complete_ blocks and native sectors.
*/
Expand All @@ -140,8 +137,6 @@ struct cache {
uint32_t sectors_per_block;
int sectors_per_block_shift;

struct dm_cache_metadata *cmd;

spinlock_t lock;
struct bio_list deferred_bios;
struct bio_list deferred_flush_bios;
Expand All @@ -150,8 +145,8 @@ struct cache {
struct list_head completed_migrations;
struct list_head need_commit_migrations;
sector_t migration_threshold;
atomic_t nr_migrations;
wait_queue_head_t migration_wait;
atomic_t nr_migrations;

/*
* cache_size entries, dirty if set
Expand All @@ -162,9 +157,16 @@ struct cache {
/*
* origin_blocks entries, discarded if set.
*/
uint32_t discard_block_size; /* a power of 2 times sectors per block */
dm_dblock_t discard_nr_blocks;
unsigned long *discard_bitset;
uint32_t discard_block_size; /* a power of 2 times sectors per block */

/*
* Rather than reconstructing the table line for the status we just
* save it and regurgitate.
*/
unsigned nr_ctr_args;
const char **ctr_args;

struct dm_kcopyd_client *copier;
struct workqueue_struct *wq;
Expand All @@ -189,14 +191,12 @@ struct cache {
bool loaded_mappings:1;
bool loaded_discards:1;

struct cache_stats stats;

/*
* Rather than reconstructing the table line for the status we just
* save it and regurgitate.
* Cache features such as write-through.
*/
unsigned nr_ctr_args;
const char **ctr_args;
struct cache_features features;

struct cache_stats stats;
};

struct per_bio_data {
Expand Down

0 comments on commit c9ec5d7

Please sign in to comment.