typedef __u64 dt_obj_version_t;
+union ldlm_policy_data;
+
/**
* Per-dt-object operations.
*/
int (*do_object_lock)(const struct lu_env *env, struct dt_object *dt,
struct lustre_handle *lh,
struct ldlm_enqueue_info *einfo,
- void *policy);
+ union ldlm_policy_data *policy);
+
+ int (*do_object_unlock)(const struct lu_env *env, struct dt_object *dt,
+ struct ldlm_enqueue_info *einfo,
+ union ldlm_policy_data *policy);
};
/**
static inline int dt_object_lock(const struct lu_env *env,
struct dt_object *o, struct lustre_handle *lh,
struct ldlm_enqueue_info *einfo,
- void *policy)
+ union ldlm_policy_data *policy)
{
- LASSERT(o);
- LASSERT(o->do_ops);
- LASSERT(o->do_ops->do_object_lock);
+ LASSERT(o != NULL);
+ LASSERT(o->do_ops != NULL);
+ LASSERT(o->do_ops->do_object_lock != NULL);
return o->do_ops->do_object_lock(env, o, lh, einfo, policy);
}
+static inline int dt_object_unlock(const struct lu_env *env,
+ struct dt_object *o,
+ struct ldlm_enqueue_info *einfo,
+ union ldlm_policy_data *policy)
+{
+ LASSERT(o != NULL);
+ LASSERT(o->do_ops != NULL);
+ LASSERT(o->do_ops->do_object_unlock != NULL);
+ return o->do_ops->do_object_unlock(env, o, einfo, policy);
+}
+
int dt_lookup_dir(const struct lu_env *env, struct dt_object *dir,
const char *name, struct lu_fid *fid);