diff options
author | Hannes Reinecke <hare@suse.de> | 2013-12-17 09:18:49 +0100 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2014-01-09 21:48:17 -0800 |
commit | c66094bf325ee406b92298d73089ee25484a0263 (patch) | |
tree | cfa2fb231dbd3e120ad2d75f96c250c24233978a /include/target | |
parent | fbfe858fea2a45df6339eb03dd1715b51f1bdc92 (diff) | |
download | op-kernel-dev-c66094bf325ee406b92298d73089ee25484a0263.zip op-kernel-dev-c66094bf325ee406b92298d73089ee25484a0263.tar.gz |
target_core_alua: Referrals infrastructure
Add infrastructure for referrals.
v2 changes:
- Fix unsigned long long division in core_alua_state_lba_dependent on
32-bit (Fengguang + Chen + Hannes)
- Fix compile warning in core_alua_state_lba_dependent (nab)
- Convert segment_* + sectors variables in core_alua_state_lba_dependent
to u64 (Hannes)
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'include/target')
-rw-r--r-- | include/target/target_core_base.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 6c80015..1ba19a4 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -247,10 +247,28 @@ typedef enum { struct se_cmd; +struct t10_alua_lba_map_member { + struct list_head lba_map_mem_list; + int lba_map_mem_alua_state; + int lba_map_mem_alua_pg_id; +}; + +struct t10_alua_lba_map { + u64 lba_map_first_lba; + u64 lba_map_last_lba; + struct list_head lba_map_list; + struct list_head lba_map_mem_list; +}; + struct t10_alua { /* ALUA Target Port Group ID */ u16 alua_tg_pt_gps_counter; u32 alua_tg_pt_gps_count; + /* Referrals support */ + spinlock_t lba_map_lock; + u32 lba_map_segment_size; + u32 lba_map_segment_multiplier; + struct list_head lba_map_list; spinlock_t tg_pt_gps_lock; struct se_device *t10_dev; /* Used for default ALUA Target Port Group */ |