示例#1
0
文件: fld_index.c 项目: hpc/lustre
int fld_index_lookup(struct lu_server_fld *fld,
                     const struct lu_env *env,
                     seqno_t seq,
                     struct lu_seq_range *range)
{
        struct dt_object        *dt_obj = fld->lsf_obj;
        struct lu_seq_range     *fld_rec;
        struct dt_key           *key = fld_key(env, seq);
        struct fld_thread_info  *info;
        int rc;

        ENTRY;

        info = lu_context_key_get(&env->le_ctx, &fld_thread_key);
        fld_rec = &info->fti_rec;

        rc = dt_obj->do_index_ops->dio_lookup(env, dt_obj,
                                              (struct dt_rec*) fld_rec,
                                              key, BYPASS_CAPA);

        if (rc >= 0) {
                range_be_to_cpu(fld_rec, fld_rec);
                *range = *fld_rec;
                if (range_within(range, seq))
                        rc = 0;
                else
                        rc = -ENOENT;
        }

        CDEBUG(D_INFO, "%s: lookup seq = "LPX64" range : "DRANGE" rc = %d\n",
               fld->lsf_name, seq, PRANGE(range), rc);

        RETURN(rc);
}
示例#2
0
文件: fld_index.c 项目: DCteam/lustre
int fld_index_create(struct lu_server_fld *fld,
                     const struct lu_env *env,
                     const struct lu_seq_range *range,
                     struct thandle *th)
{
        struct dt_object *dt_obj = fld->lsf_obj;
        struct dt_device *dt_dev;
        seqno_t start;
        int rc;

        ENTRY;

        start = range->lsr_start;
        LASSERT(range_is_sane(range));
        dt_dev = lu2dt_dev(fld->lsf_obj->do_lu.lo_dev);

        rc = dt_obj->do_index_ops->dio_insert(env, dt_obj,
                                              fld_rec(env, range),
                                              fld_key(env, start),
                                              th, BYPASS_CAPA, 1);

        CDEBUG(D_INFO, "%s: insert given range : "DRANGE" rc = %d\n",
               fld->lsf_name, PRANGE(range), rc);
        RETURN(rc);
}
示例#3
0
文件: fld_index.c 项目: hpc/lustre
int fld_index_delete(struct lu_server_fld *fld,
                     const struct lu_env *env,
                     struct lu_seq_range *range,
                     struct thandle   *th)
{
        struct dt_object *dt_obj = fld->lsf_obj;
        seqno_t seq = range->lsr_start;
        int rc;

        ENTRY;

        rc = dt_obj->do_index_ops->dio_delete(env, dt_obj, fld_key(env, seq),
                                              th, BYPASS_CAPA);

        CDEBUG(D_INFO, "%s: delete given range : "DRANGE" rc = %d\n",
               fld->lsf_name, PRANGE(range), rc);

        RETURN(rc);
}
示例#4
0
文件: fld_index.c 项目: hpc/lustre
int fld_declare_index_create(struct lu_server_fld *fld,
                             const struct lu_env *env,
                             const struct lu_seq_range *range,
                             struct thandle *th)
{
        struct dt_object *dt_obj = fld->lsf_obj;
        seqno_t start;
        int rc;

        ENTRY;

        start = range->lsr_start;
        LASSERT(range_is_sane(range));

        rc = dt_obj->do_index_ops->dio_declare_insert(env, dt_obj,
                                                      fld_rec(env, range),
                                                      fld_key(env, start), th);
        RETURN(rc);
}