]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: only check version if meta object exists
authorYehuda Sadeh <yehuda@inktank.com>
Wed, 31 Jul 2013 19:23:17 +0000 (12:23 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Fri, 2 Aug 2013 01:25:04 +0000 (18:25 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_user.cc

index d32af5df601a3efe1d6c9c40967c1dfeea59b293..3cb730b555ec216fab2defc6ca4cf0549ed214a3 100644 (file)
@@ -1416,7 +1416,8 @@ public:
       return ret;
 
     // are we actually going to perform this put, or is it too old?
-    if (!check_versions(old_ot.read_version, orig_mtime,
+    if (ret != -ENOENT &&
+        !check_versions(old_ot.read_version, orig_mtime,
                        objv_tracker.write_version, mtime, sync_type)) {
       return STATUS_NO_APPLY;
     }
@@ -1559,10 +1560,12 @@ public:
     time_t orig_mtime;
 
     int ret = store->get_bucket_instance_info(NULL, oid, old_bci.info, &orig_mtime, &old_bci.attrs);
-    if (ret < 0 && ret != -ENOENT)
+    bool exists = (ret != -ENOENT);
+    if (ret < 0 && exists)
       return ret;
 
-    if (ret == -ENOENT || old_bci.info.bucket.bucket_id != bci.info.bucket.bucket_id) {
+
+    if (!exists || old_bci.info.bucket.bucket_id != bci.info.bucket.bucket_id) {
       /* a new bucket, we need to select a new bucket placement for it */
       rgw_bucket bucket;
       ret = store->set_bucket_location_by_rule(bci.info.placement_rule, oid, bucket);
@@ -1579,7 +1582,8 @@ public:
     }
 
     // are we actually going to perform this put, or is it too old?
-    if (!check_versions(old_bci.info.objv_tracker.read_version, orig_mtime,
+    if (exists &&
+        !check_versions(old_bci.info.objv_tracker.read_version, orig_mtime,
                        objv_tracker.write_version, mtime, sync_type)) {
       objv_tracker.read_version = old_bci.info.objv_tracker.read_version;
       return STATUS_NO_APPLY;
index 6fcecd4a98d34c7d51bc8930e5ec4d760ced7f51..5e5b5c564bbe725583444d1fea2229c6ce4fccc8 100644 (file)
@@ -2308,7 +2308,8 @@ public:
       return ret;
 
     // are we actually going to perform this put, or is it too old?
-    if (!check_versions(objv_tracker.read_version, orig_mtime,
+    if (ret != -ENOENT &&
+        !check_versions(objv_tracker.read_version, orig_mtime,
                        objv_tracker.write_version, mtime, sync_mode)) {
       return STATUS_NO_APPLY;
     }