]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_file: pre-assign times 11335/head
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 21 Sep 2016 21:18:20 +0000 (17:18 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Wed, 5 Oct 2016 18:26:14 +0000 (14:26 -0400)
Set unix timestamps based on RGW values for creation, modification
time for buckets, objects in stat requests.  Regard any saved
value of these in unix attributes as an overlay.

Fixes: http://tracker.ceph.com/issues/17367
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit 969750e96380859a350e25015bc8cbf9bdf88512)

Fixes: http://tracker.ceph.com/issues/17394
src/rgw/rgw_file.cc
src/rgw/rgw_file.h

index 4f513c9152a14a900408b6ef4c9b62bf731f4d3c..69f6b708edd9ea1fccebf1b7dffa4e33f5c2d714 100644 (file)
@@ -59,6 +59,7 @@ namespace rgw {
                      RGWFileHandle::FLAG_BUCKET);
       if (get<0>(fhr)) {
        RGWFileHandle* rgw_fh = get<0>(fhr);
+       rgw_fh->set_times(req.get_ctime());
        /* restore attributes */
        auto ux_key = req.get_attr(RGW_ATTR_UNIX_KEY1);
        auto ux_attrs = req.get_attr(RGW_ATTR_UNIX1);
@@ -122,7 +123,7 @@ namespace rgw {
          if (get<0>(fhr)) {
            RGWFileHandle* rgw_fh = get<0>(fhr);
            rgw_fh->set_size(req.get_size());
-           rgw_fh->set_mtime(real_clock::to_timespec(req.get_mtime()));
+           rgw_fh->set_times(req.get_mtime());
            /* restore attributes */
            auto ux_key = req.get_attr(RGW_ATTR_UNIX_KEY1);
            auto ux_attrs = req.get_attr(RGW_ATTR_UNIX1);
@@ -148,7 +149,7 @@ namespace rgw {
          if (get<0>(fhr)) {
            RGWFileHandle* rgw_fh = get<0>(fhr);
            rgw_fh->set_size(req.get_size());
-           rgw_fh->set_mtime(real_clock::to_timespec(req.get_mtime()));
+           rgw_fh->set_times(req.get_mtime());
            /* restore attributes */
            auto ux_key = req.get_attr(RGW_ATTR_UNIX_KEY1);
            auto ux_attrs = req.get_attr(RGW_ATTR_UNIX1);
index 47435a43469f52aea8095e18f24c552455bf6f5a..71439ce6fa5ba3d4dfc9ff97e1e86dcb711f7ab5 100644 (file)
@@ -1803,6 +1803,10 @@ public:
     return (iter != attrs.end()) ? &(iter->second) : nullptr;
   }
 
+  real_time get_ctime() const {
+    return bucket.creation_time;
+  }
+
   virtual bool only_bucket() { return false; }
 
   virtual int op_init() {
@@ -1835,10 +1839,6 @@ public:
     return 0;
   }
 
-  real_time get_ctime() const {
-    return bucket.creation_time;
-  }
-
   virtual int get_params() {
     return 0;
   }