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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? obd.h

?? lustre 1.6.5 source code
?? H
?? 第 1 頁 / 共 4 頁
字號:
/* -*- 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷一区二区| 日韩精品电影在线| 欧美电影免费观看高清完整版在线 | 一区二区三区日韩欧美| 久久久综合视频| 久久久久久久网| 亚洲人成电影网站色mp4| 国产精品伦一区| 一区二区三区91| 免费看欧美美女黄的网站| 久久精品99国产精品| www.亚洲激情.com| 欧美三级电影精品| 国产精品狼人久久影院观看方式| 亚洲一级二级三级在线免费观看| 国内精品久久久久影院色 | 欧美一级片在线观看| 国产欧美精品一区aⅴ影院 | 日韩黄色免费网站| aaa亚洲精品一二三区| 日韩精品一区二区三区四区| 一区二区在线观看免费视频播放| 国产自产v一区二区三区c| 欧美日韩国产三级| 夜夜亚洲天天久久| 91福利资源站| 综合久久综合久久| 97se亚洲国产综合自在线| 国产丝袜在线精品| 美女在线观看视频一区二区| 在线精品视频小说1| 亚洲成在线观看| 56国语精品自产拍在线观看| 午夜精品久久久久久| 欧美一区二区三区在线| 久久精品国产精品青草| 欧美精品一区二区蜜臀亚洲| 国产在线视频不卡二| 国产精品国产三级国产aⅴ原创| 99久久综合国产精品| 亚洲妇女屁股眼交7| 国产网站一区二区三区| 国产99久久久久| 国产精品网站一区| 欧美精品视频www在线观看| 久久国产尿小便嘘嘘尿| 亚洲人123区| 日韩一级高清毛片| 色噜噜狠狠成人中文综合| 亚洲国产一区视频| 国产精品无遮挡| 精品黑人一区二区三区久久| 色婷婷激情综合| 成人动漫一区二区| 狠狠色丁香婷婷综合| 亚洲一二三区在线观看| 久久精品水蜜桃av综合天堂| 99国产精品国产精品久久| 国产乱妇无码大片在线观看| 亚洲国产婷婷综合在线精品| 国产精品天美传媒沈樵| 久久久久久综合| 日韩一级二级三级精品视频| 欧美日韩一区二区三区在线 | 国产免费成人在线视频| 久久久久国产免费免费| 欧美精品一二三| 欧美精品亚洲一区二区在线播放| 在线看国产一区二区| 一本久道中文字幕精品亚洲嫩| 成人高清免费观看| 色综合久久久久久久久| 欧美日韩一二三区| 日韩久久免费av| 中文字幕 久热精品 视频在线| 欧美激情在线一区二区| 亚洲色图欧洲色图| 日韩不卡在线观看日韩不卡视频| 亚洲电影一区二区三区| 精品一区二区成人精品| 91免费观看视频在线| 欧美不卡123| 亚洲一区欧美一区| 国产精品一线二线三线| 色婷婷久久99综合精品jk白丝| 91精品国产入口在线| 国产精品素人视频| 免费不卡在线观看| 欧洲精品在线观看| 欧美激情一区二区三区蜜桃视频| 一区二区三区资源| 成人免费视频视频在线观看免费| 91丨国产丨九色丨pron| 欧美日韩不卡视频| 亚洲视频在线一区观看| 国产一区二区三区黄视频| 91麻豆精品国产91久久久久久久久| 国产精品久久久久三级| 国产精品性做久久久久久| 国产成人精品www牛牛影视| 欧美精品vⅰdeose4hd| 亚洲人成在线播放网站岛国| 国产精品伊人色| 精品国产91久久久久久久妲己| 午夜av一区二区三区| 欧美顶级少妇做爰| 一二三区精品福利视频| 91欧美激情一区二区三区成人| 国产精品免费人成网站| 91在线看国产| 亚洲激情校园春色| 欧美在线一区二区| 亚洲国产视频在线| 精品久久久久久最新网址| 激情欧美日韩一区二区| 精品国产免费久久| av综合在线播放| 精品一区二区三区视频在线观看| 久久丝袜美腿综合| 欧美日韩高清在线播放| 国产乱子伦一区二区三区国色天香| 国产精品婷婷午夜在线观看| 在线免费观看视频一区| 精品一区二区在线观看| 成人免费小视频| 久久久九九九九| 在线观看精品一区| 国精品**一区二区三区在线蜜桃 | 激情综合五月天| 一区二区三区四区五区视频在线观看| 欧美人妇做爰xxxⅹ性高电影| 国产·精品毛片| 日本成人在线一区| 亚洲精品视频在线观看网站| 精品欧美黑人一区二区三区| 欧美日韩美女一区二区| 91啪亚洲精品| 91亚洲国产成人精品一区二三| 毛片av一区二区| 青青草精品视频| 免费高清在线视频一区·| 日韩电影网1区2区| 偷拍亚洲欧洲综合| 日韩福利视频网| 日本女优在线视频一区二区| 亚洲一线二线三线视频| 亚洲成人一区二区在线观看| 亚洲男人的天堂网| 亚洲va中文字幕| 激情偷乱视频一区二区三区| 国产一区二区不卡| 99re热视频精品| 欧美日韩一级片网站| 91精品国产综合久久久久久久久久 | 日日摸夜夜添夜夜添亚洲女人| 亚洲一区二区四区蜜桃| 毛片基地黄久久久久久天堂| 国产激情精品久久久第一区二区| 风间由美一区二区三区在线观看 | 国产精品18久久久久久久久 | 日韩高清一区二区| 色婷婷国产精品久久包臀| 欧美日韩黄视频| 精品少妇一区二区三区免费观看 | 亚洲国产精品久久不卡毛片| 精品在线你懂的| 欧美性生活一区| 国产日韩欧美亚洲| 蜜桃视频一区二区| 在线观看不卡一区| 国产精品激情偷乱一区二区∴| 日本美女一区二区| 在线播放国产精品二区一二区四区| 国产日韩欧美a| 国产一区二区三区最好精华液| 欧美中文字幕亚洲一区二区va在线| 久久久www成人免费毛片麻豆| 天天色天天爱天天射综合| 99re66热这里只有精品3直播| 国产亚洲欧美色| 成人av网站在线观看免费| 日本一区二区三区dvd视频在线| 亚洲国产欧美一区二区三区丁香婷| 91麻豆国产精品久久| 亚洲第一久久影院| 日韩精品影音先锋| 国产91在线观看丝袜| 亚洲狠狠丁香婷婷综合久久久| 欧美日本一区二区三区| 日韩精品电影在线观看| 国产午夜亚洲精品不卡| 欧美日韩黄色影视| 国产成人免费在线| 蜜桃视频一区二区三区| 亚洲男帅同性gay1069| 欧美精品一区二区三区在线| 色婷婷综合久久久中文字幕| 久久疯狂做爰流白浆xx| 亚洲女人的天堂| 久久精品亚洲精品国产欧美 |