Revert "Revert "[Feature][API-794]when a/b slot broken, rollback and repair it.-2.system partition rollback""

This reverts commit 3646d814962625eabe3d08fc34323929506fe265.

Reason for revert: <INSERT REASONING HERE>

Change-Id: I27bca8004386b66d474efacaa55c9151607e3e76
diff --git a/src/kernel/linux/v4.19/init/do_mounts_dm.c b/src/kernel/linux/v4.19/init/do_mounts_dm.c
index cb63c62..6df0b4c 100644
--- a/src/kernel/linux/v4.19/init/do_mounts_dm.c
+++ b/src/kernel/linux/v4.19/init/do_mounts_dm.c
@@ -11,7 +11,7 @@
 #include <linux/fs.h>
 #include <linux/string.h>
 #include <linux/delay.h>
-
+#include "../drivers/lynq_bootctrl/lynq_bootctrl.h"
 #include "do_mounts.h"
 
 #define DM_MAX_DEVICES 256
@@ -373,6 +373,9 @@
 	}
 
 	if (!dm_dev) {
+//xf.li@20230313 modify for ab_rollback start
+		printk("BOOTCTRL:can't find dm_dev.\n");
+//xf.li@20230313 modify for ab_rollback end
 		ret = -ENODEV;
 		goto free_dm_params;
 	}
@@ -393,6 +396,7 @@
 	char *uuid;
 	fmode_t fmode = FMODE_READ;
 	struct dm_device *devices;
+	int ret;
 
 	devices = dm_parse_args();
 
@@ -425,7 +429,9 @@
 			       target->type, target->params);
 
 			if (dm_wait_for_drive(target->params))
+			{
 				goto add_target_fail;
+			}
 
 			if (dm_table_add_target(table, target->type,
 						target->begin,
@@ -501,6 +507,13 @@
 dm_create_fail:
 	DMWARN("starting dm-%d (%s) failed",
 	       dev->minor, dev->name);
+//xf.li@20230313 modify for ab_rollback start
+	ret = bootctrl_mark_boot_unsuccessful();
+	if(ret != 0)
+	{
+		printk("BOOTCTRL:error rollback\n");
+	}
+//xf.li@20230313 modify for ab_rollback end
 	dm_setup_cleanup(devices);
 }