X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Fobd.h;h=c9041eeabd1a151db37abfbf46bda1143e88f0a5;hp=ef4c7ffd8fd1b2dc1b7bbe0c16421828942c9cea;hb=c9842fdc5244e38593f0b12468e87f23853dba9f;hpb=5b26bbe0f452713ddd54c75781153adc54a4dafb diff --git a/lustre/include/obd.h b/lustre/include/obd.h index ef4c7ff..c9041ee 100644 --- a/lustre/include/obd.h +++ b/lustre/include/obd.h @@ -69,7 +69,7 @@ struct lov_oinfo { /* per-stripe data structure */ 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; @@ -238,7 +238,7 @@ struct oig_callback_context { * 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 */ @@ -255,28 +255,22 @@ struct obd_device_target { /* 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]; }; @@ -287,17 +281,6 @@ struct filter_ext { __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; @@ -370,10 +353,16 @@ struct filter_obd { 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 @@ -399,7 +388,8 @@ struct client_obd { 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; @@ -447,6 +437,10 @@ struct client_obd { 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; @@ -460,7 +454,7 @@ struct client_obd { 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; @@ -488,15 +482,6 @@ struct mgs_obd { 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; @@ -520,7 +505,6 @@ struct mds_obd { 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; @@ -552,10 +536,6 @@ struct mds_obd { 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; @@ -627,7 +607,7 @@ struct lov_qos { __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 */ @@ -640,7 +620,7 @@ struct lov_tgt_desc { 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 */ }; @@ -845,6 +825,23 @@ struct target_recovery_data { 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 @@ -859,21 +856,21 @@ struct obd_device { 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; @@ -894,7 +891,7 @@ struct obd_device { 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; @@ -917,8 +914,9 @@ struct obd_device { 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; @@ -989,6 +987,11 @@ enum obd_cleanup_stage { #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; @@ -1063,7 +1066,8 @@ struct obd_ops { 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); @@ -1095,7 +1099,7 @@ struct obd_ops { 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, @@ -1192,7 +1196,7 @@ struct obd_ops { 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); @@ -1264,6 +1268,8 @@ struct md_open_data { struct list_head mod_replay_list; }; +struct lookup_intent; + struct md_ops { int (*m_getstatus)(struct obd_export *, struct lu_fid *, struct obd_capa **); @@ -1284,7 +1290,7 @@ struct md_ops { 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 **, @@ -1311,7 +1317,7 @@ struct md_ops { 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 *, @@ -1322,7 +1328,7 @@ struct md_ops { 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 *); @@ -1346,7 +1352,8 @@ struct md_ops { 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