dm cache: eliminate holes in cache structure
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>
This commit is contained in:
Родитель
f610937214
Коммит
c9ec5d7c7b
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
|
Загрузка…
Ссылка в новой задаче