From 2980d2fa164c58f8d315ca659fc8921db68a005d Mon Sep 17 00:00:00 2001 From: Tadeusz Struk Date: Thu, 10 Mar 2022 15:40:05 -0800 Subject: [PATCH] ANDROID: selftests: incfs: Add stacked_mount_test Bug: 211066171 Signed-off-by: Tadeusz Struk Change-Id: Ie09d6c1b04e0da7787d371c1cec5c04783b576a7 --- .../selftests/filesystems/incfs/incfs_test.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/testing/selftests/filesystems/incfs/incfs_test.c b/tools/testing/selftests/filesystems/incfs/incfs_test.c index bfd5f1ac7c7a..b3773bd1df91 100644 --- a/tools/testing/selftests/filesystems/incfs/incfs_test.c +++ b/tools/testing/selftests/filesystems/incfs/incfs_test.c @@ -4631,6 +4631,29 @@ out: return result; } +static int stacked_mount_test(const char *mount_dir) +{ + int result = TEST_FAILURE; + char *backing_dir = NULL; + + /* Mount with no node */ + TEST(backing_dir = create_backing_dir(mount_dir), backing_dir); + TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0); + /* Try mounting another instance with same name */ + TESTEQUAL(mount_fs(mount_dir, backing_dir, 0), 0); + /* Try unmounting the first instance */ + TESTEQUAL(umount_fs(mount_dir), 0); + /* Try unmounting the second instance */ + TESTEQUAL(umount_fs(mount_dir), 0); + result = TEST_SUCCESS; +out: + /* Cleanup */ + rmdir(mount_dir); + rmdir(backing_dir); + free(backing_dir); + return result; +} + static char *setup_mount_dir() { struct stat st; @@ -4758,6 +4781,7 @@ int main(int argc, char *argv[]) MAKE_TEST(stat_test), MAKE_TEST(sysfs_test), MAKE_TEST(sysfs_rename_test), + MAKE_TEST(stacked_mount_test), }; #undef MAKE_TEST