]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-mon: check fs stats just before preforking 2557/head
authorJoao Eduardo Luis <joao@redhat.com>
Tue, 23 Sep 2014 13:02:55 +0000 (14:02 +0100)
committerJoao Eduardo Luis <joao@redhat.com>
Tue, 23 Sep 2014 13:05:48 +0000 (14:05 +0100)
Otherwise statfs may fail if mkfs hasn't been run yet or if the monitor
data directory does not exist.  There are checks to account for the mon
data dir not existing and we should wait for them to clear before we go
ahead and check the fs stats.

Signed-off-by: Joao Eduardo Luis <joao@redhat.com>
src/ceph_mon.cc

index ef0e11bfa30ab0884fd84ba68eacb76383f96591..ef0a99c45040bf409a2e3613ae80a2bff5d5ee31 100644 (file)
@@ -305,27 +305,6 @@ int main(int argc, const char **argv)
     usage();
   }
 
-  {
-    // check fs stats. don't start if it's critically close to full.
-    ceph_data_stats_t stats;
-    int err = get_fs_stats(stats, g_conf->mon_data.c_str());
-    if (err < 0) {
-      cerr << "error checking monitor data's fs stats: " << cpp_strerror(err)
-           << std::endl;
-      exit(-err);
-    }
-    if (stats.avail_percent <= g_conf->mon_data_avail_crit) {
-      cerr << "error: monitor data filesystem reached concerning levels of"
-           << " available storage space (available: "
-           << stats.avail_percent << "% " << prettybyte_t(stats.byte_avail)
-           << ")\nyou may adjust 'mon data avail crit' to a lower value"
-           << " to make this go away (default: " << g_conf->mon_data_avail_crit
-           << "%)\n" << std::endl;
-      exit(ENOSPC);
-    }
-  }
-
-
   // -- mkfs --
   if (mkfs) {
 
@@ -490,6 +469,26 @@ int main(int argc, const char **argv)
     exit(1);
   }
 
+  {
+    // check fs stats. don't start if it's critically close to full.
+    ceph_data_stats_t stats;
+    int err = get_fs_stats(stats, g_conf->mon_data.c_str());
+    if (err < 0) {
+      cerr << "error checking monitor data's fs stats: " << cpp_strerror(err)
+           << std::endl;
+      exit(-err);
+    }
+    if (stats.avail_percent <= g_conf->mon_data_avail_crit) {
+      cerr << "error: monitor data filesystem reached concerning levels of"
+           << " available storage space (available: "
+           << stats.avail_percent << "% " << prettybyte_t(stats.byte_avail)
+           << ")\nyou may adjust 'mon data avail crit' to a lower value"
+           << " to make this go away (default: " << g_conf->mon_data_avail_crit
+           << "%)\n" << std::endl;
+      exit(ENOSPC);
+    }
+  }
+
   // we fork early to prevent leveldb's environment static state from
   // screwing us over
   Preforker prefork;