X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Fmd_object.h;h=f69fac59d991b2a00e8d91275ef284b13fc9932f;hb=92f7ed4a92abf85b9b1cdfb0cae06e50a5f8319d;hp=718e3369b453ffe7381c1e8a179275a2daa156f7;hpb=65224bacf78ff7fdb8502bb1c2655223f6a1bb44;p=fs%2Flustre-release.git diff --git a/lustre/include/md_object.h b/lustre/include/md_object.h index 718e336..f69fac5 100644 --- a/lustre/include/md_object.h +++ b/lustre/include/md_object.h @@ -56,7 +56,7 @@ /* * super-class definitions. */ -#include +#include #include struct md_device; @@ -84,8 +84,8 @@ struct md_ucred { __u32 mu_suppgids[2]; cfs_cap_t mu_cap; __u32 mu_umask; - struct group_info *mu_ginfo; - struct md_identity *mu_identity; + struct group_info *mu_ginfo; + struct md_identity *mu_identity; }; enum { @@ -244,7 +244,14 @@ struct md_object_operations { int (*moo_capa_get)(const struct lu_env *, struct md_object *, struct lustre_capa *, int renewal); + int (*moo_object_sync)(const struct lu_env *, struct md_object *); + dt_obj_version_t (*moo_version_get)(const struct lu_env *, + struct md_object *); + void (*moo_version_set)(const struct lu_env *, struct md_object *, + dt_obj_version_t); + int (*moo_path)(const struct lu_env *env, struct md_object *obj, + char *path, int pathlen, __u64 *recno, int *linkno); }; /** @@ -322,6 +329,12 @@ struct md_device_operations { struct md_device *m, struct lustre_capa_key *key); + int (*mdo_llog_ctxt_get)(const struct lu_env *env, + struct md_device *m, int idx, void **h); + + int (*mdo_iocontrol)(const struct lu_env *env, struct md_device *m, + unsigned int cmd, int len, void *data); + #ifdef HAVE_QUOTA_SUPPORT struct md_quota_operations { int (*mqo_notify)(const struct lu_env *env, @@ -344,13 +357,11 @@ struct md_device_operations { int (*mqo_on)(const struct lu_env *env, struct md_device *m, - __u32 type, - __u32 id); + __u32 type); int (*mqo_off)(const struct lu_env *env, struct md_device *m, - __u32 type, - __u32 id); + __u32 type); int (*mqo_setinfo)(const struct lu_env *env, struct md_device *m, @@ -400,11 +411,13 @@ struct md_device_operations { }; enum md_upcall_event { - /**sync the md layer*/ + /** Sync the md layer*/ MD_LOV_SYNC = (1 << 0), /** Just for split, no need trans, for replay */ MD_NO_TRANS = (1 << 1), - MD_LOV_CONFIG = (1 << 2) + MD_LOV_CONFIG = (1 << 2), + /** Trigger quota recovery */ + MD_LOV_QUOTA = (1 << 3) }; struct md_upcall { @@ -682,12 +695,34 @@ static inline int mo_capa_get(const struct lu_env *env, return m->mo_ops->moo_capa_get(env, m, c, renewal); } +static inline int mo_path(const struct lu_env *env, struct md_object *m, + char *path, int pathlen, __u64 *recno, int *linkno) +{ + if (m->mo_ops->moo_path == NULL) + return -ENOSYS; + return m->mo_ops->moo_path(env, m, path, pathlen, recno, linkno); +} + static inline int mo_object_sync(const struct lu_env *env, struct md_object *m) { LASSERT(m->mo_ops->moo_object_sync); return m->mo_ops->moo_object_sync(env, m); } +static inline dt_obj_version_t mo_version_get(const struct lu_env *env, + struct md_object *m) +{ + LASSERT(m->mo_ops->moo_version_get); + return m->mo_ops->moo_version_get(env, m); +} + +static inline void mo_version_set(const struct lu_env *env, + struct md_object *m, dt_obj_version_t ver) +{ + LASSERT(m->mo_ops->moo_version_set); + return m->mo_ops->moo_version_set(env, m, ver); +} + static inline int mdo_lookup(const struct lu_env *env, struct md_object *p, const struct lu_name *lname,