⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obd_class.h

📁 lustre 1.6.5 source code
💻 H
📖 第 1 页 / 共 4 页
字号:
        if (obd == NULL)                RETURN(-EINVAL);        OBD_CHECK_OP(obd, statfs, -EOPNOTSUPP);        OBD_COUNTER_INCREMENT(obd, statfs);        CDEBUG(D_SUPER, "%s: osfs %p age "LPU64", max_age "LPU64"\n",               obd->obd_name, &obd->obd_osfs, obd->obd_osfs_age, max_age);        if (cfs_time_before_64(obd->obd_osfs_age, max_age)) {                rc = OBP(obd, statfs_async)(obd, oinfo, max_age, rqset);        } else {                CDEBUG(D_SUPER,"%s: use %p cache blocks "LPU64"/"LPU64                       " objects "LPU64"/"LPU64"\n",                       obd->obd_name, &obd->obd_osfs,                       obd->obd_osfs.os_bavail, obd->obd_osfs.os_blocks,                       obd->obd_osfs.os_ffree, obd->obd_osfs.os_files);                spin_lock(&obd->obd_osfs_lock);                memcpy(oinfo->oi_osfs, &obd->obd_osfs, sizeof(*oinfo->oi_osfs));                spin_unlock(&obd->obd_osfs_lock);                if (oinfo->oi_cb_up)                        oinfo->oi_cb_up(oinfo, 0);        }        RETURN(rc);}static inline int obd_statfs_rqset(struct obd_device *obd,                                   struct obd_statfs *osfs, __u64 max_age,                                   __u32 flags){        struct ptlrpc_request_set *set = NULL;        struct obd_info oinfo = { { { 0 } } };        int rc = 0;        ENTRY;        set = ptlrpc_prep_set();        if (set == NULL)                RETURN(-ENOMEM);        oinfo.oi_osfs = osfs;        oinfo.oi_flags = flags;        rc = obd_statfs_async(obd, &oinfo, max_age, set);        if (rc == 0)                rc = ptlrpc_set_wait(set);        ptlrpc_set_destroy(set);        RETURN(rc);}/* @max_age is the oldest time in jiffies that we accept using a cached data. * If the cache is older than @max_age we will get a new value from the * target.  Use a value of "cfs_time_current() + HZ" to guarantee freshness. */static inline int obd_statfs(struct obd_device *obd, struct obd_statfs *osfs,                             __u64 max_age, __u32 flags){        int rc = 0;        ENTRY;        if (obd == NULL)                RETURN(-EINVAL);        OBD_CHECK_OP(obd, statfs, -EOPNOTSUPP);        OBD_COUNTER_INCREMENT(obd, statfs);        CDEBUG(D_SUPER, "osfs "LPU64", max_age "LPU64"\n",               obd->obd_osfs_age, max_age);        if (cfs_time_before_64(obd->obd_osfs_age, max_age)) {                rc = OBP(obd, statfs)(obd, osfs, max_age, flags);                if (rc == 0) {                        spin_lock(&obd->obd_osfs_lock);                        memcpy(&obd->obd_osfs, osfs, sizeof(obd->obd_osfs));                        obd->obd_osfs_age = cfs_time_current_64();                        spin_unlock(&obd->obd_osfs_lock);                }        } else {                CDEBUG(D_SUPER,"%s: use %p cache blocks "LPU64"/"LPU64                       " objects "LPU64"/"LPU64"\n",                       obd->obd_name, &obd->obd_osfs,                       obd->obd_osfs.os_bavail, obd->obd_osfs.os_blocks,                       obd->obd_osfs.os_ffree, obd->obd_osfs.os_files);                spin_lock(&obd->obd_osfs_lock);                memcpy(osfs, &obd->obd_osfs, sizeof(*osfs));                spin_unlock(&obd->obd_osfs_lock);        }        RETURN(rc);}static inline int obd_sync(struct obd_export *exp, struct obdo *oa,                           struct lov_stripe_md *ea, obd_size start,                           obd_size end){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, sync, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, sync);        rc = OBP(exp->exp_obd, sync)(exp, oa, ea, start, end);        RETURN(rc);}static inline int obd_punch_rqset(struct obd_export *exp,                                  struct obd_info *oinfo,                                  struct obd_trans_info *oti){        struct ptlrpc_request_set *set = NULL;        int rc;        ENTRY;        EXP_CHECK_OP(exp, punch);        EXP_COUNTER_INCREMENT(exp, punch);        set =  ptlrpc_prep_set();        if (set == NULL)                RETURN(-ENOMEM);        rc = OBP(exp->exp_obd, punch)(exp, oinfo, oti, set);        if (rc == 0)                rc = ptlrpc_set_wait(set);        ptlrpc_set_destroy(set);        RETURN(rc);}static inline int obd_punch(struct obd_export *exp, struct obd_info *oinfo,                            struct obd_trans_info *oti,                            struct ptlrpc_request_set *rqset){        int rc;        ENTRY;        EXP_CHECK_OP(exp, punch);        EXP_COUNTER_INCREMENT(exp, punch);        rc = OBP(exp->exp_obd, punch)(exp, oinfo, oti, rqset);        RETURN(rc);}static inline int obd_brw(int cmd, struct obd_export *exp,                          struct obd_info *oinfo, obd_count oa_bufs,                          struct brw_page *pg, struct obd_trans_info *oti){        int rc;        ENTRY;        EXP_CHECK_OP(exp, brw);        EXP_COUNTER_INCREMENT(exp, brw);        if (!(cmd & (OBD_BRW_RWMASK | OBD_BRW_CHECK))) {                CERROR("obd_brw: cmd must be OBD_BRW_READ, OBD_BRW_WRITE, "                       "or OBD_BRW_CHECK\n");                LBUG();        }        rc = OBP(exp->exp_obd, brw)(cmd, exp, oinfo, oa_bufs, pg, oti);        RETURN(rc);}static inline int obd_brw_async(int cmd, struct obd_export *exp,                                struct obd_info *oinfo, obd_count oa_bufs,                                struct brw_page *pg, struct obd_trans_info *oti,                                struct ptlrpc_request_set *set){        int rc;        ENTRY;        EXP_CHECK_OP(exp, brw_async);        EXP_COUNTER_INCREMENT(exp, brw_async);        if (!(cmd & OBD_BRW_RWMASK)) {                CERROR("obd_brw: cmd must be OBD_BRW_READ or OBD_BRW_WRITE\n");                LBUG();        }        rc = OBP(exp->exp_obd, brw_async)(cmd, exp, oinfo, oa_bufs, pg,oti,set);        RETURN(rc);}static inline int obd_brw_rqset(int cmd, struct obd_export *exp,                                struct obdo *oa, struct lov_stripe_md *lsm,                                obd_count oa_bufs, struct brw_page *pg,                                struct obd_trans_info *oti){        struct ptlrpc_request_set *set = NULL;        struct obd_info oinfo = { { { 0 } } };        int rc = 0;        ENTRY;        set =  ptlrpc_prep_set();        if (set == NULL)                RETURN(-ENOMEM);        oinfo.oi_oa = oa;        oinfo.oi_md = lsm;        rc = obd_brw_async(cmd, exp, &oinfo, oa_bufs, pg, oti, set);        if (rc == 0) {                rc = ptlrpc_set_wait(set);                if (rc)                        CERROR("error from callback: rc = %d\n", rc);        } else {                CDEBUG(rc == -ENOSPC ? D_INODE : D_ERROR,                       "error from obd_brw_async: rc = %d\n", rc);        }        ptlrpc_set_destroy(set);        RETURN(rc);}static inline  int obd_prep_async_page(struct obd_export *exp,                                       struct lov_stripe_md *lsm,                                       struct lov_oinfo *loi,                                       cfs_page_t *page, obd_off offset,                                       struct obd_async_page_ops *ops,                                       void *data, void **res, int nocache,                                       struct lustre_handle *lockh){        int ret;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, prep_async_page, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, prep_async_page);        ret = OBP(exp->exp_obd, prep_async_page)(exp, lsm, loi, page, offset,                                                 ops, data, res, nocache,                                                 lockh);        RETURN(ret);}static inline int obd_queue_async_io(struct obd_export *exp,                                     struct lov_stripe_md *lsm,                                     struct lov_oinfo *loi, void *cookie,                                     int cmd, obd_off off, int count,                                     obd_flag brw_flags, obd_flag async_flags){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, queue_async_io, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, queue_async_io);        LASSERT(cmd & OBD_BRW_RWMASK);        rc = OBP(exp->exp_obd, queue_async_io)(exp, lsm, loi, cookie, cmd, off,                                               count, brw_flags, async_flags);        RETURN(rc);}static inline int obd_set_async_flags(struct obd_export *exp,                                      struct lov_stripe_md *lsm,                                      struct lov_oinfo *loi, void *cookie,                                      obd_flag async_flags){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, set_async_flags, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, set_async_flags);        rc = OBP(exp->exp_obd, set_async_flags)(exp, lsm, loi, cookie,                                                async_flags);        RETURN(rc);}static inline int obd_queue_group_io(struct obd_export *exp,                                     struct lov_stripe_md *lsm,                                     struct lov_oinfo *loi,                                     struct obd_io_group *oig,                                     void *cookie, int cmd, obd_off off,                                     int count, obd_flag brw_flags,                                     obd_flag async_flags){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, queue_group_io, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, queue_group_io);        LASSERT(cmd & OBD_BRW_RWMASK);        rc = OBP(exp->exp_obd, queue_group_io)(exp, lsm, loi, oig, cookie,                                               cmd, off, count, brw_flags,                                               async_flags);        RETURN(rc);}static inline int obd_trigger_group_io(struct obd_export *exp,                                       struct lov_stripe_md *lsm,                                       struct lov_oinfo *loi,                                       struct obd_io_group *oig){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, trigger_group_io, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, trigger_group_io);        rc = OBP(exp->exp_obd, trigger_group_io)(exp, lsm, loi, oig);        RETURN(rc);}static inline int obd_teardown_async_page(struct obd_export *exp,                                          struct lov_stripe_md *lsm,                                          struct lov_oinfo *loi, void *cookie){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, teardown_async_page, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, teardown_async_page);        rc = OBP(exp->exp_obd, teardown_async_page)(exp, lsm, loi, cookie);        RETURN(rc);}static inline int obd_preprw(int cmd, struct obd_export *exp, struct obdo *oa,                             int objcount, struct obd_ioobj *obj,                             int niocount, struct niobuf_remote *remote,                             struct niobuf_local *local,                             struct obd_trans_info *oti){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, preprw, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, preprw);        rc = OBP(exp->exp_obd, preprw)(cmd, exp, oa, objcount, obj, niocount,                                       remote, local, oti);        RETURN(rc);}static inline int obd_commitrw(int cmd, struct obd_export *exp, struct obdo *oa,                               int objcount, struct obd_ioobj *obj,                               int niocount, struct niobuf_local *local,                               struct obd_trans_info *oti, int rc){        ENTRY;        OBD_CHECK_OP(exp->exp_obd, commitrw, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, commitrw);        rc = OBP(exp->exp_obd, commitrw)(cmd, exp, oa, objcount, obj, niocount,                                         local, oti, rc);        RETURN(rc);}static inline int obd_merge_lvb(struct obd_export *exp,                                struct lov_stripe_md *lsm,                                struct ost_lvb *lvb, int kms_only){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, merge_lvb, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, merge_lvb);        rc = OBP(exp->exp_obd, merge_lvb)(exp, lsm, lvb, kms_only);        RETURN(rc);}static inline int obd_adjust_kms(struct obd_export *exp,                                 struct lov_stripe_md *lsm, obd_off size,                                 int shrink){        int rc;        ENTRY;        OBD_CHECK_OP(exp->exp_obd, adjust_kms, -EOPNOTSUPP);        EXP_COUNTER_INCREMENT(exp, adjust_kms);        rc = OBP(exp->exp_obd, adjust_kms)(exp, lsm, size, shrink);        RETURN(rc);}static inline int obd_iocontrol(unsigned int cmd, struct obd_export *exp,                                int len, void *karg, void *uarg){        int rc;        ENTRY;        EXP_CHECK_OP(exp, iocontrol);        EXP_COUNTER_INCREMENT(exp, iocontrol);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -