]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge branch 'next'
authorSage Weil <sage@inktank.com>
Sat, 16 Jun 2012 14:42:17 +0000 (07:42 -0700)
committerSage Weil <sage@inktank.com>
Sat, 16 Jun 2012 14:42:17 +0000 (07:42 -0700)
Conflicts:
src/cls_rbd.cc

1  2 
src/cls_rbd.cc

diff --cc src/cls_rbd.cc
index 8a76c202415f2cbe727f3a968be78d62f74cb2f7,f8ae50f50aaa4fd7d21ec6a2e88f6ea491ffae44..a087ba1efad28d8ad82b4eab97b3d6ea0216adeb
@@@ -66,13 -61,8 +66,13 @@@ cls_method_handle_t h_assign_bid
  
  #define RBD_MAX_KEYS_READ 64
  #define RBD_SNAP_KEY_PREFIX "snapshot_"
 +#define RBD_LOCK_PREFIX "lock_"
 +#define RBD_LOCK_TYPE_KEY RBD_LOCK_PREFIX "type"
 +#define RBD_LOCKS_KEY RBD_LOCK_PREFIX "lockers"
 +#define RBD_LOCK_EXCLUSIVE "exclusive"
 +#define RBD_LOCK_SHARED "shared"
  
typedef struct cls_rbd_snap {
+ struct cls_rbd_snap {
    snapid_t id;
    string name;
    uint64_t image_size;
@@@ -292,13 -266,13 +278,15 @@@ int get_features(cls_method_context_t h
  
    if (snap_id == CEPH_NOSNAP) {
      int r = read_key(hctx, "features", &features);
 -    if (r < 0)
 +    if (r < 0) {
 +      CLS_ERR("failed to read features off disk: %s", strerror(r));
        return r;
 +    }
    } else {
      cls_rbd_snap snap;
-     int r = read_snapshot_metadata(hctx, snap_id, &snap);
+     string snapshot_key;
+     key_from_snap_id(snap_id, &snapshot_key);
+     int r = read_key(hctx, snapshot_key, &snap);
      if (r < 0)
        return r;
  
@@@ -343,13 -315,13 +331,15 @@@ int get_size(cls_method_context_t hctx
  
    if (snap_id == CEPH_NOSNAP) {
      r = read_key(hctx, "size", &size);
 -    if (r < 0)
 +    if (r < 0) {
 +      CLS_ERR("failed to read the image's size off of disk: %s", strerror(r));
        return r;
 +    }
    } else {
      cls_rbd_snap snap;
-     int r = read_snapshot_metadata(hctx, snap_id, &snap);
+     string snapshot_key;
+     key_from_snap_id(snap_id, &snapshot_key);
+     int r = read_key(hctx, snapshot_key, &snap);
      if (r < 0)
        return r;
  
@@@ -775,21 -504,15 +766,19 @@@ int snapshot_add(cls_method_context_t h
  
    // client lost a race with another snapshot creation.
    // snap_seq must be monotonically increasing.
-   if (snap_id < cur_snap_seq)
+   if (snap_meta.id < cur_snap_seq)
      return -ESTALE;
  
-   uint64_t size;
-   r = read_key(hctx, "size", &size);
+   r = read_key(hctx, "size", &snap_meta.image_size);
 -  if (r < 0)
 +  if (r < 0) {
 +    CLS_ERR("Could not read image's size off disk: %s", strerror(r));
      return r;
-   uint64_t features;
-   r = read_key(hctx, "features", &features);
 +  }
 -  if (r < 0)
+   r = read_key(hctx, "features", &snap_meta.features);
 +  if (r < 0) {
 +    CLS_ERR("Could not read image's features off disk: %s", strerror(r));
      return r;
 +  }
  
    int max_read = RBD_MAX_KEYS_READ;
    string last_read = RBD_SNAP_KEY_PREFIX;