struct list_head loi_write_item;
struct list_head loi_read_item;
- unsigned loi_kms_valid:1;
+ unsigned long loi_kms_valid:1;
__u64 loi_kms; /* known minimum size */
struct ost_lvb loi_lvb;
struct osc_async_rc loi_ar;
* 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 int interrupted:1;
+ unsigned long interrupted:1;
};
/* Individual type definitions */
/* llog contexts */
enum llog_ctxt_id {
LLOG_CONFIG_ORIG_CTXT = 0,
- LLOG_CONFIG_REPL_CTXT = 1,
- LLOG_MDS_OST_ORIG_CTXT = 2,
- LLOG_MDS_OST_REPL_CTXT = 3,
- LLOG_SIZE_ORIG_CTXT = 4,
- LLOG_SIZE_REPL_CTXT = 5,
- LLOG_MD_ORIG_CTXT = 6,
- LLOG_MD_REPL_CTXT = 7,
- LLOG_RD1_ORIG_CTXT = 8,
- LLOG_RD1_REPL_CTXT = 9,
- LLOG_TEST_ORIG_CTXT = 10,
- LLOG_TEST_REPL_CTXT = 11,
- LLOG_LOVEA_ORIG_CTXT = 12,
- LLOG_LOVEA_REPL_CTXT = 13,
+ LLOG_CONFIG_REPL_CTXT,
+ LLOG_MDS_OST_ORIG_CTXT,
+ LLOG_MDS_OST_REPL_CTXT,
+ LLOG_SIZE_ORIG_CTXT,
+ LLOG_SIZE_REPL_CTXT,
+ LLOG_RD1_ORIG_CTXT,
+ LLOG_RD1_REPL_CTXT,
+ LLOG_TEST_ORIG_CTXT,
+ LLOG_TEST_REPL_CTXT,
+ LLOG_LOVEA_ORIG_CTXT,
+ LLOG_LOVEA_REPL_CTXT,
LLOG_MAX_CTXTS
};
#define FILTER_SUBDIR_COUNT 32 /* set to zero for no subdirs */
-#define FILTER_GROUP_LLOG 1
-#define FILTER_GROUP_ECHO 2
-#define FILTER_GROUP_MDS0 3
-
struct filter_subdirs {
cfs_dentry_t *dentry[FILTER_SUBDIR_COUNT];
};
__u64 fe_end;
};
-struct obd_llogs {
- struct llog_ctxt *llog_ctxt[LLOG_MAX_CTXTS];
-};
-
-struct filter_group_llog {
- struct list_head list;
- int group;
- struct obd_llogs *llogs;
- struct obd_export *exp;
-};
-
struct filter_obd {
/* NB this field MUST be first */
struct obd_device_target fo_obt;
int fo_fmd_max_num; /* per exp filter_mod_data */
int fo_fmd_max_age; /* jiffies to fmd expiry */
+ /* sptlrpc stuff */
+ rwlock_t fo_sptlrpc_lock;
+ struct sptlrpc_rule_set fo_sptlrpc_rset;
+
/* capability related */
unsigned int fo_fl_oss_capa;
struct list_head fo_capa_keys;
struct hlist_head *fo_capa_hash;
+
+ void *fo_lcm;
};
#define OSC_MAX_RIF_DEFAULT 8
int cl_max_mds_cookiesize;
/* security configuration */
- struct sec_flavor_config cl_sec_conf;
+ struct sptlrpc_rule_set cl_sptlrpc_rset;
+ enum lustre_sec_part cl_sec_part;
//struct llog_canceld_ctxt *cl_llcd; /* it's included by obd_llog_ctxt */
void *cl_llcd_offset;
struct obd_histogram cl_read_offset_hist;
struct obd_histogram cl_write_offset_hist;
+ /* number of in flight destroy rpcs is limited to max_rpcs_in_flight */
+ atomic_t cl_destroy_in_flight;
+ cfs_waitq_t cl_destroy_waitq;
+
struct mdc_rpc_lock *cl_rpc_lock;
struct mdc_rpc_lock *cl_setattr_lock;
struct mdc_rpc_lock *cl_close_lock;
struct obd_export *cl_mgc_mgsexp;
/* Flags section */
- unsigned int cl_checksum:1; /* debug checksums */
+ unsigned long cl_checksum:1; /* debug checksums */
/* also protected by the poorly named _loi_list_lock lock above */
struct osc_async_rc cl_ar;
cfs_proc_dir_entry_t *mgs_proc_live;
};
-/* hah, upper limit 64 should be enough */
-#define N_NOSQUASH_NIDS 64
-struct rootsquash_info {
- uid_t rsi_uid;
- gid_t rsi_gid;
- int rsi_n_nosquash_nids;
- lnet_nid_t rsi_nosquash_nids[N_NOSQUASH_NIDS];
-};
-
struct mds_obd {
/* NB this field MUST be first */
struct obd_device_target mds_obt;
cfs_dentry_t *mds_logs_dir;
cfs_dentry_t *mds_objects_dir;
struct llog_handle *mds_cfg_llh;
-// struct llog_handle *mds_catalog;
struct obd_device *mds_osc_obd; /* XXX lov_obd */
struct obd_uuid mds_lov_uuid;
char *mds_profile;
mds_fl_synced:1;
struct upcall_cache *mds_identity_cache;
- struct upcall_cache *mds_rmtacl_cache;
-
- /* root squash */
- struct rootsquash_info *mds_rootsquash_info;
/* for capability keys update */
struct lustre_capa_key *mds_capa_keys;
__u32 *lq_rr_array; /* round-robin optimized list */
unsigned int lq_rr_size; /* rr array size */
unsigned int lq_prio_free; /* priority for free space */
- unsigned int lq_dirty:1, /* recalc qos data */
+ unsigned long lq_dirty:1, /* recalc qos data */
lq_dirty_rr:1, /* recalc round-robin list */
lq_same_space:1,/* the ost's all have approx.
the same space avail */
struct ltd_qos ltd_qos; /* qos info per target */
__u32 ltd_gen;
__u32 ltd_index; /* index in lov_obd->tgts */
- unsigned int ltd_active:1,/* is this target up for requests */
+ unsigned long ltd_active:1,/* is this target up for requests */
ltd_activate:1,/* should this target be activated */
ltd_reap:1; /* should this target be deleted */
};
struct completion trd_finishing;
};
+#define OBD_LLOG_GROUP 0
+
+enum filter_groups {
+ FILTER_GROUP_LLOG = 1,
+ FILTER_GROUP_ECHO,
+ FILTER_GROUP_MDS0
+};
+
+struct obd_llog_group {
+ struct list_head olg_list;
+ int olg_group;
+ struct llog_ctxt *olg_ctxts[LLOG_MAX_CTXTS];
+ cfs_waitq_t olg_waitq;
+ spinlock_t olg_lock;
+ struct obd_export *olg_exp;
+};
+
/* corresponds to one of the obd's */
#define MAX_OBD_NAME 128
#define OBD_DEVICE_MAGIC 0XAB5CD6EF
struct lu_device *obd_lu_dev;
int obd_minor;
- unsigned int obd_attached:1, /* finished attach */
- obd_set_up:1, /* finished setup */
- obd_recovering:1, /* there are recoverable clients */
- obd_abort_recovery:1,/* somebody ioctl'ed us to abort */
- obd_replayable:1, /* recovery is enabled; inform clients */
- obd_no_transno:1, /* no committed-transno notification */
- obd_no_recov:1, /* fail instead of retry messages */
- obd_req_replaying:1, /* replaying requests */
- obd_stopping:1, /* started cleanup */
- obd_starting:1, /* started setup */
- obd_force:1, /* cleanup with > 0 obd refcount */
- obd_fail:1, /* cleanup with failover */
- obd_async_recov:1, /* allow asyncronous orphan cleanup */
- obd_no_conn:1, /* deny new connections */
- obd_inactive:1; /* device active/inactive
+ unsigned long obd_attached:1, /* finished attach */
+ obd_set_up:1, /* finished setup */
+ obd_recovering:1, /* there are recoverable clients */
+ obd_abort_recovery:1,/* somebody ioctl'ed us to abort */
+ obd_replayable:1, /* recovery is enabled; inform clients */
+ obd_no_transno:1, /* no committed-transno notification */
+ obd_no_recov:1, /* fail instead of retry messages */
+ obd_req_replaying:1, /* replaying requests */
+ obd_stopping:1, /* started cleanup */
+ obd_starting:1, /* started setup */
+ obd_force:1, /* cleanup with > 0 obd refcount */
+ obd_fail:1, /* cleanup with failover */
+ obd_async_recov:1, /* allow asyncronous orphan cleanup */
+ obd_no_conn:1, /* deny new connections */
+ obd_inactive:1; /* device active/inactive
* (for /proc/status only!!) */
/* uuid-export hash body */
struct lustre_class_hash_body *obd_uuid_hash_body;
struct obd_statfs obd_osfs; /* locked by obd_osfs_lock */
__u64 obd_osfs_age;
struct lvfs_run_ctxt obd_lvfs_ctxt;
- struct llog_ctxt *obd_llog_ctxt[LLOG_MAX_CTXTS];
+ struct obd_llog_group obd_olg; /* default llog group */
struct obd_device *obd_observer;
struct obd_notify_upcall obd_upcall;
struct obd_export *obd_self_export;
struct list_head obd_uncommitted_replies;
spinlock_t obd_uncommitted_replies_lock;
cfs_timer_t obd_recovery_timer;
- time_t obd_recovery_start;
- time_t obd_recovery_end;
+ time_t obd_recovery_start; /* seconds */
+ time_t obd_recovery_end; /* seconds */
+ time_t obd_recovery_max_time; /* seconds, bz13079 */
/* new recovery stuff from CMD2 */
struct target_recovery_data obd_recovery_data;
#define KEY_CONN_DATA "conn_data"
#define KEY_MAX_EASIZE "max_easize"
#define KEY_REVIMP_UPD "revimp_update"
+#define KEY_LOV_IDX "lov_idx"
+#define KEY_LAST_ID "last_id"
+#define KEY_LOCK_TO_STRIPE "lock_to_stripe"
+#define KEY_BLOCKSIZE "blocksize"
+#define KEY_BLOCKSIZE_BITS "blocksize_bits"
struct lu_context;
int (*o_connect)(const struct lu_env *env,
struct lustre_handle *conn, struct obd_device *src,
struct obd_uuid *cluuid, struct obd_connect_data *ocd);
- int (*o_reconnect)(struct obd_export *exp, struct obd_device *src,
+ int (*o_reconnect)(const struct lu_env *env,
+ struct obd_export *exp, struct obd_device *src,
struct obd_uuid *cluuid,
struct obd_connect_data *ocd);
int (*o_disconnect)(struct obd_export *exp);
int (*o_preallocate)(struct lustre_handle *, obd_count *req,
obd_id *ids);
/* FIXME: add fid capability support for create & destroy! */
- int (*o_precreate)(struct obd_export *exp, int need_create);
+ int (*o_precreate)(struct obd_export *exp);
int (*o_create)(struct obd_export *exp, struct obdo *oa,
struct lov_stripe_md **ea, struct obd_trans_info *oti);
int (*o_destroy)(struct obd_export *exp, struct obdo *oa,
int cmd, obd_off *);
/* llog related obd_methods */
- int (*o_llog_init)(struct obd_device *obd, struct obd_llogs *llog,
+ int (*o_llog_init)(struct obd_device *obd, int group,
struct obd_device *disk_obd, int count,
struct llog_catid *logid, struct obd_uuid *uuid);
int (*o_llog_finish)(struct obd_device *obd, int count);
struct list_head mod_replay_list;
};
+struct lookup_intent;
+
struct md_ops {
int (*m_getstatus)(struct obd_export *, struct lu_fid *,
struct obd_capa **);
struct ptlrpc_request **);
int (*m_getattr_name)(struct obd_export *, const struct lu_fid *,
struct obd_capa *, const char *, int, obd_valid,
- int, struct ptlrpc_request **);
+ int, __u32, struct ptlrpc_request **);
int (*m_intent_lock)(struct obd_export *, struct md_op_data *,
void *, int, struct lookup_intent *, int,
struct ptlrpc_request **,
int (*m_setxattr)(struct obd_export *, const struct lu_fid *,
struct obd_capa *, obd_valid, const char *,
- const char *, int, int, int,
+ const char *, int, int, int, __u32,
struct ptlrpc_request **);
int (*m_getxattr)(struct obd_export *, const struct lu_fid *,
int (*m_init_ea_size)(struct obd_export *, int, int, int);
int (*m_get_lustre_md)(struct obd_export *, struct ptlrpc_request *,
- int, struct obd_export *, struct obd_export *,
+ struct obd_export *, struct obd_export *,
struct lustre_md *);
int (*m_free_lustre_md)(struct obd_export *, struct lustre_md *);
renew_capa_cb_t cb);
int (*m_get_remote_perm)(struct obd_export *, const struct lu_fid *,
- struct obd_capa *, struct ptlrpc_request **);
+ struct obd_capa *, __u32,
+ struct ptlrpc_request **);
/*
* NOTE: If adding ops, add another LPROCFS_MD_OP_INIT() line to