]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/Clock: add deglobalized clock stuff
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 14 Jun 2011 19:37:35 +0000 (12:37 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Mon, 20 Jun 2011 23:22:27 +0000 (16:22 -0700)
Add clock functions which don't use globals. Remove Clock::recent_now.

Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/common/Clock.cc
src/common/Clock.h
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Locker.cc

index 88a44a43dd1da9dcef74615f8fb240f6d96fd59b..b303303852067b3f323a4e2a93c4c00ec13eafec 100644 (file)
 
 
 #include "common/config.h"
-#include "Clock.h"
+#include "common/Clock.h"
 
-// public
+#include <time.h>
+
+utime_t ceph_clock_now(CephContext *cct)
+{
+  struct timeval tv;
+  gettimeofday(&tv, NULL);
+  utime_t n(&tv);
+  n += cct->_conf->clock_offset;
+  return n;
+}
+
+time_t ceph_clock_gettime(CephContext *cct)
+{
+  time_t ret = time(NULL);
+  ret += ((time_t)cct->_conf->clock_offset);
+  return ret;
+}
+
+// old global clock stuff
+// TODO: remove
 Clock g_clock;
 
 Clock::Clock() {
@@ -25,15 +44,22 @@ Clock::Clock() {
 Clock::~Clock() {
 }
 
+void Clock::make_timespec(utime_t& t, struct timespec *ts) {
+  utime_t time = t;
+
+  memset(ts, 0, sizeof(*ts));
+  ts->tv_sec = time.sec();
+  ts->tv_nsec = time.nsec();
+}
+
 utime_t Clock::now() {
   struct timeval tv;
   gettimeofday(&tv, NULL);
   utime_t n(&tv);
   n += g_conf->clock_offset;
-  if (n < last) {
-    //derr << "WARNING: clock jumped backwards from " << last << " to " << n << dendl;
-    n = last;    // clock jumped backwards!
-  } else
-    last = n;
   return n;
 }
+
+time_t Clock::gettime() {
+  return now().sec();
+}
index a1ca17d40ba33180a7f60d1f41eea1f52710fcbe..92054490ce18dea9ccfbbffe30562e1ad70adfa3 100644 (file)
 #ifndef CEPH_CLOCK_H
 #define CEPH_CLOCK_H
 
-#include <iomanip>
-#include <iostream>
-#include <sys/time.h>
+#include "include/utime.h"
+
 #include <time.h>
 
-#include "include/utime.h"
+struct timespec;
+struct utime_t;
 
-class Clock {
- protected:
-  utime_t last;
+extern utime_t ceph_clock_now(CephContext *cct);
+extern time_t ceph_clock_gettime(CephContext *cct);
 
+class Clock {
  public:
   Clock();
   ~Clock();
 
   utime_t now();
-
-  utime_t recent_now() {
-    return last;
-  }
-
-  void make_timespec(utime_t& t, struct timespec *ts) {
-    utime_t time = t;
-
-    memset(ts, 0, sizeof(*ts));
-    ts->tv_sec = time.sec();
-    ts->tv_nsec = time.nsec();
-  }
-
-  // absolute time
-  time_t gettime() {
-    return now().sec();
-  }
+  void make_timespec(utime_t& t, struct timespec *ts);
+  time_t gettime();
 };
 
 extern Clock g_clock;
index 5276929266eacf36c951e12e9657698865cbf9d6..b9bcb8eb14e03226845bed85af256d2579b1a16c 100644 (file)
@@ -2397,7 +2397,7 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
       cap->issue_norevoke(issue);
       issue = cap->pending();
       cap->set_last_issue();
-      cap->set_last_issue_stamp(g_clock.recent_now());
+      cap->set_last_issue_stamp(g_clock.now());
       e.cap.caps = issue;
       e.cap.wanted = cap->wanted();
       e.cap.cap_id = cap->get_cap_id();
index 3b4a145e6fff27eba0cde133a230dd548acd9341..f94f89516883ceff0832b038af8da80e010c2739 100644 (file)
@@ -913,7 +913,7 @@ public:
       cap->reset_seq();
     }
     cap->set_cap_id(icr.cap_id);
-    cap->set_last_issue_stamp(g_clock.recent_now());
+    cap->set_last_issue_stamp(g_clock.now());
     return cap;
   }
   void clear_client_caps_after_export() {
index f496ef0cbf93b1043eb3176b6cdce85ad72d6e38..f5b559d84a97b07897e5c01de7917a21e1d13a52 100644 (file)
@@ -1647,7 +1647,7 @@ void Locker::request_inode_file_caps(CInode *in)
   if (wanted != in->replica_caps_wanted) {
 
     if (wanted == 0) {
-      if (in->replica_caps_wanted_keep_until > g_clock.recent_now()) {
+      if (in->replica_caps_wanted_keep_until > g_clock.now()) {
         // ok, release them finally!
         in->replica_caps_wanted_keep_until.sec_ref() = 0;
         dout(7) << "request_inode_file_caps " << ccap_string(wanted)
@@ -1657,7 +1657,7 @@ void Locker::request_inode_file_caps(CInode *in)
                  << dendl;
       }
       else if (in->replica_caps_wanted_keep_until.sec() == 0) {
-        in->replica_caps_wanted_keep_until = g_clock.recent_now();
+        in->replica_caps_wanted_keep_until = g_clock.now();
         in->replica_caps_wanted_keep_until.sec_ref() += 2;
         
         dout(7) << "request_inode_file_caps " << ccap_string(wanted)