@@ -771,39 +771,20 @@ static int lio_target_init_nodeacl(struct se_node_acl *se_nacl,
771
771
{
772
772
struct iscsi_node_acl * acl =
773
773
container_of (se_nacl , struct iscsi_node_acl , se_node_acl );
774
- struct config_group * stats_cg = & se_nacl -> acl_fabric_stat_group ;
775
-
776
- stats_cg -> default_groups = kmalloc (sizeof (struct config_group * ) * 2 ,
777
- GFP_KERNEL );
778
- if (!stats_cg -> default_groups ) {
779
- pr_err ("Unable to allocate memory for"
780
- " stats_cg->default_groups\n" );
781
- return - ENOMEM ;
782
- }
783
774
784
- stats_cg -> default_groups [0 ] = & acl -> node_stat_grps .iscsi_sess_stats_group ;
785
- stats_cg -> default_groups [1 ] = NULL ;
786
775
config_group_init_type_name (& acl -> node_stat_grps .iscsi_sess_stats_group ,
787
776
"iscsi_sess_stats" , & iscsi_stat_sess_cit );
788
-
777
+ configfs_add_default_group (& acl -> node_stat_grps .iscsi_sess_stats_group ,
778
+ & se_nacl -> acl_fabric_stat_group );
789
779
return 0 ;
790
780
}
791
781
792
782
static void lio_target_cleanup_nodeacl ( struct se_node_acl * se_nacl )
793
783
{
794
784
struct iscsi_node_acl * acl = container_of (se_nacl ,
795
785
struct iscsi_node_acl , se_node_acl );
796
- struct config_item * df_item ;
797
- struct config_group * stats_cg ;
798
- int i ;
799
-
800
- stats_cg = & acl -> se_node_acl .acl_fabric_stat_group ;
801
- for (i = 0 ; stats_cg -> default_groups [i ]; i ++ ) {
802
- df_item = & stats_cg -> default_groups [i ]-> cg_item ;
803
- stats_cg -> default_groups [i ] = NULL ;
804
- config_item_put (df_item );
805
- }
806
- kfree (stats_cg -> default_groups );
786
+
787
+ configfs_remove_default_groups (& acl -> se_node_acl .acl_fabric_stat_group );
807
788
}
808
789
809
790
/* End items for lio_target_acl_cit */
@@ -1260,42 +1241,37 @@ static struct se_wwn *lio_target_call_coreaddtiqn(
1260
1241
struct config_group * group ,
1261
1242
const char * name )
1262
1243
{
1263
- struct config_group * stats_cg ;
1264
1244
struct iscsi_tiqn * tiqn ;
1265
1245
1266
1246
tiqn = iscsit_add_tiqn ((unsigned char * )name );
1267
1247
if (IS_ERR (tiqn ))
1268
1248
return ERR_CAST (tiqn );
1269
- /*
1270
- * Setup struct iscsi_wwn_stat_grps for se_wwn->fabric_stat_group.
1271
- */
1272
- stats_cg = & tiqn -> tiqn_wwn .fabric_stat_group ;
1273
-
1274
- stats_cg -> default_groups = kmalloc (sizeof (struct config_group * ) * 6 ,
1275
- GFP_KERNEL );
1276
- if (!stats_cg -> default_groups ) {
1277
- pr_err ("Unable to allocate memory for"
1278
- " stats_cg->default_groups\n" );
1279
- iscsit_del_tiqn (tiqn );
1280
- return ERR_PTR (- ENOMEM );
1281
- }
1282
1249
1283
- stats_cg -> default_groups [0 ] = & tiqn -> tiqn_stat_grps .iscsi_instance_group ;
1284
- stats_cg -> default_groups [1 ] = & tiqn -> tiqn_stat_grps .iscsi_sess_err_group ;
1285
- stats_cg -> default_groups [2 ] = & tiqn -> tiqn_stat_grps .iscsi_tgt_attr_group ;
1286
- stats_cg -> default_groups [3 ] = & tiqn -> tiqn_stat_grps .iscsi_login_stats_group ;
1287
- stats_cg -> default_groups [4 ] = & tiqn -> tiqn_stat_grps .iscsi_logout_stats_group ;
1288
- stats_cg -> default_groups [5 ] = NULL ;
1289
1250
config_group_init_type_name (& tiqn -> tiqn_stat_grps .iscsi_instance_group ,
1290
1251
"iscsi_instance" , & iscsi_stat_instance_cit );
1252
+ configfs_add_default_group (& tiqn -> tiqn_stat_grps .iscsi_instance_group ,
1253
+ & tiqn -> tiqn_wwn .fabric_stat_group );
1254
+
1291
1255
config_group_init_type_name (& tiqn -> tiqn_stat_grps .iscsi_sess_err_group ,
1292
1256
"iscsi_sess_err" , & iscsi_stat_sess_err_cit );
1257
+ configfs_add_default_group (& tiqn -> tiqn_stat_grps .iscsi_sess_err_group ,
1258
+ & tiqn -> tiqn_wwn .fabric_stat_group );
1259
+
1293
1260
config_group_init_type_name (& tiqn -> tiqn_stat_grps .iscsi_tgt_attr_group ,
1294
1261
"iscsi_tgt_attr" , & iscsi_stat_tgt_attr_cit );
1262
+ configfs_add_default_group (& tiqn -> tiqn_stat_grps .iscsi_tgt_attr_group ,
1263
+ & tiqn -> tiqn_wwn .fabric_stat_group );
1264
+
1295
1265
config_group_init_type_name (& tiqn -> tiqn_stat_grps .iscsi_login_stats_group ,
1296
1266
"iscsi_login_stats" , & iscsi_stat_login_cit );
1267
+ configfs_add_default_group (& tiqn -> tiqn_stat_grps .iscsi_login_stats_group ,
1268
+ & tiqn -> tiqn_wwn .fabric_stat_group );
1269
+
1297
1270
config_group_init_type_name (& tiqn -> tiqn_stat_grps .iscsi_logout_stats_group ,
1298
1271
"iscsi_logout_stats" , & iscsi_stat_logout_cit );
1272
+ configfs_add_default_group (& tiqn -> tiqn_stat_grps .iscsi_logout_stats_group ,
1273
+ & tiqn -> tiqn_wwn .fabric_stat_group );
1274
+
1299
1275
1300
1276
pr_debug ("LIO_Target_ConfigFS: REGISTER -> %s\n" , tiqn -> tiqn );
1301
1277
pr_debug ("LIO_Target_ConfigFS: REGISTER -> Allocated Node:"
@@ -1307,17 +1283,8 @@ static void lio_target_call_coredeltiqn(
1307
1283
struct se_wwn * wwn )
1308
1284
{
1309
1285
struct iscsi_tiqn * tiqn = container_of (wwn , struct iscsi_tiqn , tiqn_wwn );
1310
- struct config_item * df_item ;
1311
- struct config_group * stats_cg ;
1312
- int i ;
1313
-
1314
- stats_cg = & tiqn -> tiqn_wwn .fabric_stat_group ;
1315
- for (i = 0 ; stats_cg -> default_groups [i ]; i ++ ) {
1316
- df_item = & stats_cg -> default_groups [i ]-> cg_item ;
1317
- stats_cg -> default_groups [i ] = NULL ;
1318
- config_item_put (df_item );
1319
- }
1320
- kfree (stats_cg -> default_groups );
1286
+
1287
+ configfs_remove_default_groups (& tiqn -> tiqn_wwn .fabric_stat_group );
1321
1288
1322
1289
pr_debug ("LIO_Target_ConfigFS: DEREGISTER -> %s\n" ,
1323
1290
tiqn -> tiqn );
0 commit comments