ubi: Split io_failures into write_failure and erase_failure
authorZhaoLong Wang <wangzhaolong1@huawei.com>
Tue, 26 Dec 2023 01:01:10 +0000 (09:01 +0800)
committerRichard Weinberger <richard@nod.at>
Sat, 6 Jan 2024 22:39:29 +0000 (23:39 +0100)
The emulate_io_failures debugfs entry controls both write
failure and erase failure. This patch split io_failures
to write_failure and erase_failure.

Signed-off-by: ZhaoLong Wang <wangzhaolong1@huawei.com>
Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/debug.c
drivers/mtd/ubi/debug.h

index fd101ad6f12fcbbd5baf6d7ce3ed8659db9c2d64..186306228b4d9ff721c5522fdb92f4acc44e20b5 100644 (file)
@@ -14,7 +14,8 @@
 
 #ifdef CONFIG_MTD_UBI_FAULT_INJECTION
 static DECLARE_FAULT_ATTR(fault_bitflips_attr);
-static DECLARE_FAULT_ATTR(fault_io_failures_attr);
+static DECLARE_FAULT_ATTR(fault_write_failure_attr);
+static DECLARE_FAULT_ATTR(fault_erase_failure_attr);
 static DECLARE_FAULT_ATTR(fault_power_cut_attr);
 
 #define FAIL_ACTION(name, fault_attr)                  \
@@ -24,7 +25,8 @@ bool should_fail_##name(void)                         \
 }
 
 FAIL_ACTION(bitflips,          fault_bitflips_attr)
-FAIL_ACTION(io_failures,       fault_io_failures_attr)
+FAIL_ACTION(write_failure,     fault_write_failure_attr)
+FAIL_ACTION(erase_failure,     fault_erase_failure_attr)
 FAIL_ACTION(power_cut,         fault_power_cut_attr)
 #endif
 
@@ -245,8 +247,11 @@ static void dfs_create_fault_entry(struct dentry *parent)
        fault_create_debugfs_attr("emulate_bitflips", dir,
                                  &fault_bitflips_attr);
 
-       fault_create_debugfs_attr("emulate_io_failures", dir,
-                                 &fault_io_failures_attr);
+       fault_create_debugfs_attr("emulate_write_failure", dir,
+                                 &fault_write_failure_attr);
+
+       fault_create_debugfs_attr("emulate_erase_failure", dir,
+                                 &fault_erase_failure_attr);
 
        fault_create_debugfs_attr("emulate_power_cut", dir,
                                  &fault_power_cut_attr);
index f2f499feff49f36b0710d209d045bd388623662b..8cdd25eee0138440e8dd1853597d4c753df0fc51 100644 (file)
@@ -92,10 +92,12 @@ static inline int ubi_dbg_erase_failure(const struct ubi_device *ubi)
 /* Emulate bit-flips */
 #define MASK_BITFLIPS                          (1 << 2)
 /* Emulates -EIO during write/erase */
-#define MASK_IO_FAILURE                                (1 << 3)
+#define MASK_WRITE_FAILURE                     (1 << 3)
+#define MASK_ERASE_FAILURE                     (1 << 4)
 
 extern bool should_fail_bitflips(void);
-extern bool should_fail_io_failures(void);
+extern bool should_fail_write_failure(void);
+extern bool should_fail_erase_failure(void);
 extern bool should_fail_power_cut(void);
 
 static inline bool ubi_dbg_fail_bitflip(const struct ubi_device *ubi)
@@ -107,15 +109,15 @@ static inline bool ubi_dbg_fail_bitflip(const struct ubi_device *ubi)
 
 static inline bool ubi_dbg_fail_write(const struct ubi_device *ubi)
 {
-       if (ubi->dbg.emulate_failures & MASK_IO_FAILURE)
-               return should_fail_io_failures();
+       if (ubi->dbg.emulate_failures & MASK_WRITE_FAILURE)
+               return should_fail_write_failure();
        return false;
 }
 
 static inline bool ubi_dbg_fail_erase(const struct ubi_device *ubi)
 {
-       if (ubi->dbg.emulate_failures & MASK_IO_FAILURE)
-               return should_fail_io_failures();
+       if (ubi->dbg.emulate_failures & MASK_ERASE_FAILURE)
+               return should_fail_erase_failure();
        return false;
 }