]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ceph/osdmap.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph...
[karo-tx-linux.git] / net / ceph / osdmap.c
index 4543b9aba40ce1a9e4565824624bcecba6c298cb..603ddd92db1965e16fac61a420c4cdb5c8330bbb 100644 (file)
@@ -654,24 +654,6 @@ static int osdmap_set_max_osd(struct ceph_osdmap *map, int max)
        return 0;
 }
 
-static int __decode_pgid(void **p, void *end, struct ceph_pg *pg)
-{
-       u8 v;
-
-       ceph_decode_need(p, end, 1+8+4+4, bad);
-       v = ceph_decode_8(p);
-       if (v != 1)
-               goto bad;
-       pg->pool = ceph_decode_64(p);
-       pg->seed = ceph_decode_32(p);
-       *p += 4; /* skip preferred */
-       return 0;
-
-bad:
-       dout("error decoding pgid\n");
-       return -EINVAL;
-}
-
 /*
  * decode a full map.
  */
@@ -765,7 +747,7 @@ struct ceph_osdmap *osdmap_decode(void **p, void *end)
                struct ceph_pg pgid;
                struct ceph_pg_mapping *pg;
 
-               err = __decode_pgid(p, end, &pgid);
+               err = ceph_decode_pgid(p, end, &pgid);
                if (err)
                        goto bad;
                ceph_decode_need(p, end, sizeof(u32), bad);
@@ -983,7 +965,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
                struct ceph_pg pgid;
                u32 pglen;
 
-               err = __decode_pgid(p, end, &pgid);
+               err = ceph_decode_pgid(p, end, &pgid);
                if (err)
                        goto bad;
                ceph_decode_need(p, end, sizeof(u32), bad);
@@ -1111,27 +1093,22 @@ EXPORT_SYMBOL(ceph_calc_file_object_mapping);
  * calculate an object layout (i.e. pgid) from an oid,
  * file_layout, and osdmap
  */
-int ceph_calc_object_layout(struct ceph_pg *pg,
-                           const char *oid,
-                           struct ceph_file_layout *fl,
-                           struct ceph_osdmap *osdmap)
+int ceph_calc_ceph_pg(struct ceph_pg *pg, const char *oid,
+                       struct ceph_osdmap *osdmap, uint64_t pool)
 {
-       unsigned int num, num_mask;
-       struct ceph_pg_pool_info *pool;
+       struct ceph_pg_pool_info *pool_info;
 
        BUG_ON(!osdmap);
-       pg->pool = le32_to_cpu(fl->fl_pg_pool);
-       pool = __lookup_pg_pool(&osdmap->pg_pools, pg->pool);
-       if (!pool)
+       pool_info = __lookup_pg_pool(&osdmap->pg_pools, pool);
+       if (!pool_info)
                return -EIO;
-       pg->seed = ceph_str_hash(pool->object_hash, oid, strlen(oid));
-       num = pool->pg_num;
-       num_mask = pool->pg_num_mask;
+       pg->pool = pool;
+       pg->seed = ceph_str_hash(pool_info->object_hash, oid, strlen(oid));
 
-       dout("calc_object_layout '%s' pgid %lld.%x\n", oid, pg->pool, pg->seed);
+       dout("%s '%s' pgid %lld.%x\n", __func__, oid, pg->pool, pg->seed);
        return 0;
 }
-EXPORT_SYMBOL(ceph_calc_object_layout);
+EXPORT_SYMBOL(ceph_calc_ceph_pg);
 
 /*
  * Calculate raw osd vector for the given pgid.  Return pointer to osd