lu_object_put(env, &obj->oo_dt.do_lu);
}
-static int osd_mdt_seq_exists(const struct lu_env *env, struct osd_device *osd,
- obd_seq seq)
+static int osd_seq_exists(const struct lu_env *env, struct osd_device *osd,
+ obd_seq seq)
{
struct lu_seq_range *range = &osd_oti_get(env)->oti_seq_range;
struct seq_server_site *ss = osd_seq_site(osd);
if (ss == NULL)
RETURN(1);
- /* XXX: currently, each MDT only store avaible sequence on disk,
- * and no allocated sequences information on disk, so it has to
- * lookup FLDB. It probably makes more sense also store allocated
- * sequence locally, so we do not need do remote FLDB lookup in OSD */
rc = osd_fld_lookup(env, osd, seq, range);
if (rc != 0) {
CERROR("%s: Can not lookup fld for "LPX64"\n",
if (!fid_is_norm(fid) && !fid_is_root(fid))
RETURN(0);
- /* Currently, it only used to check FID on MDT */
- if (osd_mdt_seq_exists(env, osd, fid_seq(fid)))
+ if (osd_seq_exists(env, osd, fid_seq(fid)))
RETURN(0);
RETURN(1);
LASSERT(lde);
- lde->lde_hash = cpu_to_le64(udmu_zap_cursor_serialize(it->ozi_zc));
-
- if ((rc = -zap_cursor_retrieve(it->ozi_zc, za)))
+ rc = -zap_cursor_retrieve(it->ozi_zc, za);
+ if (unlikely(rc != 0))
GOTO(out, rc);
+ lde->lde_hash = cpu_to_le64(udmu_zap_cursor_serialize(it->ozi_zc));
namelen = strlen(za->za_name);
if (namelen > NAME_MAX)
GOTO(out, rc = -EOVERFLOW);
* Primitives for index files using binary keys.
*/
-static int osd_prepare_key(struct osd_object *o, __u64 *dst,
- const struct dt_key *src)
+/* key integer_size is 8 */
+static int osd_prepare_key_uint64(struct osd_object *o, __u64 *dst,
+ const struct dt_key *src)
{
int size;
memset(dst + o->oo_keysize, 0, size - o->oo_keysize);
memcpy(dst, (const char *)src, o->oo_keysize);
- return size;
+ return (size/sizeof(__u64));
}
static int osd_index_lookup(const struct lu_env *env, struct dt_object *dt,
int rc;
ENTRY;
- rc = osd_prepare_key(obj, k, key);
+ rc = osd_prepare_key_uint64(obj, k, key);
rc = -zap_lookup_uint64(osd->od_objset.os, obj->oo_db->db_object,
k, rc, obj->oo_recusize, obj->oo_recsize,
oh = container_of0(th, struct osd_thandle, ot_super);
- rc = osd_prepare_key(obj, k, key);
+ rc = osd_prepare_key_uint64(obj, k, key);
/* Insert (key,oid) into ZAP */
rc = -zap_add_uint64(osd->od_objset.os, obj->oo_db->db_object,
LASSERT(th != NULL);
oh = container_of0(th, struct osd_thandle, ot_super);
- rc = osd_prepare_key(obj, k, key);
+ rc = osd_prepare_key_uint64(obj, k, key);
/* Remove binary key from the ZAP */
rc = -zap_remove_uint64(osd->od_objset.os, obj->oo_db->db_object,
if (rc)
RETURN(rc);
- rc = osd_prepare_key(obj, k, (const struct dt_key *)za->za_name);
+ rc = osd_prepare_key_uint64(obj, k, (const struct dt_key *)za->za_name);
rc = -zap_lookup_uint64(osd->od_objset.os, obj->oo_db->db_object,
k, rc, obj->oo_recusize, obj->oo_recsize,