From eef245fcb18c15f27a00421b7fcd0a2213ef356c Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Wed, 19 Feb 2025 12:51:32 -0500 Subject: [PATCH] test/libcephfs: update root operation return values Switch from EBUSY to reasonable and normal errors for operations on the root directory. Use the Client::path_walk machinery changes from the previous commit to catch most of them, otherwise return EINVAL (which is normal for other POSIX fs). Fixes: 6ed7f2364ae5507bab14c60b582929aa7b0ba400 Signed-off-by: Patrick Donnelly (cherry picked from commit 292f5ac45b8190223e97b3f9ae5904605de7a888) --- src/test/libcephfs/test.cc | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/test/libcephfs/test.cc b/src/test/libcephfs/test.cc index e049e6ba604..76dbd2df091 100644 --- a/src/test/libcephfs/test.cc +++ b/src/test/libcephfs/test.cc @@ -2060,30 +2060,34 @@ TEST(LibCephFS, SetSize) { TEST(LibCephFS, OperationsOnRoot) { + UserPerm *rootcred = ceph_userperm_new(0, 0, 0, NULL); + ASSERT_TRUE(rootcred); struct ceph_mount_info *cmount; - ASSERT_EQ(ceph_create(&cmount, NULL), 0); - ASSERT_EQ(ceph_conf_read_file(cmount, NULL), 0); + ASSERT_EQ(0, ceph_create(&cmount, NULL)); + ASSERT_EQ(0, ceph_conf_read_file(cmount, NULL)); ASSERT_EQ(0, ceph_conf_parse_env(cmount, NULL)); - ASSERT_EQ(ceph_mount(cmount, "/"), 0); + ASSERT_EQ(0, ceph_init(cmount)); + ASSERT_EQ(0, ceph_mount_perms_set(cmount, rootcred)); + ASSERT_EQ(0, ceph_mount(cmount, "/")); char dirname[32]; sprintf(dirname, "/somedir%x", getpid()); ASSERT_EQ(ceph_mkdir(cmount, dirname, 0755), 0); - ASSERT_EQ(ceph_rmdir(cmount, "/"), -EBUSY); + ASSERT_EQ(ceph_rmdir(cmount, "/"), -EINVAL); ASSERT_EQ(ceph_link(cmount, "/", "/"), -EEXIST); ASSERT_EQ(ceph_link(cmount, dirname, "/"), -EEXIST); ASSERT_EQ(ceph_link(cmount, "nonExisitingDir", "/"), -ENOENT); - ASSERT_EQ(ceph_unlink(cmount, "/"), -EISDIR); + ASSERT_EQ(ceph_unlink(cmount, "/"), -EINVAL); - ASSERT_EQ(ceph_rename(cmount, "/", "/"), -EBUSY); - ASSERT_EQ(ceph_rename(cmount, dirname, "/"), -EBUSY); - ASSERT_EQ(ceph_rename(cmount, "nonExistingDir", "/"), -EBUSY); - ASSERT_EQ(ceph_rename(cmount, "/", dirname), -EBUSY); - ASSERT_EQ(ceph_rename(cmount, "/", "nonExistingDir"), -EBUSY); + ASSERT_EQ(ceph_rename(cmount, "/", "/"), -EINVAL); + ASSERT_EQ(ceph_rename(cmount, dirname, "/"), -EINVAL); + ASSERT_EQ(ceph_rename(cmount, "nonExistingDir", "/"), -ENOENT); + ASSERT_EQ(ceph_rename(cmount, "/", dirname), -EINVAL); + ASSERT_EQ(ceph_rename(cmount, "/", "nonExistingDir"), -EINVAL); ASSERT_EQ(ceph_mkdir(cmount, "/", 0777), -EEXIST); @@ -2094,6 +2098,7 @@ TEST(LibCephFS, OperationsOnRoot) ASSERT_EQ(ceph_symlink(cmount, "nonExistingDir", "/"), -EEXIST); ceph_shutdown(cmount); + ceph_userperm_destroy(rootcred); } // no rlimits on Windows -- 2.39.5