Skip to content

Commit

Permalink
dm: eliminate some holes data structures
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mike Snitzer authored and Alasdair G Kergon committed Mar 6, 2010
1 parent 3abf85b commit 924e600
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 15 deletions.
26 changes: 13 additions & 13 deletions drivers/md/dm-snap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;

Expand All @@ -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.
Expand All @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions include/linux/dm-io.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 924e600

Please sign in to comment.