Commit aa075d31 authored by Oleg Drokin's avatar Oleg Drokin Committed by Greg Kroah-Hartman

staging/lustre: remove unused request policies.

Client policies do not make much sense to have in client-only code,
so remove all references to everything but fifo.
This also removes lustre/libcfs/heap.c and its header, since it was
only used by certain request policies (crr and orr).
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 986f7b96
...@@ -1182,276 +1182,6 @@ struct nrs_fifo_req { ...@@ -1182,276 +1182,6 @@ struct nrs_fifo_req {
/** @} fifo */ /** @} 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 * NRS request
* *
...@@ -1487,12 +1217,6 @@ struct ptlrpc_nrs_request { ...@@ -1487,12 +1217,6 @@ struct ptlrpc_nrs_request {
* Fields for the FIFO policy * Fields for the FIFO policy
*/ */
struct nrs_fifo_req fifo; 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; } nr_u;
/** /**
* Externally-registering policies may want to use this to allocate * Externally-registering policies may want to use this to allocate
......
This diff is collapsed.
/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 only,
* as published by the Free Software Foundation.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License version 2 for more details. A copy is
* included in the COPYING file that accompanied this code.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* GPL HEADER END
*/
/*
* Copyright (c) 2011 Intel Corporation
*
* Copyright 2012 Xyratex Technology Limited
*/
/*
* lustre/ptlrpc/nrs_crr.c
*
* Network Request Scheduler (NRS) CRR-N policy
*
* Request ordering in a batched Round-Robin manner over client NIDs
*
* Author: Liang Zhen <liang@whamcloud.com>
* Author: Nikitas Angelinas <nikitas_angelinas@xyratex.com>
*/
/**
* \addtogoup nrs
* @{
*/
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment