From c9fa8e91e7ea73228456d38bcb62eb563e89bb95 Mon Sep 17 00:00:00 2001 From: huanghua Date: Wed, 12 Jul 2006 07:18:57 +0000 Subject: [PATCH] modified mdo_create interface, added symlink target name as a parameter. --- lustre/cmm/cmm_object.c | 18 +++++++++--------- lustre/include/md_object.h | 13 +++++++------ lustre/mdd/mdd_handler.c | 6 +++--- lustre/mdt/mdt_open.c | 1 + lustre/mdt/mdt_reint.c | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/lustre/cmm/cmm_object.c b/lustre/cmm/cmm_object.c index d1f38cd..14be138 100644 --- a/lustre/cmm/cmm_object.c +++ b/lustre/cmm/cmm_object.c @@ -313,14 +313,14 @@ static int cml_lookup(const struct lu_context *ctx, struct md_object *mo_p, } -static int cml_create(const struct lu_context *ctx, - struct md_object *mo_p, const char *name, - struct md_object *mo_c, struct lu_attr *attr) +static int cml_create(const struct lu_context *ctx, struct md_object *mo_p, + const char *child_name, struct md_object *mo_c, + const char *target_name, struct lu_attr *attr) { int rc; ENTRY; - rc = mdo_create(ctx, md_object_next(mo_p), name, - md_object_next(mo_c), attr); + rc = mdo_create(ctx, md_object_next(mo_p), child_name, + md_object_next(mo_c), target_name, attr); RETURN(rc); } @@ -574,9 +574,9 @@ static int cmr_lookup(const struct lu_context *ctx, struct md_object *mo_p, * For more details see rollback HLD/DLD. * */ -static int cmr_create(const struct lu_context *ctx, - struct md_object *mo_p, const char *name, - struct md_object *mo_c, struct lu_attr *attr) +static int cmr_create(const struct lu_context *ctx, struct md_object *mo_p, + const char *child_name, struct md_object *mo_c, + const char *target_name, struct lu_attr *attr) { int rc; @@ -588,7 +588,7 @@ static int cmr_create(const struct lu_context *ctx, rc = mo_object_create(ctx, md_object_next(mo_c), attr); if (rc == 0) { rc = mdo_name_insert(ctx, md_object_next(mo_p), - name, lu_object_fid(&mo_c->mo_lu)); + child_name, lu_object_fid(&mo_c->mo_lu)); } RETURN(rc); diff --git a/lustre/include/md_object.h b/lustre/include/md_object.h index 88acd46..f1880ef 100644 --- a/lustre/include/md_object.h +++ b/lustre/include/md_object.h @@ -77,9 +77,10 @@ struct md_dir_operations { int (*mdo_lookup)(const struct lu_context *, struct md_object *, const char *, struct lu_fid *); + /* target_name is valid iff this is a symlink operation. */ int (*mdo_create)(const struct lu_context *, struct md_object *, - const char *, struct md_object *, - struct lu_attr *); + const char *child_name, struct md_object *, + const char *target_name, struct lu_attr *); int (*mdo_rename)(const struct lu_context *ctxt, struct md_object *spobj, struct md_object *tpobj, @@ -254,12 +255,12 @@ static inline int mdo_lookup(const struct lu_context *cx, struct md_object *p, return p->mo_dir_ops->mdo_lookup(cx, p, name, f); } -static inline int mdo_create(const struct lu_context *cx, - struct md_object *p, const char *name, - struct md_object *c, struct lu_attr *at) +static inline int mdo_create(const struct lu_context *cx, struct md_object *p, + const char *child_name, struct md_object *c, + const char *target_name, struct lu_attr *at) { LASSERT(c->mo_dir_ops->mdo_create); - return c->mo_dir_ops->mdo_create(cx, p, name, c, at); + return c->mo_dir_ops->mdo_create(cx, p, child_name, c, target_name, at); } static inline int mdo_rename(const struct lu_context *cx, diff --git a/lustre/mdd/mdd_handler.c b/lustre/mdd/mdd_handler.c index 3d518a8..41bbd34 100644 --- a/lustre/mdd/mdd_handler.c +++ b/lustre/mdd/mdd_handler.c @@ -729,9 +729,9 @@ static int mdd_lookup(const struct lu_context *ctxt, struct md_object *pobj, /* * Create object and insert it into namespace. */ -static int mdd_create(const struct lu_context *ctxt, - struct md_object *pobj, const char *name, - struct md_object *child, struct lu_attr* attr) +static int mdd_create(const struct lu_context *ctxt, struct md_object *pobj, + const char *name, struct md_object *child, + const char *target_name, struct lu_attr* attr) { struct mdd_device *mdd = mdo2mdd(pobj); struct mdd_object *mdo = md2mdd_obj(pobj); diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 58073dc..b502032 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -290,6 +290,7 @@ int mdt_reint_open(struct mdt_thread_info *info) mdt_object_child(parent), rr->rr_name, mdt_object_child(child), + rr->rr_tgt, &info->mti_attr); intent_set_disposition(ldlm_rep, DISP_OPEN_CREATE); if (result != 0) diff --git a/lustre/mdt/mdt_reint.c b/lustre/mdt/mdt_reint.c index 0ce4f88..32eb6cb 100644 --- a/lustre/mdt/mdt_reint.c +++ b/lustre/mdt/mdt_reint.c @@ -64,7 +64,7 @@ static int mdt_md_create(struct mdt_thread_info *info) struct md_object *next = mdt_object_child(parent); rc = mdo_create(info->mti_ctxt, next, rr->rr_name, - mdt_object_child(child), attr); + mdt_object_child(child), rr->rr_tgt, attr); if (rc == 0) { /* return fid to client. attr is over-written!!*/ rc = mo_attr_get(info->mti_ctxt, -- 1.8.3.1