]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "librbd: ensure header is up to date after initial read"
authorJosh Durgin <josh.durgin@inktank.com>
Wed, 2 Jan 2013 20:32:33 +0000 (12:32 -0800)
committerJosh Durgin <josh.durgin@inktank.com>
Wed, 2 Jan 2013 20:32:33 +0000 (12:32 -0800)
Using assert version for linger ops doesn't work with retries,
since the version will change after the first send.
This reverts commit e1776809031c6dad441cfb2b9fac9612720b9083.

Conflicts:

qa/workunits/rbd/watch_correct_version.sh

qa/workunits/rbd/watch_correct_version.sh [deleted file]
src/librbd/ImageCtx.cc
src/librbd/ImageCtx.h
src/librbd/internal.cc

diff --git a/qa/workunits/rbd/watch_correct_version.sh b/qa/workunits/rbd/watch_correct_version.sh
deleted file mode 100755 (executable)
index 602cf61..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash -ex
-
-resize_image() {
-    for i in $(seq 1 1000)
-    do
-        rbd resize --size $i test
-    done
-}
-
-rm -f test.exported || true
-rbd rm test || true
-rbd create -s 1 --order 25 test
-resize_image &
-
-for i in $(seq 1 1000)
-do
-    rbd export test test.exported --debug-rbd 20 2>export.log
-    rm -f test.exported
-    MATCHED=`cat export.log | tr -d '\n' | (grep -c 'watching header object returned -34.*watching header object returned 0' || true)`
-    rm -f export.log
-    if [ "$MATCHED" == "1" ]
-    then
-        echo OK
-        exit 0
-    fi
-done
-rbd rm test
-
-echo "No race detected"
-echo OK
-exit 0
index 80f19d2355019645ee13e310c61725e6a2cea83f..7a44a6a53e80ab50e9be09cf4628e61db6990b83 100644 (file)
@@ -39,7 +39,6 @@ namespace librbd {
       wctx(NULL),
       refresh_seq(0),
       last_refresh(0),
-      last_header_version(0),
       md_lock("librbd::ImageCtx::md_lock"),
       cache_lock("librbd::ImageCtx::cache_lock"),
       snap_lock("librbd::ImageCtx::snap_lock"),
@@ -556,20 +555,7 @@ namespace librbd {
   int ImageCtx::register_watch() {
     assert(!wctx);
     wctx = new WatchCtx(this);
-
-    int r = 0;
-    do {
-      md_lock.Lock();
-      if (r == -ERANGE)
-       ictx_refresh(this);
-      uint64_t last_read = last_header_version;
-      md_lock.Unlock();
-
-      md_ctx.set_assert_version(last_read);
-      r = md_ctx.watch(header_oid, 0, &(wctx->cookie), wctx);
-      ldout(cct, 20) << "watching header object returned " << r << dendl;
-    } while (r == -ERANGE);
-    return r;
+    return md_ctx.watch(header_oid, 0, &(wctx->cookie), wctx);
   }
 
   void ImageCtx::unregister_watch() {
index bd0ba87862c0139c4fe0dc12cdcf6269bd022465..ed03846fcde3b1ab9cefde4cfcbc83fb55716281 100644 (file)
@@ -54,8 +54,6 @@ namespace librbd {
     WatchCtx *wctx;
     int refresh_seq;    ///< sequence for refresh requests
     int last_refresh;   ///< last completed refresh
-    uint64_t last_header_version; ///< last version of the header object
-                                  ///< read from librados
 
     /**
      * Lock ordering:
index ee8966cb40e23adf1113a944d906adbde3e99c65..b69e40bbbdbb2279c1c7d5ffa93d4051a01060c0 100644 (file)
@@ -1601,7 +1601,6 @@ reprotect_and_return_err:
            lderr(cct) << "Error reading header: " << cpp_strerror(r) << dendl;
            return r;
          }
-         ictx->last_header_version = ictx->md_ctx.get_last_version();
          r = cls_client::old_snapshot_list(&ictx->md_ctx, ictx->header_oid,
                                            &snap_names, &snap_sizes, &new_snapc);
          if (r < 0) {
@@ -1639,7 +1638,6 @@ reprotect_and_return_err:
                         << dendl;
              return r;
            }
-           ictx->last_header_version = ictx->md_ctx.get_last_version();
 
            uint64_t unsupported = incompatible_features & ~RBD_FEATURES_ALL;
            if (unsupported) {