summaryrefslogtreecommitdiff
path: root/tests/fs-tests/integrity
diff options
context:
space:
mode:
authorCsókás, Bence <csokas.bence@prolan.hu>2024-08-26 13:24:59 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2024-09-25 07:51:11 +0200
commit729e703285f86b1a696df98276bf26058e3a04fa (patch)
tree54df5d667a399fad54ec0445dbbeab48827b4740 /tests/fs-tests/integrity
parentb14cc35e792107b40715ee3e20e82b3f7db4b068 (diff)
fs-tests: integck: Refactor: split out common remount logic
remount_tested_fs() and recover_tested_fs() both have almost the same code for remounting the target FS RO then RW. Split this sequence into a new function called remount_ro_rw(). Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> Link: https://lore.kernel.org/linux-mtd/5530437c-b564-461f-26af-85bde1a00cb3@huawei.com/T/#mad1d043095b3f64a1f1eddd2d87b1545e329e141 Signed-off-by: Csókás, Bence <csokas.bence@prolan.hu> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tests/fs-tests/integrity')
-rw-r--r--tests/fs-tests/integrity/integck.c85
1 files changed, 35 insertions, 50 deletions
diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c
index ad076b5..4a6ef16 100644
--- a/tests/fs-tests/integrity/integck.c
+++ b/tests/fs-tests/integrity/integck.c
@@ -2665,6 +2665,35 @@ static int umount_and_remount(int mounted, int reatt, int um_rorw)
}
/**
+ * Remount the test file-system RO first, then RW.
+ */
+static int remount_ro_rw(const char *tries)
+{
+ int ret;
+ unsigned long flags;
+
+ flags = fsinfo.mount_flags | MS_RDONLY | MS_REMOUNT;
+ ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
+ flags, fsinfo.mount_opts);
+ if (ret) {
+ pcv("cannot remount %s R/O%s", tries, fsinfo.mount_point);
+ return -1;
+ }
+
+ flags = fsinfo.mount_flags | MS_REMOUNT;
+ flags &= ~((unsigned long)MS_RDONLY);
+ ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
+ flags, fsinfo.mount_opts);
+ if (ret) {
+ pcv("remounted %s R/O%s, but cannot re-mount it R/W",
+ tries, fsinfo.mount_point);
+ return -1;
+ }
+
+ return 0;
+}
+
+/**
* Re-mount the test file-system. This function randomly select how to
* re-mount.
*/
@@ -2688,24 +2717,9 @@ static int remount_tested_fs(void)
um = 1;
if (rorw1) {
- flags = fsinfo.mount_flags | MS_RDONLY | MS_REMOUNT;
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("cannot remount %s R/O (1)",
- fsinfo.mount_point);
- return -1;
- }
-
- flags = fsinfo.mount_flags | MS_REMOUNT;
- flags &= ~((unsigned long)MS_RDONLY);
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("remounted %s R/O (1), but cannot re-mount it R/W",
- fsinfo.mount_point);
+ ret = remount_ro_rw(" (1)");
+ if (ret)
return -1;
- }
}
if (um) {
@@ -2726,23 +2740,9 @@ static int remount_tested_fs(void)
}
if (rorw2) {
- flags = fsinfo.mount_flags | MS_RDONLY | MS_REMOUNT;
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("cannot re-mount %s R/O (3)", fsinfo.mount_point);
- return -1;
- }
-
- flags = fsinfo.mount_flags | MS_REMOUNT;
- flags &= ~((unsigned long)MS_RDONLY);
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("remounted %s R/O (3), but cannot re-mount it back R/W",
- fsinfo.mount_point);
+ ret = remount_ro_rw(" (3)");
+ if (ret)
return -1;
- }
}
CHECK(chdir(fsinfo.mount_point) == 0);
@@ -3205,7 +3205,6 @@ static void free_fs_info(struct dir_info *dir)
static int recover_tested_fs(void)
{
int ret;
- unsigned long flags;
unsigned int um_rorw, rorw2;
struct mntent *mntent;
@@ -3227,23 +3226,9 @@ static int recover_tested_fs(void)
return -1;
if (rorw2) {
- flags = fsinfo.mount_flags | MS_RDONLY | MS_REMOUNT;
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("cannot re-mount %s R/O", fsinfo.mount_point);
- return -1;
- }
-
- flags = fsinfo.mount_flags | MS_REMOUNT;
- flags &= ~((unsigned long)MS_RDONLY);
- ret = mount(fsinfo.fsdev, fsinfo.mount_point, fsinfo.fstype,
- flags, fsinfo.mount_opts);
- if (ret) {
- pcv("remounted %s R/O, but cannot re-mount it back R/W",
- fsinfo.mount_point);
+ ret = remount_ro_rw("");
+ if (ret)
return -1;
- }
}
return 0;