OSDN Git Service

Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / include / target / target_core_base.h
index 5f48754..0a2c740 100644 (file)
@@ -563,6 +563,36 @@ struct se_node_acl {
        struct kref             acl_kref;
 };
 
+static inline struct se_node_acl *acl_to_nacl(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_node_acl,
+                       acl_group);
+}
+
+static inline struct se_node_acl *attrib_to_nacl(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_node_acl,
+                       acl_attrib_group);
+}
+
+static inline struct se_node_acl *auth_to_nacl(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_node_acl,
+                       acl_auth_group);
+}
+
+static inline struct se_node_acl *param_to_nacl(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_node_acl,
+                       acl_param_group);
+}
+
+static inline struct se_node_acl *fabric_stat_to_nacl(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_node_acl,
+                       acl_fabric_stat_group);
+}
+
 struct se_session {
        unsigned                sess_tearing_down:1;
        u64                     sess_bin_isid;
@@ -821,6 +851,12 @@ struct se_tpg_np {
        struct config_group     tpg_np_group;
 };
 
+static inline struct se_tpg_np *to_tpg_np(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_tpg_np,
+                       tpg_np_group);
+}
+
 struct se_portal_group {
        /*
         * PROTOCOL IDENTIFIER value per SPC4, 7.5.1.
@@ -857,6 +893,30 @@ struct se_portal_group {
        struct config_group     tpg_param_group;
 };
 
+static inline struct se_portal_group *to_tpg(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_portal_group,
+                       tpg_group);
+}
+
+static inline struct se_portal_group *attrib_to_tpg(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_portal_group,
+                       tpg_attrib_group);
+}
+
+static inline struct se_portal_group *auth_to_tpg(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_portal_group,
+                       tpg_auth_group);
+}
+
+static inline struct se_portal_group *param_to_tpg(struct config_item *item)
+{
+       return container_of(to_config_group(item), struct se_portal_group,
+                       tpg_param_group);
+}
+
 struct se_wwn {
        struct target_fabric_configfs *wwn_tf;
        struct config_group     wwn_group;