]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
use absolute paths when using fuse
authorsageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 7 Mar 2007 17:22:45 +0000 (17:22 +0000)
committersageweil <sageweil@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 7 Mar 2007 17:22:45 +0000 (17:22 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1179 29311d96-e01e-0410-9327-a35deaab8ce9

trunk/ceph/Makefile
trunk/ceph/cfuse.cc
trunk/ceph/common/Logger.cc
trunk/ceph/config.cc
trunk/ceph/config.h
trunk/ceph/fakefuse.cc
trunk/ceph/mon/MonitorStore.cc

index 67097eab65a2a485adb9a6d768b2fb5e1624ce82..8fa037a3984e24b8f8c2fffabd02740f6e0ba83a 100644 (file)
@@ -111,7 +111,7 @@ OSBDB_OBJS = \
 OSBDB_OBJ = osbdb.o
 endif
 
-TARGETS = cmon cosd cmds cfuse csyn newsyn fakesyn mkmonmap
+TARGETS = cmon cosd cmds csyn newsyn fakesyn mkmonmap cfuse fakefuse
 
 SRCS=*.cc */*.cc *.h */*.h */*/*.h
 
index 3c73c3d885a19f1297b8bbc3bf9a5ace9f9148e0..4b7e490c26b76d80a3057daf6123f51e553648f5 100644 (file)
@@ -43,6 +43,9 @@ int main(int argc, char **argv, char *envp[]) {
   // args for fuse
   vec_to_argv(args, argc, argv);
 
+  // FUSE will chdir("/"); be ready.
+  g_conf.use_abspaths = true;
+
   // load monmap
   MonMap monmap;
   int r = monmap.read(".ceph_monmap");
index bb9923d6a2cd39909b627a259024a844df0b02fe..2fb722a5b0f7c6e42f422206805d15a478dcdb60 100644 (file)
@@ -34,6 +34,12 @@ Logger::Logger(string fn, LogType *type)
 {
   logger_lock.Lock();
   {
+    filename = "";
+    if (g_conf.use_abspaths) {
+      filename = get_current_dir_name();
+      filename += "/";
+    }
+
     filename = "log/";
     if (g_conf.log_name) {
       filename += g_conf.log_name;
index 7fe1ae9b67fa65bf5e63a7a090a3c26631972b8f..516a0e1c1ce29ba6f702ed9ab5b9dcee153bbbf3 100644 (file)
@@ -103,6 +103,9 @@ md_config_t g_conf = {
   
   debug_after: 0,
   
+  // -- misc --
+  use_abspaths: false,      // make monitorstore et al use absolute path (to workaround FUSE chdir("/"))
+
   // --- clock ---
   clock_lock: false,
   
@@ -130,7 +133,6 @@ md_config_t g_conf = {
   mon_osd_down_out_interval: 5,  // seconds
   mon_lease: 2.000,  // seconds
   mon_stop_with_last_mds: true,
-  mon_store_abspath: false,      // make monitorstore use absolute path (to workaround fakefuse idiocy)
 
   // --- client ---
   client_cache_size: 300,
index 4cdc8b92da97668cac3c32ca27752e449acebdc8..3e59b09249d336aa0b855b1d49af974cec5994c2 100644 (file)
@@ -81,6 +81,9 @@ struct md_config_t {
 
   int debug_after;
 
+  // misc
+  bool use_abspaths;
+
   // clock
   bool clock_lock;
 
@@ -108,7 +111,6 @@ struct md_config_t {
   int mon_osd_down_out_interval;
   float mon_lease;
   bool mon_stop_with_last_mds;
-  bool mon_store_abspath;
 
   // client
   int      client_cache_size;
index 1b8c526069711c5fa96945610bf9910900c9a181..2edf3c7930e7ae247a887eba746d4f7dae65bfad 100644 (file)
@@ -75,8 +75,8 @@ int main(int argc, char **argv) {
   args = nargs;
   vec_to_argv(args, argc, argv);
 
-  // make monitorstore use abspath, since fuse seems to screw with the cwd
-  g_conf.mon_store_abspath = true;
+  // FUSE will chdir("/"); be ready.
+  g_conf.use_abspaths = true;
 
   MonMap *monmap = new MonMap(g_conf.num_mon);
   
index 5185eb8206ded732d3ec27c35d61805bdb30afea..9808d4223bebe83ca6dcd18e494ae8f680fc39ba 100644 (file)
@@ -36,7 +36,7 @@ void MonitorStore::mount()
   }
   ::closedir(d);
 
-  if (g_conf.mon_store_abspath) {
+  if (g_conf.use_abspaths) {
     // combine it with the cwd, in case fuse screws things up (i.e. fakefuse)
     string old = dir;
     dir = get_current_dir_name();