* 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.
-
+ * GNU General Public License version 2 for more details.
+ *
* 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
+ * along with this program; If not, see
+ * http://www.gnu.org/licenses/gpl-2.0.html
*
* GPL HEADER END
*/
/*
* Copyright (C) 2013 DataDirect Networks, Inc.
*
+ * Copyright (c) 2014, Intel Corporation.
*/
/*
*
#ifndef _LUSTRE_NRS_TBF_H
#define _LUSTRE_NRS_TBF_H
-#include <lustre_net.h>
/* \name tbf
*
struct nrs_tbf_jobid {
char *tj_id;
- cfs_list_t tj_linkage;
+ struct list_head tj_linkage;
};
struct nrs_tbf_client {
/** Resource object for policy instance. */
struct ptlrpc_nrs_resource tc_res;
/** Node in the hash table. */
- cfs_hlist_node_t tc_hnode;
+ struct hlist_node tc_hnode;
/** NID of the client. */
lnet_nid_t tc_nid;
/** Jobid of the client. */
- char tc_jobid[JOBSTATS_JOBID_SIZE];
+ char tc_jobid[LUSTRE_JOBID_SIZE];
/** Reference number of the client. */
- cfs_atomic_t tc_ref;
+ atomic_t tc_ref;
/** Likage to rule. */
- cfs_list_t tc_linkage;
+ struct list_head tc_linkage;
/** Pointer to rule. */
struct nrs_tbf_rule *tc_rule;
/** Generation of the rule matched. */
/** Time check-point. */
__u64 tc_check_time;
/** List of queued requests. */
- cfs_list_t tc_list;
+ struct list_head tc_list;
/** Node in binary heap. */
cfs_binheap_node_t tc_node;
/** Whether the client is in heap. */
* Linkage into LRU list. Protected bucket lock of
* nrs_tbf_head::th_cli_hash.
*/
- cfs_list_t tc_lru;
+ struct list_head tc_lru;
};
#define MAX_TBF_NAME (16)
/** Head belongs to. */
struct nrs_tbf_head *tr_head;
/** Likage to head. */
- cfs_list_t tr_linkage;
+ struct list_head tr_linkage;
/** Nid list of the rule. */
- cfs_list_t tr_nids;
+ struct list_head tr_nids;
/** Nid list string of the rule.*/
char *tr_nids_str;
/** Jobid list of the rule. */
- cfs_list_t tr_jobids;
+ struct list_head tr_jobids;
/** Jobid list string of the rule.*/
char *tr_jobids_str;
/** RPC/s limit. */
/** Token bucket depth. */
__u64 tr_depth;
/** List of client. */
- cfs_list_t tr_cli_list;
+ struct list_head tr_cli_list;
/** Flags of the rule. */
__u32 tr_flags;
/** Usage Reference count taken on the rule. */
- cfs_atomic_t tr_ref;
+ atomic_t tr_ref;
/** Generation of the rule. */
__u64 tr_generation;
};
int (*o_rule_init)(struct ptlrpc_nrs_policy *,
struct nrs_tbf_rule *,
struct nrs_tbf_cmd *);
- int (*o_rule_dump)(struct nrs_tbf_rule *,
- char *,
- int);
+ int (*o_rule_dump)(struct nrs_tbf_rule *, struct seq_file *);
int (*o_rule_match)(struct nrs_tbf_rule *,
struct nrs_tbf_client *);
void (*o_rule_fini)(struct nrs_tbf_rule *);
};
-struct nrs_tbf_dump {
- char *td_buff;
- int td_size;
- int td_length;
-};
-
#define NRS_TBF_TYPE_JOBID "jobid"
#define NRS_TBF_TYPE_NID "nid"
#define NRS_TBF_TYPE_MAX_LEN 20
* LRU list, updated on each access to client. Protected by
* bucket lock of nrs_tbf_head::th_cli_hash.
*/
- cfs_list_t ntb_lru;
+ struct list_head ntb_lru;
};
/**
/**
* List of rules.
*/
- cfs_list_t th_list;
+ struct list_head th_list;
/**
* Lock to protect the list of rules.
*/
/**
* Generation of rules.
*/
- cfs_atomic_t th_rule_sequence;
+ atomic_t th_rule_sequence;
/**
* Default rule.
*/
/**
* Timer for next token.
*/
-#if defined(__KERNEL__) && defined(__linux__)
struct hrtimer th_timer;
-#endif
/**
* Deadline of the timer.
*/
/**
* Hash of clients.
*/
- cfs_hash_t *th_cli_hash;
+ struct cfs_hash *th_cli_hash;
/**
* Type of TBF policy.
*/
enum nrs_tbf_cmd_type tc_cmd;
char *tc_name;
__u64 tc_rpc_rate;
- cfs_list_t tc_nids;
+ struct list_head tc_nids;
char *tc_nids_str;
- cfs_list_t tc_jobids;
+ struct list_head tc_jobids;
char *tc_jobids_str;
__u32 tc_valid_types;
__u32 tc_rule_flags;
/**
* Linkage to queue.
*/
- cfs_list_t tr_list;
+ struct list_head tr_list;
/**
* Sequence of the request.
*/