Skip to content

Commit 88e27b1

Browse files
ANDROID: dm-bow: Fix 5.15 compatibility issue
Patch https://patchwork.kernel.org/project/linux-block/patch/20210804094147.459763-8-hch@lst.de/ delays registering the gendisk, so move creating our sysfs nodes until resume. Test: runs Bug: 210958368 Change-Id: If671893d50434bb39ea37babb0bea05cebae6f54 Signed-off-by: Paul Lawrence <paullawrence@google.com>
1 parent 63a1e5f commit 88e27b1

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

drivers/md/dm-bow.c

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,6 @@ static int dm_bow_ctr(struct dm_target *ti, unsigned int argc, char **argv)
694694
struct bow_context *bc;
695695
struct bow_range *br;
696696
int ret;
697-
struct mapped_device *md = dm_table_get_md(ti->table);
698697

699698
if (argc < 1) {
700699
ti->error = "Invalid argument count";
@@ -735,14 +734,6 @@ static int dm_bow_ctr(struct dm_target *ti, unsigned int argc, char **argv)
735734
}
736735

737736
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-
746737
mutex_init(&bc->ranges_lock);
747738
bc->ranges = RB_ROOT;
748739
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)
799790
return ret;
800791
}
801792

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+
802809
/****** Handle writes ******/
803810

804811
static int prepare_unchanged_range(struct bow_context *bc, struct bow_range *br,
@@ -1273,6 +1280,7 @@ static struct target_type bow_target = {
12731280
.features = DM_TARGET_PASSES_CRYPTO,
12741281
.module = THIS_MODULE,
12751282
.ctr = dm_bow_ctr,
1283+
.resume = dm_bow_resume,
12761284
.dtr = dm_bow_dtr,
12771285
.map = dm_bow_map,
12781286
.status = dm_bow_status,

0 commit comments

Comments
 (0)