X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_compat.c;h=9c2cc1cf545e9c6aeaa5f763875771cf3a2dc413;hb=0ad4f8a4227ed7dd93fec99d33c6bb25056473fc;hp=f718025079eef3acd38b786cf6ad623319062521;hpb=7e915f5d7177b22bd3cc800137fb505781a2c037;p=fs%2Flustre-release.git diff --git a/lustre/mdd/mdd_compat.c b/lustre/mdd/mdd_compat.c index f718025..9c2cc1c 100644 --- a/lustre/mdd/mdd_compat.c +++ b/lustre/mdd/mdd_compat.c @@ -20,7 +20,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2013, Intel Corporation. */ #define DEBUG_SUBSYSTEM S_MDS @@ -56,7 +56,7 @@ static int mdd_convert_remove_dots(const struct lu_env *env, struct mdd_device *mdd, struct mdd_object *o) { - struct thandle *th = NULL; + struct thandle *th; const struct dt_key *dot = (const struct dt_key *)"."; const struct dt_key *dotdot = (const struct dt_key *)".."; int rc; @@ -68,6 +68,7 @@ static int mdd_convert_remove_dots(const struct lu_env *env, th = dt_trans_create(env, mdd->mdd_child); if (IS_ERR(th)) RETURN(PTR_ERR(th)); + rc = dt_declare_delete(env, mdd_object_child(o), dot, th); if (rc) GOTO(out, rc); @@ -91,8 +92,7 @@ static int mdd_convert_remove_dots(const struct lu_env *env, GOTO(out, rc); out: - if (th) - dt_trans_stop(env, mdd->mdd_child, th); + dt_trans_stop(env, mdd->mdd_child, th); RETURN(rc); } @@ -101,13 +101,16 @@ static int mdd_convert_linkea(const struct lu_env *env, struct mdd_object *o, const struct lu_name *name) { - struct thandle *th = NULL; + struct thandle *th; struct lu_fid oldfid; int rc; ENTRY; th = dt_trans_create(env, mdd->mdd_child); - rc = mdd_declare_links_add(env, o, th, NULL); + if (IS_ERR(th)) + RETURN(PTR_ERR(th)); + + rc = mdd_declare_links_add(env, o, th, NULL, MLAO_IGNORE); if (rc) GOTO(out, rc); rc = dt_trans_start_local(env, mdd->mdd_child, th); @@ -123,8 +126,7 @@ static int mdd_convert_linkea(const struct lu_env *env, rc = 0; out: - if (th) - dt_trans_stop(env, mdd->mdd_child, th); + dt_trans_stop(env, mdd->mdd_child, th); RETURN(rc); } @@ -134,7 +136,7 @@ static int mdd_convert_object(const struct lu_env *env, const struct lu_name *name) { struct mdd_object *o; - struct lu_attr *la = &mdd_env_info(env)->mti_la; + struct lu_attr *la = MDD_ENV_VAR(env, cattr); int rc; ENTRY; @@ -171,7 +173,7 @@ static int mdd_convert_lma(const struct lu_env *env, struct mdd_device *mdd, struct mdd_object *o) { struct lustre_mdt_attrs *lma; - struct thandle *th = NULL; + struct thandle *th; struct lu_fid fid; struct lu_buf buf; int rc; @@ -180,7 +182,7 @@ static int mdd_convert_lma(const struct lu_env *env, struct mdd_device *mdd, lu_root_fid(&fid); lma = (struct lustre_mdt_attrs *)&mdd_env_info(env)->mti_xattr_buf; - lustre_lma_init(lma, &fid); + lustre_lma_init(lma, &fid, 0, 0); lustre_lma_swab(lma); buf.lb_buf = lma; buf.lb_len = sizeof(*lma); @@ -196,8 +198,7 @@ static int mdd_convert_lma(const struct lu_env *env, struct mdd_device *mdd, GOTO(out, rc); rc = mdo_xattr_set(env, o, &buf, XATTR_NAME_LMA, 0, th, BYPASS_CAPA); out: - if (th) - dt_trans_stop(env, mdd->mdd_child, th); + dt_trans_stop(env, mdd->mdd_child, th); RETURN(rc); } @@ -230,13 +231,15 @@ static int mdd_fix_children(const struct lu_env *env, GOTO(out_put, rc); do { + size_t lu_dirent_size; + rc = iops->key_size(env, it); if (rc == 0) goto next; /* calculate max space required for lu_dirent */ - rc = lu_dirent_calc_size(rc, 0); - LASSERT(rc <= sizeof(info->mti_xattr_buf)); + lu_dirent_size = lu_dirent_calc_size(rc, 0); + LASSERT(lu_dirent_size <= sizeof(info->mti_xattr_buf)); rc = iops->rec(env, it, (struct dt_rec *)ent, LUDA_TYPE); if (rc == 0) { @@ -284,7 +287,7 @@ static int mdd_fill_fldb(const struct lu_env *env, struct mdd_device *mdd) /* Pre-existing ZFS does not insert any entries to FLDB, we need * to insert it to FLDB during convertion */ range.lsr_start = FID_SEQ_NORMAL; - range.lsr_flags = LU_SEQ_RANGE_MDT; + fld_range_set_mdt(&range); mutex_lock(&ss->ss_server_fld->lsf_lock); rc = fld_insert_entry(env, ss->ss_server_fld, &range); @@ -359,7 +362,7 @@ int mdd_compat_fixes(const struct lu_env *env, struct mdd_device *mdd) LUSTRE_OSD_ZFS_NAME) != 0) { CERROR("%s: "DFID" is used on ldiskfs?!\n", mdd2obd_dev(mdd)->obd_name, PFID(&mdd->mdd_root_fid)); - RETURN(-ENOTSUPP); + GOTO(out, rc = -ENOTSUPP); } LCONSOLE_INFO("%s: FID of /ROOT has been changed. "