mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 13:34:10 +08:00
dm: eliminate some holes data structures
Eliminate a 4-byte hole in 'struct dm_io_memory' by moving 'offset' above the 'ptr' to which it applies (size reduced from 24 to 16 bytes). And by association, 1-4 byte hole is eliminated in 'struct dm_io_request' (size reduced from 56 to 48 bytes). Eliminate all 6 4-byte holes and 1 cache-line in 'struct dm_snapshot' (size reduced from 392 to 368 bytes). Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
This commit is contained in:
parent
3abf85b5b5
commit
924e600d41
@ -83,10 +83,10 @@ struct dm_snapshot {
|
||||
/* Whether or not owning mapped_device is suspended */
|
||||
int suspended;
|
||||
|
||||
mempool_t *pending_pool;
|
||||
|
||||
atomic_t pending_exceptions_count;
|
||||
|
||||
mempool_t *pending_pool;
|
||||
|
||||
struct dm_exception_table pending;
|
||||
struct dm_exception_table complete;
|
||||
|
||||
@ -96,6 +96,11 @@ struct dm_snapshot {
|
||||
*/
|
||||
spinlock_t pe_lock;
|
||||
|
||||
/* Chunks with outstanding reads */
|
||||
spinlock_t tracked_chunk_lock;
|
||||
mempool_t *tracked_chunk_pool;
|
||||
struct hlist_head tracked_chunk_hash[DM_TRACKED_CHUNK_HASH_SIZE];
|
||||
|
||||
/* The on disk metadata handler */
|
||||
struct dm_exception_store *store;
|
||||
|
||||
@ -105,10 +110,12 @@ struct dm_snapshot {
|
||||
struct bio_list queued_bios;
|
||||
struct work_struct queued_bios_work;
|
||||
|
||||
/* Chunks with outstanding reads */
|
||||
mempool_t *tracked_chunk_pool;
|
||||
spinlock_t tracked_chunk_lock;
|
||||
struct hlist_head tracked_chunk_hash[DM_TRACKED_CHUNK_HASH_SIZE];
|
||||
/* Wait for events based on state_bits */
|
||||
unsigned long state_bits;
|
||||
|
||||
/* Range of chunks currently being merged. */
|
||||
chunk_t first_merging_chunk;
|
||||
int num_merging_chunks;
|
||||
|
||||
/*
|
||||
* The merge operation failed if this flag is set.
|
||||
@ -125,13 +132,6 @@ struct dm_snapshot {
|
||||
*/
|
||||
int merge_failed;
|
||||
|
||||
/* Wait for events based on state_bits */
|
||||
unsigned long state_bits;
|
||||
|
||||
/* Range of chunks currently being merged. */
|
||||
chunk_t first_merging_chunk;
|
||||
int num_merging_chunks;
|
||||
|
||||
/*
|
||||
* Incoming bios that overlap with chunks being merged must wait
|
||||
* for them to be committed.
|
||||
|
@ -37,14 +37,14 @@ enum dm_io_mem_type {
|
||||
struct dm_io_memory {
|
||||
enum dm_io_mem_type type;
|
||||
|
||||
unsigned offset;
|
||||
|
||||
union {
|
||||
struct page_list *pl;
|
||||
struct bio_vec *bvec;
|
||||
void *vma;
|
||||
void *addr;
|
||||
} ptr;
|
||||
|
||||
unsigned offset;
|
||||
};
|
||||
|
||||
struct dm_io_notify {
|
||||
|
Loading…
Reference in New Issue
Block a user