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);
}