X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=inline;f=lustre%2Fosd-zfs%2Fosd_oi.c;h=36e588d14eef684fabc6bfdfe0991a21779f843d;hb=d46a76cd7bb2b657a6daabbe18b993abeedb2d94;hp=8b780fc57e6eaad261490739bd88d161bfec3168;hpb=063892770e343916343ab0a4ee21601b8b23922e;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_oi.c b/lustre/osd-zfs/osd_oi.c index 8b780fc..36e588d 100644 --- a/lustre/osd-zfs/osd_oi.c +++ b/lustre/osd-zfs/osd_oi.c @@ -28,7 +28,7 @@ * Use is subject to license terms. */ /* - * Copyright (c) 2012, Intel Corporation. + * Copyright (c) 2012, 2013, Intel Corporation. * Use is subject to license terms. */ /* @@ -96,13 +96,11 @@ static const struct named_oid oids[] = { { MGS_CONFIGS_OID, NULL /*MOUNT_CONFIGS_DIR*/ }, { FID_SEQ_SRV_OID, "seq_srv" }, { FID_SEQ_CTL_OID, "seq_ctl" }, - { MDD_CAPA_KEYS_OID, NULL /*CAPA_KEYS*/ }, { FLD_INDEX_OID, "fld" }, { MDD_LOV_OBJ_OID, LOV_OBJID }, { OFD_HEALTH_CHECK_OID, HEALTH_CHECK }, { ACCT_USER_OID, "acct_usr_inode" }, { ACCT_GROUP_OID, "acct_grp_inode" }, - { MDD_ORPHAN_OID, NULL }, { 0, NULL } }; @@ -218,31 +216,26 @@ int osd_fld_lookup(const struct lu_env *env, struct osd_device *osd, struct seq_server_site *ss = osd_seq_site(osd); int rc; - if (fid_is_root(fid)) { - range->lsr_flags = LU_SEQ_RANGE_MDT; - range->lsr_index = 0; - return 0; - } - if (fid_is_idif(fid)) { - range->lsr_flags = LU_SEQ_RANGE_OST; + fld_range_set_ost(range); range->lsr_index = fid_idif_ost_idx(fid); return 0; } - if (!fid_is_norm(fid)) { - range->lsr_flags = LU_SEQ_RANGE_MDT; - /* If ss is NULL, it suppose not get lsr_index at all */ + if (!fid_seq_in_fldb(fid_seq(fid))) { + fld_range_set_mdt(range); if (ss != NULL) + /* FIXME: If ss is NULL, it suppose not get lsr_index + * at all */ range->lsr_index = ss->ss_node_id; return 0; } LASSERT(ss != NULL); - range->lsr_flags = -1; + fld_range_set_any(range); rc = fld_server_lookup(env, ss->ss_server_fld, fid_seq(fid), range); if (rc != 0) - CERROR("%s can not find "DFID": rc = %d\n", + CERROR("%s: cannot find FLD range for "DFID": rc = %d\n", osd_name(osd), PFID(fid), rc); return rc; } @@ -260,14 +253,14 @@ int fid_is_on_ost(const struct lu_env *env, struct osd_device *osd, rc = osd_fld_lookup(env, osd, fid, range); if (rc != 0) { CERROR("%s: Can not lookup fld for "DFID"\n", - osd2lu_dev(osd)->ld_obd->obd_name, PFID(fid)); + osd_name(osd), PFID(fid)); RETURN(rc); } CDEBUG(D_INFO, "fid "DFID" range "DRANGE"\n", PFID(fid), PRANGE(range)); - if (range->lsr_flags == LU_SEQ_RANGE_OST) + if (fld_range_is_ost(range)) RETURN(1); RETURN(0); @@ -357,7 +350,7 @@ static struct osd_seq *osd_find_or_add_seq(const struct lu_env *env, sprintf(key, "d%d", i); rc = osd_oi_find_or_create(env, osd, odb, key, &sdb); if (rc) - GOTO(out, osd_seq = ERR_PTR(rc)); + GOTO(out, rc); osd_seq->os_compat_dirs[i] = sdb; } @@ -396,12 +389,13 @@ osd_get_idx_for_ost_obj(const struct lu_env *env, struct osd_device *osd, PFID(fid)); return PTR_ERR(osd_seq); } - rc = fid_ostid_pack(fid, &osd_oti_get(env)->oti_ostid); + + rc = fid_to_ostid(fid, &osd_oti_get(env)->oti_ostid); LASSERT(rc == 0); /* we should not get here with IGIF */ - b = osd_oti_get(env)->oti_ostid.oi_id % OSD_OST_MAP_SIZE; + b = ostid_id(&osd_oti_get(env)->oti_ostid) % OSD_OST_MAP_SIZE; LASSERT(osd_seq->os_compat_dirs[b]); - sprintf(buf, LPU64, osd_oti_get(env)->oti_ostid.oi_id); + sprintf(buf, LPU64, ostid_id(&osd_oti_get(env)->oti_ostid)); return osd_seq->os_compat_dirs[b]; }