Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 924e600d authored by Mike Snitzer's avatar Mike Snitzer Committed by Alasdair G Kergon
Browse files

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: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 3abf85b5
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -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.
+2 −2
Original line number Diff line number Diff line
@@ -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 {