};
struct obd_type {
- struct obd_ops *typ_dt_ops;
- struct md_ops *typ_md_ops;
+ const struct obd_ops *typ_dt_ops;
+ const struct md_ops *typ_md_ops;
struct proc_dir_entry *typ_procroot;
struct dentry *typ_debugfs_entry;
#ifdef HAVE_SERVER_SUPPORT
bool typ_sym_filter;
#endif
- int typ_refcnt;
+ atomic_t typ_refcnt;
struct lu_device_type *typ_lu;
- spinlock_t obd_type_lock;
struct kobject typ_kobj;
};
#define typ_name typ_kobj.name
#define OSC_MAX_DIRTY_MB_MAX 2048 /* arbitrary, but < MAX_LONG bytes */
#define OSC_DEFAULT_RESENDS 10
-/* possible values for fo_sync_lock_cancel */
-enum {
- NEVER_SYNC_ON_CANCEL = 0,
- BLOCKING_SYNC_ON_CANCEL = 1,
- ALWAYS_SYNC_ON_CANCEL = 2,
- NUM_SYNC_ON_CANCEL_STATES
+/* possible values for lut_sync_lock_cancel */
+enum tgt_sync_lock_cancel {
+ SYNC_LOCK_CANCEL_NEVER = 0,
+ SYNC_LOCK_CANCEL_BLOCKING = 1,
+ SYNC_LOCK_CANCEL_ALWAYS = 2,
};
/*
/* the grant values are protected by loi_list_lock below */
unsigned long cl_dirty_pages; /* all _dirty_ in pages */
unsigned long cl_dirty_max_pages; /* allowed w/o rpc */
- unsigned long cl_dirty_transit; /* dirty synchronous */
unsigned long cl_avail_grant; /* bytes of credit for ost */
unsigned long cl_lost_grant; /* lost credits (trunc) */
/* grant consumed for dirty pages */
struct lov_obd {
struct lov_desc desc;
struct lov_tgt_desc **lov_tgts; /* sparse array */
- struct ost_pool lov_packed; /* all OSTs in a packed
+ struct lu_tgt_pool lov_packed; /* all OSTs in a packed
array */
struct mutex lov_lock;
struct obd_connect_data lov_ocd;
__u32 lov_tgt_size; /* size of tgts array */
int lov_connects;
int lov_pool_count;
- struct cfs_hash *lov_pools_hash_body; /* used for key access */
+ struct rhashtable lov_pools_hash_body; /* used for key access */
struct list_head lov_pool_list; /* used for sequential access */
struct proc_dir_entry *lov_pool_proc_entry;
enum lustre_sec_part lov_sp_me;
struct lmv_obd {
struct lu_client_fld lmv_fld;
spinlock_t lmv_lock;
- struct lmv_desc desc;
int connected;
int max_easize;
struct kobject *lmv_tgts_kobj;
void *lmv_cache;
- struct lu_qos lmv_qos;
__u32 lmv_qos_rr_index;
};
+#define lmv_mdt_count lmv_mdt_descs.ltd_lmv_desc.ld_tgt_count
+#define lmv_qos lmv_mdt_descs.ltd_qos
+
/* Minimum sector size is 512 */
#define MAX_GUARD_NUMBER (PAGE_SIZE / 512)
* protection of other bits using _bh lock */
unsigned long obd_recovery_expired:1;
/* uuid-export hash body */
- struct cfs_hash *obd_uuid_hash;
+ struct rhashtable obd_uuid_hash;
/* nid-export hash body */
struct cfs_hash *obd_nid_hash;
/* nid stats body */
struct completion obd_kobj_unregister;
};
+int obd_uuid_add(struct obd_device *obd, struct obd_export *export);
+void obd_uuid_del(struct obd_device *obd, struct obd_export *export);
+#ifdef HAVE_SERVER_SUPPORT
+struct obd_export *obd_uuid_lookup(struct obd_device *obd,
+ struct obd_uuid *uuid);
+#endif
+
/* get/set_info keys */
#define KEY_ASYNC "async"
#define KEY_CHANGELOG_CLEAR "changelog_clear"
CLI_HASH64 = 1 << 2,
CLI_API32 = 1 << 3,
CLI_MIGRATE = 1 << 4,
+ CLI_DIRTY_DATA = 1 << 5,
};
enum md_op_code {