亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? obd.h

?? lustre 1.6.5 source code
?? H
?? 第 1 頁 / 共 4 頁
字號(hào):
/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: */#ifndef __OBD_H#define __OBD_H#if defined(__linux__)#include <linux/obd.h>#elif defined(__APPLE__)#include <darwin/obd.h>#elif defined(__WINNT__)#include <winnt/obd.h>#else#error Unsupported operating system.#endif#define IOC_OSC_TYPE         'h'#define IOC_OSC_MIN_NR       20#define IOC_OSC_SET_ACTIVE   _IOWR(IOC_OSC_TYPE, 21, struct obd_device *)#define IOC_OSC_MAX_NR       50#define IOC_MDC_TYPE         'i'#define IOC_MDC_MIN_NR       20/* Moved to lustre_user.h#define IOC_MDC_LOOKUP       _IOWR(IOC_MDC_TYPE, 20, struct obd_ioctl_data *)#define IOC_MDC_GETSTRIPE    _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *) */#define IOC_MDC_MAX_NR       50#include <lustre_lib.h>#include <lustre/lustre_idl.h>#include <lustre_export.h>#include <lustre_quota.h>#include <class_hash.h>#include <libcfs/bitmap.h>#define MAX_OBD_DEVICES 8192/* this is really local to the OSC */struct loi_oap_pages {        struct list_head        lop_pending;        struct list_head        lop_urgent;        struct list_head        lop_pending_group;        int                     lop_num_pending;};struct osc_async_rc {        int     ar_rc;        int     ar_force_sync;        __u64   ar_min_xid;};struct lov_oinfo {                 /* per-stripe data structure */        __u64 loi_id;              /* object ID on the target OST */        __u64 loi_gr;              /* object group on the target OST */        int loi_ost_idx;           /* OST stripe index in lov_tgt_desc->tgts */        int loi_ost_gen;           /* generation of this loi_ost_idx */        /* used by the osc to keep track of what objects to build into rpcs */        struct loi_oap_pages loi_read_lop;        struct loi_oap_pages loi_write_lop;        /* _cli_ is poorly named, it should be _ready_ */        struct list_head loi_cli_item;        struct list_head loi_write_item;        struct list_head loi_read_item;        unsigned long loi_kms_valid:1;        __u64 loi_kms;             /* known minimum size */        struct ost_lvb loi_lvb;        struct osc_async_rc     loi_ar;};static inline void loi_init(struct lov_oinfo *loi){        CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_pending);        CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_urgent);        CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_pending_group);        CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_pending);        CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_urgent);        CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_pending_group);        CFS_INIT_LIST_HEAD(&loi->loi_cli_item);        CFS_INIT_LIST_HEAD(&loi->loi_write_item);        CFS_INIT_LIST_HEAD(&loi->loi_read_item);}/*extent array item for describing the joined file extent info*/struct lov_extent {        __u64 le_start;            /* extent start */        __u64 le_len;              /* extent length */        int   le_loi_idx;          /* extent #1 loi's index in lsm loi array */        int   le_stripe_count;     /* extent stripe count*/};/*Lov array info for describing joined file array EA info*/struct lov_array_info {        struct llog_logid    lai_array_id;    /* MDS med llog object id */        unsigned             lai_ext_count; /* number of extent count */        struct lov_extent    *lai_ext_array; /* extent desc array */};struct lov_stripe_md {        spinlock_t       lsm_lock;        void            *lsm_lock_owner; /* debugging */        struct {                /* Public members. */                __u64 lw_object_id;        /* lov object id */                __u64 lw_object_gr;        /* lov object group */                __u64 lw_maxbytes;         /* maximum possible file size */                /* LOV-private members start here -- only for use in lov/. */                __u32 lw_magic;                __u32 lw_stripe_size;      /* size of the stripe */                __u32 lw_pattern;          /* striping pattern (RAID0, RAID1) */                unsigned lw_stripe_count;  /* number of objects being striped over */        } lsm_wire;        struct lov_array_info *lsm_array; /*Only for joined file array info*/        struct lov_oinfo *lsm_oinfo[0];};#define lsm_object_id    lsm_wire.lw_object_id#define lsm_object_gr    lsm_wire.lw_object_gr#define lsm_maxbytes     lsm_wire.lw_maxbytes#define lsm_magic        lsm_wire.lw_magic#define lsm_stripe_size  lsm_wire.lw_stripe_size#define lsm_pattern      lsm_wire.lw_pattern#define lsm_stripe_count lsm_wire.lw_stripe_countstruct obd_info;typedef int (*obd_enqueue_update_f)(struct obd_info *oinfo, int rc);/* obd info for a particular level (lov, osc). */struct obd_info {        /* Lock policy. It keeps an extent which is specific for a particular         * OSC. (e.g. lov_prep_enqueue_set initialises extent of the policy,         * and osc_enqueue passes it into ldlm_lock_match & ldlm_cli_enqueue. */        ldlm_policy_data_t      oi_policy;        /* Flags used for set request specific flags:           - while lock handling, the flags obtained on the enqueue           request are set here.           - while stats, the flags used for control delay/resend.         */        int                     oi_flags;        /* Lock handle specific for every OSC lock. */        struct lustre_handle   *oi_lockh;        /* lsm data specific for every OSC. */        struct lov_stripe_md   *oi_md;        /* obdo data specific for every OSC, if needed at all. */        struct obdo            *oi_oa;        /* statfs data specific for every OSC, if needed at all. */        struct obd_statfs      *oi_osfs;        /* An update callback which is called to update some data on upper         * level. E.g. it is used for update lsm->lsm_oinfo at every recieved         * request in osc level for enqueue requests. It is also possible to         * update some caller data from LOV layer if needed. */        obd_enqueue_update_f     oi_cb_up;};/* compare all relevant fields. */static inline int lov_stripe_md_cmp(struct lov_stripe_md *m1,                                    struct lov_stripe_md *m2){        /*         * ->lsm_wire contains padding, but it should be zeroed out during         * allocation.         */        return memcmp(&m1->lsm_wire, &m2->lsm_wire, sizeof m1->lsm_wire);}void lov_stripe_lock(struct lov_stripe_md *md);void lov_stripe_unlock(struct lov_stripe_md *md);struct obd_type {        struct list_head typ_chain;        struct obd_ops *typ_ops;        cfs_proc_dir_entry_t *typ_procroot;        char *typ_name;        int  typ_refcnt;        spinlock_t obd_type_lock;};struct brw_page {        obd_off  off;        cfs_page_t *pg;        int count;        obd_flag flag;};enum async_flags {        ASYNC_READY = 0x1, /* ap_make_ready will not be called before this                              page is added to an rpc */        ASYNC_URGENT = 0x2, /* page must be put into an RPC before return */        ASYNC_COUNT_STABLE = 0x4, /* ap_refresh_count will not be called                                     to give the caller a chance to update                                     or cancel the size of the io */        ASYNC_GROUP_SYNC = 0x8,  /* ap_completion will not be called, instead                                    the page is accounted for in the                                    obd_io_group given to                                    obd_queue_group_io */};struct obd_async_page_ops {        int  (*ap_make_ready)(void *data, int cmd);        int  (*ap_refresh_count)(void *data, int cmd);        void (*ap_fill_obdo)(void *data, int cmd, struct obdo *oa);        void (*ap_update_obdo)(void *data, int cmd, struct obdo *oa,                               obd_valid valid);        int  (*ap_completion)(void *data, int cmd, struct obdo *oa, int rc);};/* the `oig' is passed down from a caller of obd rw methods.  the callee * records enough state such that the caller can sleep on the oig and * be woken when all the callees have finished their work */struct obd_io_group {        spinlock_t      oig_lock;        atomic_t        oig_refcount;        int             oig_pending;        int             oig_rc;        struct list_head oig_occ_list;        cfs_waitq_t     oig_waitq;};/* the oig callback context lets the callee of obd rw methods register * for callbacks from the caller. */struct oig_callback_context {        struct list_head occ_oig_item;        /* called when the caller has received a signal while sleeping.         * callees of this method are encouraged to abort their state         * in the oig.  This may be called multiple times. */        void (*occ_interrupted)(struct oig_callback_context *occ);        unsigned long interrupted:1;};/* Individual type definitions */struct ost_server_data;/* hold common fields for "target" device */struct obd_device_target {        struct super_block       *obt_sb;        atomic_t                  obt_quotachecking;        struct lustre_quota_ctxt  obt_qctxt;};typedef void (*obd_pin_extent_cb)(void *data);typedef int (*obd_page_removal_cb_t)(void *data, int discard);typedef int (*obd_lock_cancel_cb)(struct ldlm_lock *,struct ldlm_lock_desc *,                                   void *, int);#define FILTER_GROUP_LLOG 1#define FILTER_GROUP_ECHO 2struct filter_ext {        __u64                fe_start;        __u64                fe_end;};struct filter_obd {        /* NB this field MUST be first */        struct obd_device_target fo_obt;        const char          *fo_fstype;        struct vfsmount     *fo_vfsmnt;        cfs_dentry_t        *fo_dentry_O;        cfs_dentry_t       **fo_dentry_O_groups;        cfs_dentry_t       **fo_dentry_O_sub;        spinlock_t           fo_objidlock;      /* protect fo_lastobjid */        spinlock_t           fo_translock;      /* protect fsd_last_transno */        struct file         *fo_rcvd_filp;        struct file         *fo_health_check_filp;        struct lr_server_data *fo_fsd;        unsigned long       *fo_last_rcvd_slots;        __u64                fo_mount_count;        int                  fo_destroy_in_progress;        struct semaphore     fo_create_lock;        struct list_head     fo_export_list;        int                  fo_subdir_count;        obd_size             fo_tot_dirty;      /* protected by obd_osfs_lock */        obd_size             fo_tot_granted;    /* all values in bytes */        obd_size             fo_tot_pending;        obd_size             fo_readcache_max_filesize;        struct obd_import   *fo_mdc_imp;        struct obd_uuid      fo_mdc_uuid;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美剧情片在线观看| 日韩欧美第一区| 日韩精品一二三| 久久久亚洲午夜电影| 在线看国产一区二区| 另类欧美日韩国产在线| 中文字幕一区二区三区色视频| 欧美精品一级二级| 丁香婷婷综合色啪| 麻豆久久久久久| 亚洲激情在线激情| 日本一二三不卡| 日韩一区二区精品葵司在线 | 一区二区三区产品免费精品久久75| 欧美日韩一区二区三区在线| 国产成人av电影| 久久99精品国产.久久久久 | 国产美女一区二区| 午夜欧美在线一二页| 国产精品激情偷乱一区二区∴| 日韩网站在线看片你懂的| 91在线免费播放| 国产成人一级电影| 久久国产乱子精品免费女| 亚洲sss视频在线视频| 国产精品午夜免费| 2020国产精品久久精品美国| 在线播放亚洲一区| 欧美色图片你懂的| 99久精品国产| 成人avav影音| 成人综合日日夜夜| 国产成人精品亚洲777人妖| 免费看欧美女人艹b| 无吗不卡中文字幕| 婷婷一区二区三区| 日精品一区二区三区| 亚洲午夜国产一区99re久久| 亚洲欧美一区二区三区极速播放| 国产清纯在线一区二区www| 欧美tk—视频vk| 亚洲精品在线电影| 欧美精品一区在线观看| 日韩欧美成人一区| 精品久久久久一区| 久久综合色之久久综合| 26uuu欧美| 国产欧美精品一区二区色综合朱莉| 久久久精品天堂| 国产精品午夜免费| 国产精品国产三级国产aⅴ入口 | 免费不卡在线视频| 久久99久久久欧美国产| 久久99精品网久久| 国产精品18久久久久久久久 | 蜜桃一区二区三区在线观看| 日韩成人一区二区三区在线观看| 午夜精品久久久久久久久| 性欧美大战久久久久久久久| 婷婷一区二区三区| 久久精品国产色蜜蜜麻豆| 国产一区二区三区黄视频 | 成人一级片网址| 成人福利电影精品一区二区在线观看| 国产69精品久久久久777| 99re视频精品| 欧美男人的天堂一二区| 欧美一区二区视频在线观看 | 岛国一区二区三区| 91麻豆精东视频| 欧美日韩国产首页在线观看| 日韩一区二区电影在线| 国产校园另类小说区| 亚洲人成精品久久久久| 天天综合日日夜夜精品| 狠狠色丁香婷婷综合| voyeur盗摄精品| 欧美片在线播放| 国产日韩在线不卡| 一区二区激情小说| 免费在线观看一区| 不卡欧美aaaaa| 欧美另类videos死尸| 久久综合九色综合久久久精品综合| 国产精品婷婷午夜在线观看| 亚洲一区二区三区在线| 久久精品国产999大香线蕉| 成人午夜视频在线| 欧美精品丝袜久久久中文字幕| 久久精品这里都是精品| 一区二区三区日韩欧美| 国产在线精品一区二区不卡了| 99久久99久久精品免费观看| 日韩小视频在线观看专区| 国产精品久久三| 蜜桃视频在线观看一区| 色欧美88888久久久久久影院| 日韩视频免费观看高清完整版在线观看 | 波多野结衣在线一区| 欧美电影一区二区| 中文字幕欧美一| 国产乱码精品一区二区三区av | 日韩电影在线一区二区三区| 床上的激情91.| 精品久久久久久久久久久久包黑料| 亚洲视频狠狠干| 国产福利一区二区三区视频| 制服丝袜国产精品| 亚洲综合清纯丝袜自拍| 成人精品视频一区二区三区 | 欧美日本在线一区| 国产精品成人免费精品自在线观看| 免费看黄色91| 欧美男男青年gay1069videost| 中文字幕一区二区三区不卡| 国产真实乱对白精彩久久| 欧美精品一卡两卡| 亚洲一二三级电影| 99久久精品国产毛片| 久久综合视频网| 麻豆91免费观看| 欧美人成免费网站| 亚洲综合成人在线| 91蝌蚪porny| 国产精品久久久久久久午夜片| 国产一区二区免费在线| 欧美一区二区成人6969| 亚洲成在线观看| 欧美在线一区二区三区| 亚洲色图欧美偷拍| 99热精品国产| 国产精品麻豆视频| 丁香婷婷综合五月| 亚洲国产精品av| 国产69精品久久777的优势| 久久免费午夜影院| 韩国欧美一区二区| 久久综合久久综合亚洲| 国产在线麻豆精品观看| 日韩欧美精品在线| 麻豆一区二区三| 精品国产亚洲在线| 国产在线视频一区二区三区| 精品国产麻豆免费人成网站| 国产又黄又大久久| 中文子幕无线码一区tr| 成人妖精视频yjsp地址| 国产精品视频第一区| 成人黄色在线网站| 最新热久久免费视频| 99精品视频在线播放观看| 国产精品日日摸夜夜摸av| 成人av在线资源网站| 亚洲精品久久久久久国产精华液| 91蝌蚪porny九色| 亚洲gay无套男同| 日韩视频免费直播| 国产成人自拍高清视频在线免费播放| 国产精品私人影院| 91久久线看在观草草青青| 亚洲第一福利一区| 日韩三级视频在线看| 国产精品资源网站| 中文字幕在线不卡一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲精品日韩专区silk| 555www色欧美视频| 国产成人精品一区二区三区四区| 中文字幕中文字幕在线一区| 欧美三级蜜桃2在线观看| 日本欧美久久久久免费播放网| 久久噜噜亚洲综合| 日本精品一区二区三区四区的功能| 三级在线观看一区二区| www激情久久| 欧洲日韩一区二区三区| 蜜桃免费网站一区二区三区| 国产精品女主播在线观看| 欧美日韩亚洲综合一区| 国产美女久久久久| 亚洲一区在线免费观看| 精品奇米国产一区二区三区| 成人av在线播放网址| 亚洲r级在线视频| 国产蜜臀97一区二区三区| 欧美日韩在线三级| 国产一区二区三区| 午夜视频久久久久久| 欧美激情艳妇裸体舞| 4438成人网| 色综合久久久久综合体桃花网| 久久国产视频网| 亚洲一区二区三区在线| 国产欧美日产一区| 日韩一区二区三区在线| 色美美综合视频| 国产成人精品www牛牛影视| 天天综合网 天天综合色| 国产精品福利一区二区| 精品福利视频一区二区三区|