]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-fuse: restrict already_fuse_mounted function only for linux 45549/head
authorNikhilkumar Shelke <nshelke@redhat.com>
Tue, 22 Mar 2022 07:59:40 +0000 (13:29 +0530)
committerNikhilkumar Shelke <nshelke@redhat.com>
Mon, 28 Mar 2022 07:55:09 +0000 (13:25 +0530)
Signed-off-by: Nikhilkumar Shelke <nshelke@redhat.com>
qa/tasks/cephfs/test_misc.py
src/client/fuse_ll.cc
src/mount.fuse.ceph

index 3201425e09f3a537ebd3a4d138ca8bdcd91abeff..2e5387aecf7d2c14561188ed3461b0b7c13b8d44 100644 (file)
@@ -4,6 +4,7 @@ from tasks.cephfs.fuse_mount import FuseMount
 from tasks.cephfs.cephfs_test_case import CephFSTestCase
 from teuthology.exceptions import CommandFailedError
 import errno
+import platform
 import time
 import json
 import logging
@@ -30,6 +31,9 @@ class TestMisc(CephFSTestCase):
         p.wait()
 
     def test_fuse_mount_on_already_mounted_path(self):
+        if platform.system() != "Linux":
+            self.skipTest("Require Linux platform")
+
         if not isinstance(self.mount_a, FuseMount):
             self.skipTest("Require FUSE client")
 
index e060ac880877919907b709a529b0030dc9f29bb0..ee81752721c6bbffddcd6a9469827cb39a929239 100644 (file)
 #include <errno.h>
 #include <fcntl.h>
 #include <unistd.h>
+
+#if defined(__linux__)
 #include <libgen.h>
 #include <sys/vfs.h>
 #include <sys/xattr.h>
 #include <linux/magic.h>
+#endif
 
 // ceph
 #include "common/errno.h"
 #define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
 #define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
 
+#if defined(__linux__)
 #ifndef FUSE_SUPER_MAGIC
 #define FUSE_SUPER_MAGIC 0x65735546
 #endif
 
 #define _CEPH_CLIENT_ID        "ceph.client_id"
+#endif
 
 using namespace std;
 
@@ -173,6 +178,7 @@ public:
   struct fuse_args args;
 };
 
+#if defined(__linux__)
 static int already_fuse_mounted(const char *path, bool &already_mounted)
 {
   struct statx path_statx;
@@ -242,6 +248,13 @@ static int already_fuse_mounted(const char *path, bool &already_mounted)
 
   return err;
 }
+#else // non-linux platforms
+static int already_fuse_mounted(const char *path, bool &already_mounted)
+{
+  already_mounted = false;
+  return 0;
+}
+#endif
 
 static int getgroups(fuse_req_t req, gid_t **sgids)
 {
index 5f115d8efc306bcf1648f2ea32472987e1112299..59a296d964fecea1a9d68faaa37fc3b8c76d87e3 100755 (executable)
@@ -28,6 +28,7 @@ id=myuser,conf=/etc/ceph/foo.conf  /mnt/ceph   fuse.ceph   defaults   0 0
 import sys
 import argparse
 import errno
+import platform
 from subprocess import Popen
 
 def ceph_options(mntops):
@@ -74,7 +75,10 @@ def main(arguments):
     mount_cmd.communicate()
 
     if (mount_cmd.returncode != 0):
-        if (mount_cmd.returncode != errno.EBUSY):
+        if (platform.system() == "Linux"):
+            if (mount_cmd.returncode != errno.EBUSY):
+                print("Mount failed with status code: {}".format(mount_cmd.returncode))
+        else:
             print("Mount failed with status code: {}".format(mount_cmd.returncode))
 
 if __name__ == '__main__':