@@ -694,7 +694,6 @@ static int dm_bow_ctr(struct dm_target *ti, unsigned int argc, char **argv)
694
694
struct bow_context * bc ;
695
695
struct bow_range * br ;
696
696
int ret ;
697
- struct mapped_device * md = dm_table_get_md (ti -> table );
698
697
699
698
if (argc < 1 ) {
700
699
ti -> error = "Invalid argument count" ;
@@ -735,14 +734,6 @@ static int dm_bow_ctr(struct dm_target *ti, unsigned int argc, char **argv)
735
734
}
736
735
737
736
init_completion (& bc -> kobj_holder .completion );
738
- ret = kobject_init_and_add (& bc -> kobj_holder .kobj , & bow_ktype ,
739
- & disk_to_dev (dm_disk (md ))-> kobj , "%s" ,
740
- "bow" );
741
- if (ret ) {
742
- ti -> error = "Cannot create sysfs node" ;
743
- goto bad ;
744
- }
745
-
746
737
mutex_init (& bc -> ranges_lock );
747
738
bc -> ranges = RB_ROOT ;
748
739
bc -> bufio = dm_bufio_client_create (bc -> dev -> bdev , bc -> block_size , 1 , 0 ,
@@ -799,6 +790,22 @@ static int dm_bow_ctr(struct dm_target *ti, unsigned int argc, char **argv)
799
790
return ret ;
800
791
}
801
792
793
+ void dm_bow_resume (struct dm_target * ti )
794
+ {
795
+ struct mapped_device * md = dm_table_get_md (ti -> table );
796
+ struct bow_context * bc = ti -> private ;
797
+ int ret ;
798
+
799
+ if (bc -> kobj_holder .kobj .state_initialized )
800
+ return ;
801
+
802
+ ret = kobject_init_and_add (& bc -> kobj_holder .kobj , & bow_ktype ,
803
+ & disk_to_dev (dm_disk (md ))-> kobj , "%s" ,
804
+ "bow" );
805
+ if (ret )
806
+ ti -> error = "Cannot create sysfs node" ;
807
+ }
808
+
802
809
/****** Handle writes ******/
803
810
804
811
static int prepare_unchanged_range (struct bow_context * bc , struct bow_range * br ,
@@ -1273,6 +1280,7 @@ static struct target_type bow_target = {
1273
1280
.features = DM_TARGET_PASSES_CRYPTO ,
1274
1281
.module = THIS_MODULE ,
1275
1282
.ctr = dm_bow_ctr ,
1283
+ .resume = dm_bow_resume ,
1276
1284
.dtr = dm_bow_dtr ,
1277
1285
.map = dm_bow_map ,
1278
1286
.status = dm_bow_status ,
0 commit comments