struct dm_bio_prison { spinlock_t lock; /* 0 4 */ /* XXX 4 bytes hole, try to pack */ struct rb_root cells; /* 8 8 */ mempool_t cell_pool; /* 16 72 */ /* --- cacheline 1 boundary (64 bytes) was 24 bytes ago --- */ /* size: 88, cachelines: 2, members: 3 */ /* sum members: 84, holes: 1, sum holes: 4 */ /* last cacheline: 24 bytes */ }; struct dm_bio_prison_v2 { struct workqueue_struct * wq; /* 0 8 */ spinlock_t lock; /* 8 4 */ /* XXX 4 bytes hole, try to pack */ struct rb_root cells; /* 16 8 */ mempool_t cell_pool; /* 24 72 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ /* size: 96, cachelines: 2, members: 4 */ /* sum members: 92, holes: 1, sum holes: 4 */ /* last cacheline: 32 bytes */ }; struct cache { struct dm_target * ti; /* 0 8 */ spinlock_t lock; /* 8 4 */ int sectors_per_block_shift; /* 12 4 */ sector_t sectors_per_block; /* 16 8 */ struct dm_cache_metadata * cmd; /* 24 8 */ struct dm_dev * metadata_dev; /* 32 8 */ struct dm_dev * origin_dev; /* 40 8 */ struct dm_dev * cache_dev; /* 48 8 */ dm_oblock_t origin_blocks; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ sector_t origin_sectors; /* 64 8 */ dm_cblock_t cache_size; /* 72 4 */ spinlock_t invalidation_lock; /* 76 4 */ struct list_head invalidation_requests; /* 80 16 */ sector_t migration_threshold; /* 96 8 */ wait_queue_head_t migration_wait; /* 104 24 */ /* --- cacheline 2 boundary (128 bytes) --- */ atomic_t nr_allocated_migrations; /* 128 4 */ atomic_t nr_io_migrations; /* 132 4 */ struct bio_list deferred_bios; /* 136 16 */ struct rw_semaphore quiesce_lock; /* 152 40 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct dm_target_callbacks callbacks; /* 192 24 */ dm_dblock_t discard_nr_blocks; /* 216 8 */ long unsigned int * discard_bitset; /* 224 8 */ uint32_t discard_block_size; /* 232 4 */ unsigned int nr_ctr_args; /* 236 4 */ const char * * ctr_args; /* 240 8 */ struct dm_kcopyd_client * copier; /* 248 8 */ /* --- cacheline 4 boundary (256 bytes) --- */ struct work_struct deferred_bio_worker; /* 256 32 */ struct work_struct migration_worker; /* 288 32 */ /* --- cacheline 5 boundary (320 bytes) --- */ struct workqueue_struct * wq; /* 320 8 */ struct delayed_work waker; /* 328 88 */ /* --- cacheline 6 boundary (384 bytes) was 32 bytes ago --- */ struct dm_bio_prison_v2 * prison; /* 416 8 */ long unsigned int * dirty_bitset; /* 424 8 */ atomic_t nr_dirty; /* 432 4 */ unsigned int policy_nr_args; /* 436 4 */ struct dm_cache_policy * policy; /* 440 8 */ /* --- cacheline 7 boundary (448 bytes) --- */ struct cache_features features; /* 448 12 */ struct cache_stats stats; /* 460 44 */ bool need_tick_bio:1; /* 504: 7 1 */ bool sized:1; /* 504: 6 1 */ bool invalidate:1; /* 504: 5 1 */ bool commit_requested:1; /* 504: 4 1 */ bool loaded_mappings:1; /* 504: 3 1 */ bool loaded_discards:1; /* 504: 2 1 */ /* XXX 2 bits hole, try to pack */ /* XXX 7 bytes hole, try to pack */ /* --- cacheline 8 boundary (512 bytes) --- */ struct rw_semaphore background_work_lock; /* 512 40 */ struct batcher committer; /* 552 120 */ /* --- cacheline 10 boundary (640 bytes) was 32 bytes ago --- */ struct work_struct commit_ws; /* 672 32 */ /* --- cacheline 11 boundary (704 bytes) --- */ struct io_tracker tracker; /* 704 32 */ mempool_t migration_pool; /* 736 72 */ /* --- cacheline 12 boundary (768 bytes) was 40 bytes ago --- */ struct bio_set bs; /* 808 368 */ /* --- cacheline 18 boundary (1152 bytes) was 24 bytes ago --- */ /* size: 1176, cachelines: 19, members: 49 */ /* sum members: 1169, holes: 1, sum holes: 7 */ /* bit holes: 1, sum bit holes: 2 bits */ /* last cacheline: 24 bytes */ }; struct mapped_device { struct mutex suspend_lock; /* 0 32 */ struct mutex table_devices_lock; /* 32 32 */ /* --- cacheline 1 boundary (64 bytes) --- */ struct list_head table_devices; /* 64 16 */ void * map; /* 80 8 */ long unsigned int flags; /* 88 8 */ struct mutex type_lock; /* 96 32 */ /* --- cacheline 2 boundary (128 bytes) --- */ enum dm_queue_mode type; /* 128 4 */ int numa_node_id; /* 132 4 */ struct request_queue * queue; /* 136 8 */ atomic_t holders; /* 144 4 */ atomic_t open_count; /* 148 4 */ struct dm_target * immutable_target; /* 152 8 */ struct target_type * immutable_target_type; /* 160 8 */ char name[16]; /* 168 16 */ struct gendisk * disk; /* 184 8 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct dax_device * dax_dev; /* 192 8 */ struct work_struct work; /* 200 32 */ wait_queue_head_t wait; /* 232 24 */ /* --- cacheline 4 boundary (256 bytes) --- */ atomic_t pending[2]; /* 256 8 */ spinlock_t deferred_lock; /* 264 4 */ /* XXX 4 bytes hole, try to pack */ struct bio_list deferred; /* 272 16 */ void * interface_ptr; /* 288 8 */ wait_queue_head_t eventq; /* 296 24 */ /* --- cacheline 5 boundary (320 bytes) --- */ atomic_t event_nr; /* 320 4 */ atomic_t uevent_seq; /* 324 4 */ struct list_head uevent_list; /* 328 16 */ spinlock_t uevent_lock; /* 344 4 */ unsigned int internal_suspend_count; /* 348 4 */ struct bio_set io_bs; /* 352 368 */ /* --- cacheline 11 boundary (704 bytes) was 16 bytes ago --- */ struct bio_set bs; /* 720 368 */ /* --- cacheline 17 boundary (1088 bytes) --- */ struct workqueue_struct * wq; /* 1088 8 */ struct super_block * frozen_sb; /* 1096 8 */ struct hd_geometry geometry; /* 1104 16 */ struct dm_kobject_holder kobj_holder; /* 1120 96 */ /* --- cacheline 19 boundary (1216 bytes) --- */ struct block_device * bdev; /* 1216 8 */ struct bio flush_bio; /* 1224 152 */ /* --- cacheline 21 boundary (1344 bytes) was 32 bytes ago --- */ struct dm_stats stats; /* 1376 72 */ /* --- cacheline 22 boundary (1408 bytes) was 40 bytes ago --- */ struct kthread_worker kworker; /* 1448 56 */ /* --- cacheline 23 boundary (1472 bytes) was 32 bytes ago --- */ struct task_struct * kworker_task; /* 1504 8 */ unsigned int seq_rq_merge_deadline_usecs; /* 1512 4 */ int last_rq_rw; /* 1516 4 */ sector_t last_rq_pos; /* 1520 8 */ ktime_t last_rq_start_time; /* 1528 8 */ /* --- cacheline 24 boundary (1536 bytes) --- */ struct blk_mq_tag_set * tag_set; /* 1536 8 */ bool use_blk_mq:1; /* 1544: 7 1 */ bool init_tio_pdu:1; /* 1544: 6 1 */ /* XXX 6 bits hole, try to pack */ /* XXX 7 bytes hole, try to pack */ struct srcu_struct io_barrier; /* 1552 50336 */ /* --- cacheline 810 boundary (51840 bytes) was 48 bytes ago --- */ /* size: 51888, cachelines: 811, members: 47 */ /* sum members: 51877, holes: 2, sum holes: 11 */ /* bit holes: 1, sum bit holes: 6 bits */ /* last cacheline: 48 bytes */ }; struct crypt_config { struct dm_dev * dev; /* 0 8 */ sector_t start; /* 8 8 */ struct percpu_counter n_allocated_pages; /* 16 40 */ struct workqueue_struct * io_queue; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ struct workqueue_struct * crypt_queue; /* 64 8 */ wait_queue_head_t write_thread_wait; /* 72 24 */ struct task_struct * write_thread; /* 96 8 */ struct rb_root write_tree; /* 104 8 */ char * cipher; /* 112 8 */ char * cipher_string; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ char * cipher_auth; /* 128 8 */ char * key_string; /* 136 8 */ const struct crypt_iv_operations * iv_gen_ops; /* 144 8 */ union { struct iv_essiv_private essiv; /* 16 */ struct iv_benbi_private benbi; /* 4 */ struct iv_lmk_private lmk; /* 16 */ struct iv_tcw_private tcw; /* 24 */ } iv_gen_private; /* 152 24 */ sector_t iv_offset; /* 176 8 */ unsigned int iv_size; /* 184 4 */ short unsigned int sector_size; /* 188 2 */ unsigned char sector_shift; /* 190 1 */ /* XXX 1 byte hole, try to pack */ /* --- cacheline 3 boundary (192 bytes) --- */ void * iv_private; /* 192 8 */ union { struct crypto_skcipher * * tfms; /* 8 */ struct crypto_aead * * tfms_aead; /* 8 */ } cipher_tfm; /* 200 8 */ unsigned int tfms_count; /* 208 4 */ /* XXX 4 bytes hole, try to pack */ long unsigned int cipher_flags; /* 216 8 */ unsigned int dmreq_start; /* 224 4 */ unsigned int per_bio_data_size; /* 228 4 */ long unsigned int flags; /* 232 8 */ unsigned int key_size; /* 240 4 */ unsigned int key_parts; /* 244 4 */ unsigned int key_extra_size; /* 248 4 */ unsigned int key_mac_size; /* 252 4 */ /* --- cacheline 4 boundary (256 bytes) --- */ unsigned int integrity_tag_size; /* 256 4 */ unsigned int integrity_iv_size; /* 260 4 */ unsigned int on_disk_tag_size; /* 264 4 */ unsigned int tag_pool_max_sectors; /* 268 4 */ mempool_t tag_pool; /* 272 72 */ /* --- cacheline 5 boundary (320 bytes) was 24 bytes ago --- */ mempool_t req_pool; /* 344 72 */ /* --- cacheline 6 boundary (384 bytes) was 32 bytes ago --- */ mempool_t page_pool; /* 416 72 */ /* --- cacheline 7 boundary (448 bytes) was 40 bytes ago --- */ struct bio_set bs; /* 488 368 */ /* --- cacheline 13 boundary (832 bytes) was 24 bytes ago --- */ struct mutex bio_alloc_lock; /* 856 32 */ u8 * authenc_key; /* 888 8 */ /* --- cacheline 14 boundary (896 bytes) --- */ u8 key[0]; /* 896 0 */ /* size: 896, cachelines: 14, members: 40 */ /* sum members: 891, holes: 2, sum holes: 5 */ }; struct dm_integrity_c { struct dm_dev * dev; /* 0 8 */ unsigned int tag_size; /* 8 4 */ __s8 log2_tag_size; /* 12 1 */ /* XXX 3 bytes hole, try to pack */ sector_t start; /* 16 8 */ mempool_t journal_io_mempool; /* 24 72 */ /* --- cacheline 1 boundary (64 bytes) was 32 bytes ago --- */ struct dm_io_client * io; /* 96 8 */ struct dm_bufio_client * bufio; /* 104 8 */ struct workqueue_struct * metadata_wq; /* 112 8 */ struct superblock * sb; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ unsigned int journal_pages; /* 128 4 */ /* XXX 4 bytes hole, try to pack */ struct page_list * journal; /* 136 8 */ struct page_list * journal_io; /* 144 8 */ struct page_list * journal_xor; /* 152 8 */ struct crypto_skcipher * journal_crypt; /* 160 8 */ struct scatterlist * * journal_scatterlist; /* 168 8 */ struct scatterlist * * journal_io_scatterlist; /* 176 8 */ struct skcipher_request * * sk_requests; /* 184 8 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct crypto_shash * journal_mac; /* 192 8 */ struct journal_node * journal_tree; /* 200 8 */ struct rb_root journal_tree_root; /* 208 8 */ sector_t provided_data_sectors; /* 216 8 */ short unsigned int journal_entry_size; /* 224 2 */ unsigned char journal_entries_per_sector; /* 226 1 */ unsigned char journal_section_entries; /* 227 1 */ short unsigned int journal_section_sectors; /* 228 2 */ /* XXX 2 bytes hole, try to pack */ unsigned int journal_sections; /* 232 4 */ unsigned int journal_entries; /* 236 4 */ sector_t device_sectors; /* 240 8 */ unsigned int initial_sectors; /* 248 4 */ unsigned int metadata_run; /* 252 4 */ /* --- cacheline 4 boundary (256 bytes) --- */ __s8 log2_metadata_run; /* 256 1 */ __u8 log2_buffer_sectors; /* 257 1 */ __u8 sectors_per_block; /* 258 1 */ unsigned char mode; /* 259 1 */ bool suspending; /* 260 1 */ /* XXX 3 bytes hole, try to pack */ int failed; /* 264 4 */ /* XXX 4 bytes hole, try to pack */ struct crypto_shash * internal_hash; /* 272 8 */ struct rb_root in_progress; /* 280 8 */ wait_queue_head_t endio_wait; /* 288 24 */ struct workqueue_struct * wait_wq; /* 312 8 */ /* --- cacheline 5 boundary (320 bytes) --- */ unsigned char commit_seq; /* 320 1 */ /* XXX 7 bytes hole, try to pack */ commit_id_t commit_ids[4]; /* 328 32 */ unsigned int committed_section; /* 360 4 */ unsigned int n_committed_sections; /* 364 4 */ unsigned int uncommitted_section; /* 368 4 */ unsigned int n_uncommitted_sections; /* 372 4 */ unsigned int free_section; /* 376 4 */ unsigned char free_section_entry; /* 380 1 */ /* XXX 3 bytes hole, try to pack */ /* --- cacheline 6 boundary (384 bytes) --- */ unsigned int free_sectors; /* 384 4 */ unsigned int free_sectors_threshold; /* 388 4 */ struct workqueue_struct * commit_wq; /* 392 8 */ struct work_struct commit_work; /* 400 32 */ struct workqueue_struct * writer_wq; /* 432 8 */ struct work_struct writer_work; /* 440 32 */ /* --- cacheline 7 boundary (448 bytes) was 24 bytes ago --- */ struct bio_list flush_bio_list; /* 472 16 */ long unsigned int autocommit_jiffies; /* 488 8 */ struct timer_list autocommit_timer; /* 496 40 */ /* --- cacheline 8 boundary (512 bytes) was 24 bytes ago --- */ unsigned int autocommit_msec; /* 536 4 */ /* XXX 4 bytes hole, try to pack */ wait_queue_head_t copy_to_journal_wait; /* 544 24 */ struct completion crypto_backoff; /* 568 32 */ /* --- cacheline 9 boundary (576 bytes) was 24 bytes ago --- */ bool journal_uptodate; /* 600 1 */ bool just_formatted; /* 601 1 */ /* XXX 6 bytes hole, try to pack */ struct alg_spec internal_hash_alg; /* 608 32 */ /* --- cacheline 10 boundary (640 bytes) --- */ struct alg_spec journal_crypt_alg; /* 640 32 */ struct alg_spec journal_mac_alg; /* 672 32 */ /* --- cacheline 11 boundary (704 bytes) --- */ atomic64_t number_of_mismatches; /* 704 8 */ /* size: 712, cachelines: 12, members: 66 */ /* sum members: 676, holes: 9, sum holes: 36 */ /* last cacheline: 8 bytes */ }; struct dm_io_client { mempool_t pool; /* 0 72 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ struct bio_set bios; /* 72 368 */ /* --- cacheline 6 boundary (384 bytes) was 56 bytes ago --- */ /* size: 440, cachelines: 7, members: 2 */ /* last cacheline: 56 bytes */ }; struct dm_kcopyd_client { struct page_list * pages; /* 0 8 */ unsigned int nr_reserved_pages; /* 8 4 */ unsigned int nr_free_pages; /* 12 4 */ struct dm_io_client * io_client; /* 16 8 */ wait_queue_head_t destroyq; /* 24 24 */ mempool_t job_pool; /* 48 72 */ /* --- cacheline 1 boundary (64 bytes) was 56 bytes ago --- */ struct workqueue_struct * kcopyd_wq; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ struct work_struct kcopyd_work; /* 128 32 */ struct dm_kcopyd_throttle * throttle; /* 160 8 */ atomic_t nr_jobs; /* 168 4 */ spinlock_t job_lock; /* 172 4 */ struct list_head complete_jobs; /* 176 16 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct list_head io_jobs; /* 192 16 */ struct list_head pages_jobs; /* 208 16 */ /* size: 224, cachelines: 4, members: 14 */ /* last cacheline: 32 bytes */ }; struct dm_region_hash { uint32_t region_size; /* 0 4 */ unsigned int region_shift; /* 4 4 */ struct dm_dirty_log * log; /* 8 8 */ rwlock_t hash_lock; /* 16 8 */ unsigned int mask; /* 24 4 */ unsigned int nr_buckets; /* 28 4 */ unsigned int prime; /* 32 4 */ unsigned int shift; /* 36 4 */ struct list_head * buckets; /* 40 8 */ int flush_failure; /* 48 4 */ unsigned int max_recovery; /* 52 4 */ spinlock_t region_lock; /* 56 4 */ atomic_t recovery_in_flight; /* 60 4 */ /* --- cacheline 1 boundary (64 bytes) --- */ struct list_head clean_regions; /* 64 16 */ struct list_head quiesced_regions; /* 80 16 */ struct list_head recovered_regions; /* 96 16 */ struct list_head failed_recovered_regions; /* 112 16 */ /* --- cacheline 2 boundary (128 bytes) --- */ struct semaphore recovery_count; /* 128 24 */ mempool_t region_pool; /* 152 72 */ /* --- cacheline 3 boundary (192 bytes) was 32 bytes ago --- */ void * context; /* 224 8 */ sector_t target_begin; /* 232 8 */ void (*dispatch_bios)(void *, struct bio_list *); /* 240 8 */ void (*wakeup_workers)(void *); /* 248 8 */ /* --- cacheline 4 boundary (256 bytes) --- */ void (*wakeup_all_recovery_waiters)(void *); /* 256 8 */ /* size: 264, cachelines: 5, members: 24 */ /* last cacheline: 8 bytes */ }; struct dm_snapshot { struct mutex lock; /* 0 32 */ struct dm_dev * origin; /* 32 8 */ struct dm_dev * cow; /* 40 8 */ struct dm_target * ti; /* 48 8 */ struct list_head list; /* 56 16 */ /* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */ int valid; /* 72 4 */ int snapshot_overflowed; /* 76 4 */ int active; /* 80 4 */ atomic_t pending_exceptions_count; /* 84 4 */ sector_t exception_start_sequence; /* 88 8 */ sector_t exception_complete_sequence; /* 96 8 */ struct list_head out_of_order_list; /* 104 16 */ mempool_t pending_pool; /* 120 72 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct dm_exception_table pending; /* 192 16 */ struct dm_exception_table complete; /* 208 16 */ spinlock_t pe_lock; /* 224 4 */ spinlock_t tracked_chunk_lock; /* 228 4 */ struct hlist_head tracked_chunk_hash[16]; /* 232 128 */ /* --- cacheline 5 boundary (320 bytes) was 40 bytes ago --- */ struct dm_exception_store * store; /* 360 8 */ struct dm_kcopyd_client * kcopyd_client; /* 368 8 */ long unsigned int state_bits; /* 376 8 */ /* --- cacheline 6 boundary (384 bytes) --- */ chunk_t first_merging_chunk; /* 384 8 */ int num_merging_chunks; /* 392 4 */ int merge_failed; /* 396 4 */ struct bio_list bios_queued_during_merge; /* 400 16 */ /* size: 416, cachelines: 7, members: 25 */ /* last cacheline: 32 bytes */ }; struct pool { struct list_head list; /* 0 16 */ struct dm_target * ti; /* 16 8 */ struct mapped_device * pool_md; /* 24 8 */ struct block_device * md_dev; /* 32 8 */ struct dm_pool_metadata * pmd; /* 40 8 */ dm_block_t low_water_blocks; /* 48 8 */ uint32_t sectors_per_block; /* 56 4 */ int sectors_per_block_shift; /* 60 4 */ /* --- cacheline 1 boundary (64 bytes) --- */ struct pool_features pf; /* 64 8 */ bool low_water_triggered:1; /* 72: 7 1 */ bool suspended:1; /* 72: 6 1 */ bool out_of_data_space:1; /* 72: 5 1 */ /* XXX 5 bits hole, try to pack */ /* XXX 7 bytes hole, try to pack */ struct dm_bio_prison * prison; /* 80 8 */ struct dm_kcopyd_client * copier; /* 88 8 */ struct work_struct worker; /* 96 32 */ /* --- cacheline 2 boundary (128 bytes) --- */ struct workqueue_struct * wq; /* 128 8 */ struct throttle throttle; /* 136 56 */ /* --- cacheline 3 boundary (192 bytes) --- */ struct delayed_work waker; /* 192 88 */ /* --- cacheline 4 boundary (256 bytes) was 24 bytes ago --- */ struct delayed_work no_space_timeout; /* 280 88 */ /* --- cacheline 5 boundary (320 bytes) was 48 bytes ago --- */ long unsigned int last_commit_jiffies; /* 368 8 */ unsigned int ref_count; /* 376 4 */ spinlock_t lock; /* 380 4 */ /* --- cacheline 6 boundary (384 bytes) --- */ struct bio_list deferred_flush_bios; /* 384 16 */ struct list_head prepared_mappings; /* 400 16 */ struct list_head prepared_discards; /* 416 16 */ struct list_head prepared_discards_pt2; /* 432 16 */ /* --- cacheline 7 boundary (448 bytes) --- */ struct list_head active_thins; /* 448 16 */ struct dm_deferred_set * shared_read_ds; /* 464 8 */ struct dm_deferred_set * all_io_ds; /* 472 8 */ struct dm_thin_new_mapping * next_mapping; /* 480 8 */ process_bio_fn process_bio; /* 488 8 */ process_bio_fn process_discard; /* 496 8 */ process_cell_fn process_cell; /* 504 8 */ /* --- cacheline 8 boundary (512 bytes) --- */ process_cell_fn process_discard_cell; /* 512 8 */ process_mapping_fn process_prepared_mapping; /* 520 8 */ process_mapping_fn process_prepared_discard; /* 528 8 */ process_mapping_fn process_prepared_discard_pt2; /* 536 8 */ struct dm_bio_prison_cell * * cell_sort_array; /* 544 8 */ mempool_t mapping_pool; /* 552 72 */ /* --- cacheline 9 boundary (576 bytes) was 48 bytes ago --- */ /* size: 624, cachelines: 10, members: 39 */ /* sum members: 617, holes: 1, sum holes: 7 */ /* bit holes: 1, sum bit holes: 5 bits */ /* last cacheline: 48 bytes */ }; struct dm_verity_fec { struct dm_dev * dev; /* 0 8 */ struct dm_bufio_client * data_bufio; /* 8 8 */ struct dm_bufio_client * bufio; /* 16 8 */ sector_t start; /* 24 8 */ sector_t blocks; /* 32 8 */ sector_t rounds; /* 40 8 */ sector_t hash_blocks; /* 48 8 */ unsigned char roots; /* 56 1 */ unsigned char rsn; /* 57 1 */ /* XXX 6 bytes hole, try to pack */ /* --- cacheline 1 boundary (64 bytes) --- */ mempool_t rs_pool; /* 64 72 */ /* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */ mempool_t prealloc_pool; /* 136 72 */ /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */ mempool_t extra_pool; /* 208 72 */ /* --- cacheline 4 boundary (256 bytes) was 24 bytes ago --- */ mempool_t output_pool; /* 280 72 */ /* --- cacheline 5 boundary (320 bytes) was 32 bytes ago --- */ struct kmem_cache * cache; /* 352 8 */ /* size: 360, cachelines: 6, members: 14 */ /* sum members: 354, holes: 1, sum holes: 6 */ /* last cacheline: 40 bytes */ }; struct dmz_target { struct dm_dev * ddev; /* 0 8 */ long unsigned int flags; /* 8 8 */ struct dmz_dev * dev; /* 16 8 */ struct dmz_metadata * metadata; /* 24 8 */ struct dmz_reclaim * reclaim; /* 32 8 */ struct radix_tree_root chunk_rxtree; /* 40 16 */ struct workqueue_struct * chunk_wq; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ struct mutex chunk_lock; /* 64 32 */ struct bio_set bio_set; /* 96 368 */ /* --- cacheline 7 boundary (448 bytes) was 16 bytes ago --- */ spinlock_t flush_lock; /* 464 4 */ /* XXX 4 bytes hole, try to pack */ struct bio_list flush_list; /* 472 16 */ struct delayed_work flush_work; /* 488 88 */ /* --- cacheline 9 boundary (576 bytes) --- */ struct workqueue_struct * flush_wq; /* 576 8 */ /* size: 584, cachelines: 10, members: 13 */ /* sum members: 580, holes: 1, sum holes: 4 */ /* last cacheline: 8 bytes */ };