target: Add DEF_TB_DEFAULT_ATTRIBS macro for virtual device attrs
authorNicholas Bellinger <nab@linux-iscsi.org>
Fri, 28 Nov 2014 03:49:36 +0000 (19:49 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Tue, 2 Dec 2014 05:36:02 +0000 (21:36 -0800)
This helper macro adds the default set of 30 device attributes for
virtual devices from existing target_core_configfs.c code, and moves
the definitions into a single macro to create the structs necessary
for backend drivers.

It allows them to populate their own external struct configfs_attribute
for se_subsystem_api->tb_cits.tb_dev_attrib_cit.ct_attrs.

Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
include/target/target_core_backend_configfs.h

index f91935b5ef24f6ef5b45bcf7d6ce0cea6ed3860e..3247d7530107968aa7c1d1957f96790c226845dd 100644 (file)
@@ -50,4 +50,71 @@ static struct target_backend_dev_attrib_attribute _backend##_dev_attrib_##_name
        __CONFIGFS_EATTR_RO(_name,                                      \
        _backend##_dev_show_attr_##_name);
 
+/*
+ * Default list of target backend device attributes as defined by
+ * struct se_dev_attrib
+ */
+
+#define DEF_TB_DEFAULT_ATTRIBS(_backend)                               \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_model_alias);               \
+       TB_DEV_ATTR(_backend, emulate_model_alias, S_IRUGO | S_IWUSR);  \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_dpo);                       \
+       TB_DEV_ATTR(_backend, emulate_dpo, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_fua_write);                 \
+       TB_DEV_ATTR(_backend, emulate_fua_write, S_IRUGO | S_IWUSR);    \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_fua_read);                  \
+       TB_DEV_ATTR(_backend, emulate_fua_read, S_IRUGO | S_IWUSR);     \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_write_cache);               \
+       TB_DEV_ATTR(_backend, emulate_write_cache, S_IRUGO | S_IWUSR);  \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_ua_intlck_ctrl);            \
+       TB_DEV_ATTR(_backend, emulate_ua_intlck_ctrl, S_IRUGO | S_IWUSR); \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_tas);                       \
+       TB_DEV_ATTR(_backend, emulate_tas, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_tpu);                       \
+       TB_DEV_ATTR(_backend, emulate_tpu, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_tpws);                      \
+       TB_DEV_ATTR(_backend, emulate_tpws, S_IRUGO | S_IWUSR);         \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_caw);                       \
+       TB_DEV_ATTR(_backend, emulate_caw, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_3pc);                       \
+       TB_DEV_ATTR(_backend, emulate_3pc, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, pi_prot_type);                      \
+       TB_DEV_ATTR(_backend, pi_prot_type, S_IRUGO | S_IWUSR);         \
+       DEF_TB_DEV_ATTRIB_RO(_backend, hw_pi_prot_type);                \
+       TB_DEV_ATTR_RO(_backend, hw_pi_prot_type);                      \
+       DEF_TB_DEV_ATTRIB(_backend, pi_prot_format);                    \
+       TB_DEV_ATTR(_backend, pi_prot_format, S_IRUGO | S_IWUSR);       \
+       DEF_TB_DEV_ATTRIB(_backend, enforce_pr_isids);                  \
+       TB_DEV_ATTR(_backend, enforce_pr_isids, S_IRUGO | S_IWUSR);     \
+       DEF_TB_DEV_ATTRIB(_backend, is_nonrot);                         \
+       TB_DEV_ATTR(_backend, is_nonrot, S_IRUGO | S_IWUSR);            \
+       DEF_TB_DEV_ATTRIB(_backend, emulate_rest_reord);                \
+       TB_DEV_ATTR(_backend, emulate_rest_reord, S_IRUGO | S_IWUSR);   \
+       DEF_TB_DEV_ATTRIB(_backend, force_pr_aptpl);                    \
+       TB_DEV_ATTR(_backend, force_pr_aptpl, S_IRUGO | S_IWUSR);       \
+       DEF_TB_DEV_ATTRIB_RO(_backend, hw_block_size);                  \
+       TB_DEV_ATTR_RO(_backend, hw_block_size);                        \
+       DEF_TB_DEV_ATTRIB(_backend, block_size);                        \
+       TB_DEV_ATTR(_backend, block_size, S_IRUGO | S_IWUSR);           \
+       DEF_TB_DEV_ATTRIB_RO(_backend, hw_max_sectors);                 \
+       TB_DEV_ATTR_RO(_backend, hw_max_sectors);                       \
+       DEF_TB_DEV_ATTRIB(_backend, fabric_max_sectors);                \
+       TB_DEV_ATTR(_backend, fabric_max_sectors, S_IRUGO | S_IWUSR);   \
+       DEF_TB_DEV_ATTRIB(_backend, optimal_sectors);                   \
+       TB_DEV_ATTR(_backend, optimal_sectors, S_IRUGO | S_IWUSR);      \
+       DEF_TB_DEV_ATTRIB_RO(_backend, hw_queue_depth);                 \
+       TB_DEV_ATTR_RO(_backend, hw_queue_depth);                       \
+       DEF_TB_DEV_ATTRIB(_backend, queue_depth);                       \
+       TB_DEV_ATTR(_backend, queue_depth, S_IRUGO | S_IWUSR);          \
+       DEF_TB_DEV_ATTRIB(_backend, max_unmap_lba_count);               \
+       TB_DEV_ATTR(_backend, max_unmap_lba_count, S_IRUGO | S_IWUSR);  \
+       DEF_TB_DEV_ATTRIB(_backend, max_unmap_block_desc_count);        \
+       TB_DEV_ATTR(_backend, max_unmap_block_desc_count, S_IRUGO | S_IWUSR); \
+       DEF_TB_DEV_ATTRIB(_backend, unmap_granularity);                 \
+       TB_DEV_ATTR(_backend, unmap_granularity, S_IRUGO | S_IWUSR);    \
+       DEF_TB_DEV_ATTRIB(_backend, unmap_granularity_alignment);       \
+       TB_DEV_ATTR(_backend, unmap_granularity_alignment, S_IRUGO | S_IWUSR); \
+       DEF_TB_DEV_ATTRIB(_backend, max_write_same_len);                \
+       TB_DEV_ATTR(_backend, max_write_same_len, S_IRUGO | S_IWUSR);
+
 #endif /* TARGET_CORE_BACKEND_CONFIGFS_H */