diff options
Diffstat (limited to 'drivers/staging/lustre/lustre/include/lustre_net.h')
-rw-r--r-- | drivers/staging/lustre/lustre/include/lustre_net.h | 289 |
1 files changed, 6 insertions, 283 deletions
diff --git a/drivers/staging/lustre/lustre/include/lustre_net.h b/drivers/staging/lustre/lustre/include/lustre_net.h index d6af2ca3acdb..0a024d3cfeb7 100644 --- a/drivers/staging/lustre/lustre/include/lustre_net.h +++ b/drivers/staging/lustre/lustre/include/lustre_net.h @@ -55,8 +55,6 @@ * @{ */ -#include "linux/lustre_net.h" - #include "../../include/linux/libcfs/libcfs.h" // #include <obd.h> #include "../../include/linux/lnet/lnet.h" @@ -1183,276 +1181,6 @@ struct nrs_fifo_req { /** @} fifo */ /** - * \name CRR-N - * - * CRR-N, Client Round Robin over NIDs - * @{ - */ - -/** - * private data structure for CRR-N NRS - */ -struct nrs_crrn_net { - struct ptlrpc_nrs_resource cn_res; - cfs_binheap_t *cn_binheap; - struct cfs_hash *cn_cli_hash; - /** - * Used when a new scheduling round commences, in order to synchronize - * all clients with the new round number. - */ - __u64 cn_round; - /** - * Determines the relevant ordering amongst request batches within a - * scheduling round. - */ - __u64 cn_sequence; - /** - * Round Robin quantum; the maximum number of RPCs that each request - * batch for each client can have in a scheduling round. - */ - __u16 cn_quantum; -}; - -/** - * Object representing a client in CRR-N, as identified by its NID - */ -struct nrs_crrn_client { - struct ptlrpc_nrs_resource cc_res; - struct hlist_node cc_hnode; - lnet_nid_t cc_nid; - /** - * The round number against which this client is currently scheduling - * requests. - */ - __u64 cc_round; - /** - * The sequence number used for requests scheduled by this client during - * the current round number. - */ - __u64 cc_sequence; - atomic_t cc_ref; - /** - * Round Robin quantum; the maximum number of RPCs the client is allowed - * to schedule in a single batch of each round. - */ - __u16 cc_quantum; - /** - * # of pending requests for this client, on all existing rounds - */ - __u16 cc_active; -}; - -/** - * CRR-N NRS request definition - */ -struct nrs_crrn_req { - /** - * Round number for this request; shared with all other requests in the - * same batch. - */ - __u64 cr_round; - /** - * Sequence number for this request; shared with all other requests in - * the same batch. - */ - __u64 cr_sequence; -}; - -/** - * CRR-N policy operations. - */ -enum nrs_ctl_crr { - /** - * Read the RR quantum size of a CRR-N policy. - */ - NRS_CTL_CRRN_RD_QUANTUM = PTLRPC_NRS_CTL_1ST_POL_SPEC, - /** - * Write the RR quantum size of a CRR-N policy. - */ - NRS_CTL_CRRN_WR_QUANTUM, -}; - -/** @} CRR-N */ - -/** - * \name ORR/TRR - * - * ORR/TRR (Object-based Round Robin/Target-based Round Robin) NRS policies - * @{ - */ - -/** - * Lower and upper byte offsets of a brw RPC - */ -struct nrs_orr_req_range { - __u64 or_start; - __u64 or_end; -}; - -/** - * RPC types supported by the ORR/TRR policies - */ -enum nrs_orr_supp { - NOS_OST_READ = (1 << 0), - NOS_OST_WRITE = (1 << 1), - NOS_OST_RW = (NOS_OST_READ | NOS_OST_WRITE), - /** - * Default value for policies. - */ - NOS_DFLT = NOS_OST_READ -}; - -/** - * As unique keys for grouping RPCs together, we use the object's OST FID for - * the ORR policy, and the OST index for the TRR policy. - * - * XXX: We waste some space for TRR policy instances by using a union, but it - * allows to consolidate some of the code between ORR and TRR, and these - * policies will probably eventually merge into one anyway. - */ -struct nrs_orr_key { - union { - /** object FID for ORR */ - struct lu_fid ok_fid; - /** OST index for TRR */ - __u32 ok_idx; - }; -}; - -/** - * The largest base string for unique hash/slab object names is - * "nrs_orr_reg_", so 13 characters. We add 3 to this to be used for the CPT - * id number, so this _should_ be more than enough for the maximum number of - * CPTs on any system. If it does happen that this statement is incorrect, - * nrs_orr_genobjname() will inevitably yield a non-unique name and cause - * kmem_cache_create() to complain (on Linux), so the erroneous situation - * will hopefully not go unnoticed. - */ -#define NRS_ORR_OBJ_NAME_MAX (sizeof("nrs_orr_reg_") + 3) - -/** - * private data structure for ORR and TRR NRS - */ -struct nrs_orr_data { - struct ptlrpc_nrs_resource od_res; - cfs_binheap_t *od_binheap; - struct cfs_hash *od_obj_hash; - struct kmem_cache *od_cache; - /** - * Used when a new scheduling round commences, in order to synchronize - * all object or OST batches with the new round number. - */ - __u64 od_round; - /** - * Determines the relevant ordering amongst request batches within a - * scheduling round. - */ - __u64 od_sequence; - /** - * RPC types that are currently supported. - */ - enum nrs_orr_supp od_supp; - /** - * Round Robin quantum; the maximum number of RPCs that each request - * batch for each object or OST can have in a scheduling round. - */ - __u16 od_quantum; - /** - * Whether to use physical disk offsets or logical file offsets. - */ - bool od_physical; - /** - * XXX: We need to provide a persistently allocated string to hold - * unique object names for this policy, since in currently supported - * versions of Linux by Lustre, kmem_cache_create() just sets a pointer - * to the name string provided. kstrdup() is used in the version of - * kmeme_cache_create() in current Linux mainline, so we may be able to - * remove this in the future. - */ - char od_objname[NRS_ORR_OBJ_NAME_MAX]; -}; - -/** - * Represents a backend-fs object or OST in the ORR and TRR policies - * respectively - */ -struct nrs_orr_object { - struct ptlrpc_nrs_resource oo_res; - struct hlist_node oo_hnode; - /** - * The round number against which requests are being scheduled for this - * object or OST - */ - __u64 oo_round; - /** - * The sequence number used for requests scheduled for this object or - * OST during the current round number. - */ - __u64 oo_sequence; - /** - * The key of the object or OST for which this structure instance is - * scheduling RPCs - */ - struct nrs_orr_key oo_key; - atomic_t oo_ref; - /** - * Round Robin quantum; the maximum number of RPCs that are allowed to - * be scheduled for the object or OST in a single batch of each round. - */ - __u16 oo_quantum; - /** - * # of pending requests for this object or OST, on all existing rounds - */ - __u16 oo_active; -}; - -/** - * ORR/TRR NRS request definition - */ -struct nrs_orr_req { - /** - * The offset range this request covers - */ - struct nrs_orr_req_range or_range; - /** - * Round number for this request; shared with all other requests in the - * same batch. - */ - __u64 or_round; - /** - * Sequence number for this request; shared with all other requests in - * the same batch. - */ - __u64 or_sequence; - /** - * For debugging purposes. - */ - struct nrs_orr_key or_key; - /** - * An ORR policy instance has filled in request information while - * enqueueing the request on the service partition's regular NRS head. - */ - unsigned int or_orr_set:1; - /** - * A TRR policy instance has filled in request information while - * enqueueing the request on the service partition's regular NRS head. - */ - unsigned int or_trr_set:1; - /** - * Request offset ranges have been filled in with logical offset - * values. - */ - unsigned int or_logical_set:1; - /** - * Request offset ranges have been filled in with physical offset - * values. - */ - unsigned int or_physical_set:1; -}; - -/** @} ORR/TRR */ - -/** * NRS request * * Instances of this object exist embedded within ptlrpc_request; the main @@ -1476,7 +1204,6 @@ struct ptlrpc_nrs_request { unsigned nr_enqueued:1; unsigned nr_started:1; unsigned nr_finalized:1; - cfs_binheap_node_t nr_node; /** * Policy-specific fields, used for determining a request's scheduling @@ -1487,12 +1214,6 @@ struct ptlrpc_nrs_request { * Fields for the FIFO policy */ struct nrs_fifo_req fifo; - /** - * CRR-N request definition - */ - struct nrs_crrn_req crr; - /** ORR and TRR share the same request definition */ - struct nrs_orr_req orr; } nr_u; /** * Externally-registering policies may want to use this to allocate @@ -1966,7 +1687,7 @@ do { \ ((libcfs_debug & (mask)) != 0 && \ (libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \ _debug_req((req), msgdata, fmt, ##a); \ -} while(0) +} while (0) /** * This is the debug print function you need to use to print request structure @@ -2912,11 +2633,13 @@ __u32 lustre_msg_calc_cksum(struct lustre_msg *msg, int compat18); # warning "remove checksum compatibility support for b1_8" __u32 lustre_msg_calc_cksum(struct lustre_msg *msg); #endif -void lustre_msg_set_handle(struct lustre_msg *msg,struct lustre_handle *handle); +void lustre_msg_set_handle(struct lustre_msg *msg, + struct lustre_handle *handle); void lustre_msg_set_type(struct lustre_msg *msg, __u32 type); void lustre_msg_set_opc(struct lustre_msg *msg, __u32 opc); void lustre_msg_set_last_xid(struct lustre_msg *msg, __u64 last_xid); -void lustre_msg_set_last_committed(struct lustre_msg *msg,__u64 last_committed); +void lustre_msg_set_last_committed(struct lustre_msg *msg, + __u64 last_committed); void lustre_msg_set_versions(struct lustre_msg *msg, __u64 *versions); void lustre_msg_set_transno(struct lustre_msg *msg, __u64 transno); void lustre_msg_set_status(struct lustre_msg *msg, __u32 status); @@ -3173,7 +2896,7 @@ int ptlrpc_add_timeout_client(int time, enum timeout_event event, struct list_head *obd_list); int ptlrpc_del_timeout_client(struct list_head *obd_list, enum timeout_event event); -struct ptlrpc_request * ptlrpc_prep_ping(struct obd_import *imp); +struct ptlrpc_request *ptlrpc_prep_ping(struct obd_import *imp); int ptlrpc_obd_ping(struct obd_device *obd); void ping_evictor_start(void); void ping_evictor_stop(void); |