int lmv_fld_lookup(struct lmv_obd *lmv, const struct lu_fid *fid, u32 *mds) { struct obd_device *obd = lmv2obd_dev(lmv); int rc; /* * FIXME: Currently ZFS still use local seq for ROOT unfortunately, and * this fid_is_local check should be removed once LU-2240 is fixed */ if (!fid_is_sane(fid) || !(fid_seq_in_fldb(fid_seq(fid)) || fid_seq_is_local_file(fid_seq(fid)))) { CERROR("%s: invalid FID " DFID "\n", obd->obd_name, PFID(fid)); return -EINVAL; } rc = fld_client_lookup(&lmv->lmv_fld, fid_seq(fid), mds, LU_SEQ_RANGE_MDT, NULL); if (rc) { CERROR("Error while looking for mds number. Seq %#llx, err = %d\n", fid_seq(fid), rc); return rc; } CDEBUG(D_INODE, "FLD lookup got mds #%x for fid="DFID"\n", *mds, PFID(fid)); if (*mds >= lmv->desc.ld_tgt_count) { CERROR("FLD lookup got invalid mds #%x (max: %x) for fid=" DFID "\n", *mds, lmv->desc.ld_tgt_count, PFID(fid)); rc = -EINVAL; } return rc; }
int lmv_fld_lookup(struct lmv_obd *lmv, const struct lu_fid *fid, mdsno_t *mds) { int rc; /* FIXME: Currently ZFS still use local seq for ROOT unfortunately, and * this fid_is_local check should be removed once LU-2240 is fixed */ LASSERTF((fid_seq_in_fldb(fid_seq(fid)) || fid_seq_is_local_file(fid_seq(fid))) && fid_is_sane(fid), DFID" is insane!\n", PFID(fid)); rc = fld_client_lookup(&lmv->lmv_fld, fid_seq(fid), mds, LU_SEQ_RANGE_MDT, NULL); if (rc) { CERROR("Error while looking for mds number. Seq %#llx, err = %d\n", fid_seq(fid), rc); return rc; } CDEBUG(D_INODE, "FLD lookup got mds #%x for fid="DFID"\n", *mds, PFID(fid)); if (*mds >= lmv->desc.ld_tgt_count) { CERROR("FLD lookup got invalid mds #%x (max: %x) " "for fid="DFID"\n", *mds, lmv->desc.ld_tgt_count, PFID(fid)); rc = -EINVAL; } return rc; }
static int osd_remote_fid(const struct lu_env *env, struct osd_device *osd, struct lu_fid *fid) { ENTRY; /* FID seqs not in FLDB, must be local seq */ if (unlikely(!fid_seq_in_fldb(fid_seq(fid)))) RETURN(0); if (osd_seq_exists(env, osd, fid_seq(fid))) RETURN(0); RETURN(1); }