提交 c9ec5d7c 编写于 作者: M Mike Snitzer

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: NMike Snitzer <snitzer@redhat.com>
Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
Acked-by: NJoe Thornber <ejt@redhat.com>
上级 f6109372
......@@ -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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册