staging/lustre: remove lots of dead code
This is a large patch to remove all dead code from obdclass and ptlrpc, purely removing functions and declarations now, so despite the size should be easy enough to verify. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Oleg Drokin <green@linuxhacker.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2e57708b20
commit
db2162d175
|
@ -2587,8 +2587,6 @@ struct lmv_desc {
|
|||
struct obd_uuid ld_uuid;
|
||||
};
|
||||
|
||||
void lustre_swab_lmv_desc(struct lmv_desc *ld);
|
||||
|
||||
/* TODO: lmv_stripe_md should contain mds capabilities for all slave fids */
|
||||
struct lmv_stripe_md {
|
||||
__u32 mea_magic;
|
||||
|
@ -2599,8 +2597,6 @@ struct lmv_stripe_md {
|
|||
struct lu_fid mea_ids[0];
|
||||
};
|
||||
|
||||
void lustre_swab_lmv_stripe_md(struct lmv_stripe_md *mea);
|
||||
|
||||
/* lmv structures */
|
||||
#define MEA_MAGIC_LAST_CHAR 0xb2221ca1
|
||||
#define MEA_MAGIC_ALL_CHARS 0xb222a11c
|
||||
|
@ -3442,8 +3438,6 @@ struct lu_idxpage {
|
|||
char lip_entries[0];
|
||||
};
|
||||
|
||||
void lustre_swab_lip_header(struct lu_idxpage *lip);
|
||||
|
||||
#define LIP_HDR_SIZE (offsetof(struct lu_idxpage, lip_entries))
|
||||
|
||||
/* Gather all possible type associated with a 4KB container */
|
||||
|
@ -3517,8 +3511,6 @@ struct lustre_capa_key {
|
|||
__u8 lk_key[CAPA_HMAC_KEY_MAX_LEN]; /**< key */
|
||||
} __attribute__((packed));
|
||||
|
||||
void lustre_swab_lustre_capa_key(struct lustre_capa_key *k);
|
||||
|
||||
/** The link ea holds 1 \a link_ea_entry for each hardlink */
|
||||
#define LINK_EA_MAGIC 0x11EAF1DFUL
|
||||
struct link_ea_header {
|
||||
|
|
|
@ -406,8 +406,6 @@ static inline int lmv_user_md_size(int stripes, int lmm_magic)
|
|||
stripes * sizeof(struct lmv_user_mds_data);
|
||||
}
|
||||
|
||||
void lustre_swab_lmv_user_md(struct lmv_user_md *lum);
|
||||
|
||||
struct ll_recreate_obj {
|
||||
__u64 lrc_id;
|
||||
__u32 lrc_ost_idx;
|
||||
|
|
|
@ -46,7 +46,6 @@
|
|||
#include "obd.h"
|
||||
|
||||
/* lib/debug.c */
|
||||
void dump_lniobuf(struct niobuf_local *lnb);
|
||||
int dump_req(struct ptlrpc_request *req);
|
||||
int block_debug_setup(void *addr, int len, __u64 off, __u64 id);
|
||||
int block_debug_check(char *who, void *addr, int len, __u64 off, __u64 id);
|
||||
|
|
|
@ -353,7 +353,6 @@ static inline bool imp_connect_disp_stripe(struct obd_import *imp)
|
|||
}
|
||||
|
||||
struct obd_export *class_conn2export(struct lustre_handle *conn);
|
||||
struct obd_device *class_conn2obd(struct lustre_handle *conn);
|
||||
|
||||
/** @} export */
|
||||
|
||||
|
|
|
@ -642,7 +642,6 @@ struct ptlrpc_nrs_pol_ops {
|
|||
*
|
||||
* \see ptlrpc_nrs_req_initialize()
|
||||
* \see ptlrpc_nrs_hpreq_add_nolock()
|
||||
* \see ptlrpc_nrs_req_hp_move()
|
||||
*/
|
||||
int (*op_res_get) (struct ptlrpc_nrs_policy *policy,
|
||||
struct ptlrpc_nrs_request *nrq,
|
||||
|
@ -658,7 +657,6 @@ struct ptlrpc_nrs_pol_ops {
|
|||
*
|
||||
* \see ptlrpc_nrs_req_finalize()
|
||||
* \see ptlrpc_nrs_hpreq_add_nolock()
|
||||
* \see ptlrpc_nrs_req_hp_move()
|
||||
*/
|
||||
void (*op_res_put) (struct ptlrpc_nrs_policy *policy,
|
||||
const struct ptlrpc_nrs_resource *res);
|
||||
|
@ -703,8 +701,6 @@ struct ptlrpc_nrs_pol_ops {
|
|||
*
|
||||
* \param[in,out] policy The policy the request \a nrq belongs to
|
||||
* \param[in,out] nrq The request to dequeue
|
||||
*
|
||||
* \see ptlrpc_nrs_req_del_nolock()
|
||||
*/
|
||||
void (*op_req_dequeue) (struct ptlrpc_nrs_policy *policy,
|
||||
struct ptlrpc_nrs_request *nrq);
|
||||
|
@ -1536,10 +1532,6 @@ static inline int ptlrpc_req_interpret(const struct lu_env *env,
|
|||
* @{
|
||||
*/
|
||||
int ptlrpc_nrs_policy_register(struct ptlrpc_nrs_pol_conf *conf);
|
||||
int ptlrpc_nrs_policy_unregister(struct ptlrpc_nrs_pol_conf *conf);
|
||||
void ptlrpc_nrs_req_hp_move(struct ptlrpc_request *req);
|
||||
void nrs_policy_get_info_locked(struct ptlrpc_nrs_policy *policy,
|
||||
struct ptlrpc_nrs_pol_info *info);
|
||||
|
||||
/*
|
||||
* Can the request be moved from the regular NRS head to the high-priority NRS
|
||||
|
@ -2522,7 +2514,6 @@ void ptlrpc_stop_all_threads(struct ptlrpc_service *svc);
|
|||
int ptlrpc_start_threads(struct ptlrpc_service *svc);
|
||||
int ptlrpc_unregister_service(struct ptlrpc_service *service);
|
||||
int liblustre_check_services(void *arg);
|
||||
void ptlrpc_daemonize(char *name);
|
||||
void ptlrpc_server_drop_request(struct ptlrpc_request *req);
|
||||
|
||||
int ptlrpc_hr_init(void);
|
||||
|
@ -2558,7 +2549,6 @@ void ptlrpc_buf_set_swabbed(struct ptlrpc_request *req, const int inout,
|
|||
int ptlrpc_unpack_rep_msg(struct ptlrpc_request *req, int len);
|
||||
int ptlrpc_unpack_req_msg(struct ptlrpc_request *req, int len);
|
||||
|
||||
int lustre_msg_check_version(struct lustre_msg *msg, __u32 version);
|
||||
void lustre_init_msg_v2(struct lustre_msg_v2 *msg, int count, __u32 *lens,
|
||||
char **bufs);
|
||||
int lustre_pack_request(struct ptlrpc_request *, __u32 magic, int count,
|
||||
|
@ -2582,7 +2572,6 @@ int lustre_msg_early_size(void);
|
|||
void *lustre_msg_buf_v2(struct lustre_msg_v2 *m, int n, int min_size);
|
||||
void *lustre_msg_buf(struct lustre_msg *m, int n, int minlen);
|
||||
int lustre_msg_buflen(struct lustre_msg *m, int n);
|
||||
void lustre_msg_set_buflen(struct lustre_msg *m, int n, int len);
|
||||
int lustre_msg_bufcount(struct lustre_msg *m);
|
||||
char *lustre_msg_string(struct lustre_msg *m, int n, int max_len);
|
||||
__u32 lustre_msghdr_get_flags(struct lustre_msg *msg);
|
||||
|
@ -2595,10 +2584,8 @@ __u32 lustre_msg_get_op_flags(struct lustre_msg *msg);
|
|||
void lustre_msg_add_op_flags(struct lustre_msg *msg, int flags);
|
||||
struct lustre_handle *lustre_msg_get_handle(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_get_type(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_get_version(struct lustre_msg *msg);
|
||||
void lustre_msg_add_version(struct lustre_msg *msg, int version);
|
||||
__u32 lustre_msg_get_opc(struct lustre_msg *msg);
|
||||
__u64 lustre_msg_get_last_xid(struct lustre_msg *msg);
|
||||
__u64 lustre_msg_get_last_committed(struct lustre_msg *msg);
|
||||
__u64 *lustre_msg_get_versions(struct lustre_msg *msg);
|
||||
__u64 lustre_msg_get_transno(struct lustre_msg *msg);
|
||||
|
@ -2611,21 +2598,16 @@ __u32 lustre_msg_get_conn_cnt(struct lustre_msg *msg);
|
|||
__u32 lustre_msg_get_magic(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_get_timeout(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_get_service_time(struct lustre_msg *msg);
|
||||
char *lustre_msg_get_jobid(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_get_cksum(struct lustre_msg *msg);
|
||||
__u32 lustre_msg_calc_cksum(struct lustre_msg *msg);
|
||||
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_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);
|
||||
void lustre_msg_set_conn_cnt(struct lustre_msg *msg, __u32 conn_cnt);
|
||||
void ptlrpc_req_set_repsize(struct ptlrpc_request *req, int count, __u32 *sizes);
|
||||
void ptlrpc_request_set_replen(struct ptlrpc_request *req);
|
||||
void lustre_msg_set_timeout(struct lustre_msg *msg, __u32 timeout);
|
||||
void lustre_msg_set_service_time(struct lustre_msg *msg, __u32 service_time);
|
||||
|
|
|
@ -56,15 +56,9 @@ struct cfg_interop_param {
|
|||
|
||||
/* obd_config.c */
|
||||
int class_find_param(char *buf, char *key, char **valp);
|
||||
struct cfg_interop_param *class_find_old_param(const char *param,
|
||||
struct cfg_interop_param *ptr);
|
||||
int class_get_next_param(char **params, char *copy);
|
||||
int class_match_param(char *buf, char *key, char **valp);
|
||||
int class_parse_nid(char *buf, lnet_nid_t *nid, char **endh);
|
||||
int class_parse_nid_quiet(char *buf, lnet_nid_t *nid, char **endh);
|
||||
int class_parse_net(char *buf, __u32 *net, char **endh);
|
||||
int class_match_nid(char *buf, char *key, lnet_nid_t nid);
|
||||
int class_match_net(char *buf, char *key, __u32 net);
|
||||
/* obd_mount.c */
|
||||
int do_lcfg(char *cfgname, lnet_nid_t nid, int cmd,
|
||||
char *s1, char *s2, char *s3, char *s4);
|
||||
|
|
|
@ -80,8 +80,6 @@ void req_capsule_init(struct req_capsule *pill, struct ptlrpc_request *req,
|
|||
void req_capsule_fini(struct req_capsule *pill);
|
||||
|
||||
void req_capsule_set(struct req_capsule *pill, const struct req_format *fmt);
|
||||
void req_capsule_client_dump(struct req_capsule *pill);
|
||||
void req_capsule_server_dump(struct req_capsule *pill);
|
||||
void req_capsule_init_area(struct req_capsule *pill);
|
||||
int req_capsule_filled_sizes(struct req_capsule *pill, enum req_location loc);
|
||||
int req_capsule_server_pack(struct req_capsule *pill);
|
||||
|
@ -105,8 +103,6 @@ void *req_capsule_server_swab_get(struct req_capsule *pill,
|
|||
void *req_capsule_server_sized_swab_get(struct req_capsule *pill,
|
||||
const struct req_msg_field *field,
|
||||
int len, void *swabber);
|
||||
const void *req_capsule_other_get(struct req_capsule *pill,
|
||||
const struct req_msg_field *field);
|
||||
|
||||
void req_capsule_set_size(struct req_capsule *pill,
|
||||
const struct req_msg_field *field,
|
||||
|
|
|
@ -106,8 +106,6 @@ struct llog_rec_hdr;
|
|||
typedef int (*llog_cb_t)(const struct lu_env *, struct llog_handle *,
|
||||
struct llog_rec_hdr *, void *);
|
||||
/* obd_config.c */
|
||||
struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg,
|
||||
const char *new_name);
|
||||
int class_process_config(struct lustre_cfg *lcfg);
|
||||
int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars,
|
||||
struct lustre_cfg *lcfg, void *data);
|
||||
|
@ -147,9 +145,6 @@ struct config_llog_instance {
|
|||
};
|
||||
int class_config_parse_llog(const struct lu_env *env, struct llog_ctxt *ctxt,
|
||||
char *name, struct config_llog_instance *cfg);
|
||||
int class_config_dump_llog(const struct lu_env *env, struct llog_ctxt *ctxt,
|
||||
char *name, struct config_llog_instance *cfg);
|
||||
|
||||
enum {
|
||||
CONFIG_T_CONFIG = 0,
|
||||
CONFIG_T_SPTLRPC = 1,
|
||||
|
@ -285,22 +280,11 @@ static inline enum obd_option exp_flags_from_obd(struct obd_device *obd)
|
|||
struct inode;
|
||||
struct lu_attr;
|
||||
struct obdo;
|
||||
void obdo_from_la(struct obdo *dst, struct lu_attr *la, __u64 valid);
|
||||
void la_from_obdo(struct lu_attr *la, struct obdo *dst, u32 valid);
|
||||
void obdo_refresh_inode(struct inode *dst, struct obdo *src, u32 valid);
|
||||
void obdo_to_inode(struct inode *dst, struct obdo *src, u32 valid);
|
||||
|
||||
void obdo_cpy_md(struct obdo *dst, struct obdo *src, u32 valid);
|
||||
void obdo_to_ioobj(struct obdo *oa, struct obd_ioobj *ioobj);
|
||||
void obdo_from_iattr(struct obdo *oa, struct iattr *attr,
|
||||
unsigned int ia_valid);
|
||||
void iattr_from_obdo(struct iattr *attr, struct obdo *oa, u32 valid);
|
||||
void md_from_obdo(struct md_op_data *op_data, struct obdo *oa, u32 valid);
|
||||
void obdo_from_md(struct obdo *oa, struct md_op_data *op_data,
|
||||
unsigned int valid);
|
||||
|
||||
void obdo_cpu_to_le(struct obdo *dobdo, struct obdo *sobdo);
|
||||
void obdo_le_to_cpu(struct obdo *dobdo, struct obdo *sobdo);
|
||||
|
||||
#define OBT(dev) (dev)->obd_type
|
||||
#define OBP(dev, op) (dev)->obd_type->typ_dt_ops->o_ ## op
|
||||
|
|
|
@ -46,16 +46,6 @@
|
|||
#include "../include/lustre_debug.h"
|
||||
#include "../include/lustre_net.h"
|
||||
|
||||
void dump_lniobuf(struct niobuf_local *nb)
|
||||
{
|
||||
CDEBUG(D_RPCTRACE,
|
||||
"niobuf_local: file_offset=%lld, len=%d, page=%p, rc=%d\n",
|
||||
nb->lnb_file_offset, nb->len, nb->page, nb->rc);
|
||||
CDEBUG(D_RPCTRACE, "nb->page: index = %ld\n",
|
||||
nb->page ? page_index(nb->page) : -1);
|
||||
}
|
||||
EXPORT_SYMBOL(dump_lniobuf);
|
||||
|
||||
#define LPDS sizeof(__u64)
|
||||
int block_debug_setup(void *addr, int len, __u64 off, __u64 id)
|
||||
{
|
||||
|
|
|
@ -162,7 +162,3 @@ int obd_sysctl_init(void)
|
|||
{
|
||||
return sysfs_create_group(lustre_kobj, &lustre_attr_group);
|
||||
}
|
||||
|
||||
void obd_sysctl_clean(void)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -71,114 +71,6 @@ int class_find_param(char *buf, char *key, char **valp)
|
|||
}
|
||||
EXPORT_SYMBOL(class_find_param);
|
||||
|
||||
/**
|
||||
* Check whether the proc parameter \a param is an old parameter or not from
|
||||
* the array \a ptr which contains the mapping from old parameters to new ones.
|
||||
* If it's an old one, then return the pointer to the cfg_interop_param struc-
|
||||
* ture which contains both the old and new parameters.
|
||||
*
|
||||
* \param param proc parameter
|
||||
* \param ptr an array which contains the mapping from
|
||||
* old parameters to new ones
|
||||
*
|
||||
* \retval valid-pointer pointer to the cfg_interop_param structure
|
||||
* which contains the old and new parameters
|
||||
* \retval NULL \a param or \a ptr is NULL,
|
||||
* or \a param is not an old parameter
|
||||
*/
|
||||
struct cfg_interop_param *class_find_old_param(const char *param,
|
||||
struct cfg_interop_param *ptr)
|
||||
{
|
||||
char *value = NULL;
|
||||
int name_len = 0;
|
||||
|
||||
if (!param || !ptr)
|
||||
return NULL;
|
||||
|
||||
value = strchr(param, '=');
|
||||
if (!value)
|
||||
name_len = strlen(param);
|
||||
else
|
||||
name_len = value - param;
|
||||
|
||||
while (ptr->old_param != NULL) {
|
||||
if (strncmp(param, ptr->old_param, name_len) == 0 &&
|
||||
name_len == strlen(ptr->old_param))
|
||||
return ptr;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(class_find_old_param);
|
||||
|
||||
/**
|
||||
* Finds a parameter in \a params and copies it to \a copy.
|
||||
*
|
||||
* Leading spaces are skipped. Next space or end of string is the
|
||||
* parameter terminator with the exception that spaces inside single or double
|
||||
* quotes get included into a parameter. The parameter is copied into \a copy
|
||||
* which has to be allocated big enough by a caller, quotes are stripped in
|
||||
* the copy and the copy is terminated by 0.
|
||||
*
|
||||
* On return \a params is set to next parameter or to NULL if last
|
||||
* parameter is returned.
|
||||
*
|
||||
* \retval 0 if parameter is returned in \a copy
|
||||
* \retval 1 otherwise
|
||||
* \retval -EINVAL if unbalanced quota is found
|
||||
*/
|
||||
int class_get_next_param(char **params, char *copy)
|
||||
{
|
||||
char *q1, *q2, *str;
|
||||
int len;
|
||||
|
||||
str = *params;
|
||||
while (*str == ' ')
|
||||
str++;
|
||||
|
||||
if (*str == '\0') {
|
||||
*params = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
q1 = strpbrk(str, " '\"");
|
||||
if (!q1) {
|
||||
len = strlen(str);
|
||||
memcpy(copy, str, len);
|
||||
copy[len] = '\0';
|
||||
*params = NULL;
|
||||
return 0;
|
||||
}
|
||||
len = q1 - str;
|
||||
if (*q1 == ' ') {
|
||||
memcpy(copy, str, len);
|
||||
copy[len] = '\0';
|
||||
*params = str + len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(copy, str, len);
|
||||
copy += len;
|
||||
|
||||
/* search for the matching closing quote */
|
||||
str = q1 + 1;
|
||||
q2 = strchr(str, *q1);
|
||||
if (!q2) {
|
||||
CERROR("Unbalanced quota in parameters: \"%s\"\n",
|
||||
*params);
|
||||
return -EINVAL;
|
||||
}
|
||||
len = q2 - str;
|
||||
memcpy(copy, str, len);
|
||||
copy += len;
|
||||
str = q2 + 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(class_get_next_param);
|
||||
|
||||
/* returns 0 if this is the first key in the buffer, else 1.
|
||||
valp points to first char after key. */
|
||||
int class_match_param(char *buf, char *key, char **valp)
|
||||
|
@ -278,52 +170,6 @@ int class_parse_nid_quiet(char *buf, lnet_nid_t *nid, char **endh)
|
|||
}
|
||||
EXPORT_SYMBOL(class_parse_nid_quiet);
|
||||
|
||||
int class_parse_net(char *buf, __u32 *net, char **endh)
|
||||
{
|
||||
return class_parse_value(buf, CLASS_PARSE_NET, (void *)net, endh, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(class_parse_net);
|
||||
|
||||
/* 1 param contains key and match
|
||||
* 0 param contains key and not match
|
||||
* -1 param does not contain key
|
||||
*/
|
||||
int class_match_nid(char *buf, char *key, lnet_nid_t nid)
|
||||
{
|
||||
lnet_nid_t tmp;
|
||||
int rc = -1;
|
||||
|
||||
while (class_find_param(buf, key, &buf) == 0) {
|
||||
/* please restrict to the nids pertaining to
|
||||
* the specified nids */
|
||||
while (class_parse_nid(buf, &tmp, &buf) == 0) {
|
||||
if (tmp == nid)
|
||||
return 1;
|
||||
}
|
||||
rc = 0;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(class_match_nid);
|
||||
|
||||
int class_match_net(char *buf, char *key, __u32 net)
|
||||
{
|
||||
__u32 tmp;
|
||||
int rc = -1;
|
||||
|
||||
while (class_find_param(buf, key, &buf) == 0) {
|
||||
/* please restrict to the nids pertaining to
|
||||
* the specified networks */
|
||||
while (class_parse_net(buf, &tmp, &buf) == 0) {
|
||||
if (tmp == net)
|
||||
return 1;
|
||||
}
|
||||
rc = 0;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(class_match_net);
|
||||
|
||||
/********************** class fns **********************/
|
||||
|
||||
/**
|
||||
|
@ -925,78 +771,6 @@ void lustre_register_client_process_config(int (*cpc)(struct lustre_cfg *lcfg))
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_register_client_process_config);
|
||||
|
||||
/**
|
||||
* Rename the proc parameter in \a cfg with a new name \a new_name.
|
||||
*
|
||||
* \param cfg config structure which contains the proc parameter
|
||||
* \param new_name new name of the proc parameter
|
||||
*
|
||||
* \retval valid-pointer pointer to the newly-allocated config structure
|
||||
* which contains the renamed proc parameter
|
||||
* \retval ERR_PTR(-EINVAL) if \a cfg or \a new_name is NULL, or \a cfg does
|
||||
* not contain a proc parameter
|
||||
* \retval ERR_PTR(-ENOMEM) if memory allocation failure occurs
|
||||
*/
|
||||
struct lustre_cfg *lustre_cfg_rename(struct lustre_cfg *cfg,
|
||||
const char *new_name)
|
||||
{
|
||||
struct lustre_cfg_bufs *bufs = NULL;
|
||||
struct lustre_cfg *new_cfg = NULL;
|
||||
char *param = NULL;
|
||||
char *new_param = NULL;
|
||||
char *value = NULL;
|
||||
int name_len = 0;
|
||||
int new_len = 0;
|
||||
|
||||
if (!cfg || !new_name)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
param = lustre_cfg_string(cfg, 1);
|
||||
if (!param)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
value = strchr(param, '=');
|
||||
if (!value)
|
||||
name_len = strlen(param);
|
||||
else
|
||||
name_len = value - param;
|
||||
|
||||
new_len = LUSTRE_CFG_BUFLEN(cfg, 1) + strlen(new_name) - name_len;
|
||||
|
||||
new_param = kzalloc(new_len, GFP_NOFS);
|
||||
if (!new_param)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
strcpy(new_param, new_name);
|
||||
if (value != NULL)
|
||||
strcat(new_param, value);
|
||||
|
||||
bufs = kzalloc(sizeof(*bufs), GFP_NOFS);
|
||||
if (!bufs) {
|
||||
kfree(new_param);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
lustre_cfg_bufs_reset(bufs, NULL);
|
||||
lustre_cfg_bufs_init(bufs, cfg);
|
||||
lustre_cfg_bufs_set_string(bufs, 1, new_param);
|
||||
|
||||
new_cfg = lustre_cfg_new(cfg->lcfg_command, bufs);
|
||||
|
||||
kfree(new_param);
|
||||
kfree(bufs);
|
||||
if (!new_cfg)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
new_cfg->lcfg_num = cfg->lcfg_num;
|
||||
new_cfg->lcfg_flags = cfg->lcfg_flags;
|
||||
new_cfg->lcfg_nid = cfg->lcfg_nid;
|
||||
new_cfg->lcfg_nal = cfg->lcfg_nal;
|
||||
|
||||
return new_cfg;
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_cfg_rename);
|
||||
|
||||
static int process_param2_config(struct lustre_cfg *lcfg)
|
||||
{
|
||||
char *param = lustre_cfg_string(lcfg, 1);
|
||||
|
@ -1037,12 +811,6 @@ static int process_param2_config(struct lustre_cfg *lcfg)
|
|||
return rc;
|
||||
}
|
||||
|
||||
void lustre_register_quota_process_config(int (*qpc)(struct lustre_cfg *lcfg))
|
||||
{
|
||||
quota_process_config = qpc;
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_register_quota_process_config);
|
||||
|
||||
/** Process configuration commands given in lustre_cfg form.
|
||||
* These may come from direct calls (e.g. class_manual_cleanup)
|
||||
* or processing the config llog, or ioctl from lctl.
|
||||
|
@ -1633,31 +1401,6 @@ int class_config_dump_handler(const struct lu_env *env,
|
|||
return rc;
|
||||
}
|
||||
|
||||
int class_config_dump_llog(const struct lu_env *env, struct llog_ctxt *ctxt,
|
||||
char *name, struct config_llog_instance *cfg)
|
||||
{
|
||||
struct llog_handle *llh;
|
||||
int rc;
|
||||
|
||||
LCONSOLE_INFO("Dumping config log %s\n", name);
|
||||
|
||||
rc = llog_open(env, ctxt, &llh, NULL, name, LLOG_OPEN_EXISTS);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = llog_init_handle(env, llh, LLOG_F_IS_PLAIN, NULL);
|
||||
if (rc)
|
||||
goto parse_out;
|
||||
|
||||
rc = llog_process(env, llh, class_config_dump_handler, cfg, NULL);
|
||||
parse_out:
|
||||
llog_close(env, llh);
|
||||
|
||||
LCONSOLE_INFO("End config log %s\n", name);
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(class_config_dump_llog);
|
||||
|
||||
/** Call class_cleanup and class_detach.
|
||||
* "Manual" only in the sense that we're faking lcfg commands.
|
||||
*/
|
||||
|
|
|
@ -1995,55 +1995,6 @@ static void *__req_capsule_get(struct req_capsule *pill,
|
|||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dump a request and/or reply
|
||||
*/
|
||||
static void __req_capsule_dump(struct req_capsule *pill, enum req_location loc)
|
||||
{
|
||||
const struct req_format *fmt;
|
||||
const struct req_msg_field *field;
|
||||
int len;
|
||||
int i;
|
||||
|
||||
fmt = pill->rc_fmt;
|
||||
|
||||
DEBUG_REQ(D_RPCTRACE, pill->rc_req, "BEGIN REQ CAPSULE DUMP\n");
|
||||
for (i = 0; i < fmt->rf_fields[loc].nr; ++i) {
|
||||
field = FMT_FIELD(fmt, loc, i);
|
||||
if (field->rmf_dumper == NULL) {
|
||||
/*
|
||||
* FIXME Add a default hex dumper for fields that don't
|
||||
* have a specific dumper
|
||||
*/
|
||||
len = req_capsule_get_size(pill, field, loc);
|
||||
CDEBUG(D_RPCTRACE, "Field %s has no dumper function; field size is %d\n",
|
||||
field->rmf_name, len);
|
||||
} else {
|
||||
/* It's the dumping side-effect that we're interested in */
|
||||
(void) __req_capsule_get(pill, field, loc, NULL, 1);
|
||||
}
|
||||
}
|
||||
CDEBUG(D_RPCTRACE, "END REQ CAPSULE DUMP\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Dump a request.
|
||||
*/
|
||||
void req_capsule_client_dump(struct req_capsule *pill)
|
||||
{
|
||||
__req_capsule_dump(pill, RCL_CLIENT);
|
||||
}
|
||||
EXPORT_SYMBOL(req_capsule_client_dump);
|
||||
|
||||
/**
|
||||
* Dump a reply
|
||||
*/
|
||||
void req_capsule_server_dump(struct req_capsule *pill)
|
||||
{
|
||||
__req_capsule_dump(pill, RCL_SERVER);
|
||||
}
|
||||
EXPORT_SYMBOL(req_capsule_server_dump);
|
||||
|
||||
/**
|
||||
* Trivial wrapper around __req_capsule_get(), that returns the PTLRPC request
|
||||
* buffer corresponding to the given RMF (\a field) of a \a pill.
|
||||
|
@ -2135,21 +2086,6 @@ void *req_capsule_server_sized_swab_get(struct req_capsule *pill,
|
|||
}
|
||||
EXPORT_SYMBOL(req_capsule_server_sized_swab_get);
|
||||
|
||||
/**
|
||||
* Returns the buffer of a \a pill corresponding to the given \a field from the
|
||||
* request (if the caller is executing on the server-side) or reply (if the
|
||||
* caller is executing on the client-side).
|
||||
*
|
||||
* This function convenient for use is code that could be executed on the
|
||||
* client and server alike.
|
||||
*/
|
||||
const void *req_capsule_other_get(struct req_capsule *pill,
|
||||
const struct req_msg_field *field)
|
||||
{
|
||||
return __req_capsule_get(pill, field, pill->rc_loc ^ 1, NULL, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(req_capsule_other_get);
|
||||
|
||||
/**
|
||||
* Set the size of the PTLRPC request/reply (\a loc) buffer for the given \a
|
||||
* field of the given \a pill.
|
||||
|
|
|
@ -477,7 +477,6 @@ static void nrs_resource_get_safe(struct ptlrpc_nrs *nrs,
|
|||
*
|
||||
* \param resp the resource hierarchy that is being released
|
||||
*
|
||||
* \see ptlrpc_nrs_req_hp_move()
|
||||
* \see ptlrpc_nrs_req_finalize()
|
||||
*/
|
||||
static void nrs_resource_put_safe(struct ptlrpc_nrs_resource **resp)
|
||||
|
@ -1250,70 +1249,6 @@ fail:
|
|||
}
|
||||
EXPORT_SYMBOL(ptlrpc_nrs_policy_register);
|
||||
|
||||
/**
|
||||
* Unregisters a previously registered policy with NRS core. All instances of
|
||||
* the policy on all NRS heads of all supported services are removed.
|
||||
*
|
||||
* N.B. This function should only be called from a module's exit() function.
|
||||
* Although it can be used for policies that ship alongside NRS core, the
|
||||
* function is primarily intended for policies that register externally,
|
||||
* from other modules.
|
||||
*
|
||||
* \param[in] conf configuration information for the policy to unregister
|
||||
*
|
||||
* \retval -ve error
|
||||
* \retval 0 success
|
||||
*/
|
||||
int ptlrpc_nrs_policy_unregister(struct ptlrpc_nrs_pol_conf *conf)
|
||||
{
|
||||
struct ptlrpc_nrs_pol_desc *desc;
|
||||
int rc;
|
||||
|
||||
LASSERT(conf != NULL);
|
||||
|
||||
if (conf->nc_flags & PTLRPC_NRS_FL_FALLBACK) {
|
||||
CERROR("Unable to unregister a fallback policy, unless the PTLRPC service is stopping.\n");
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
conf->nc_name[NRS_POL_NAME_MAX - 1] = '\0';
|
||||
|
||||
mutex_lock(&nrs_core.nrs_mutex);
|
||||
|
||||
desc = nrs_policy_find_desc_locked(conf->nc_name);
|
||||
if (desc == NULL) {
|
||||
CERROR("Failing to unregister NRS policy %s which has not been registered with NRS core!\n",
|
||||
conf->nc_name);
|
||||
rc = -ENOENT;
|
||||
goto not_exist;
|
||||
}
|
||||
|
||||
mutex_lock(&ptlrpc_all_services_mutex);
|
||||
|
||||
rc = nrs_policy_unregister_locked(desc);
|
||||
if (rc < 0) {
|
||||
if (rc == -EBUSY)
|
||||
CERROR("Please first stop policy %s on all service partitions and then retry to unregister the policy.\n",
|
||||
conf->nc_name);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
CDEBUG(D_INFO, "Unregistering policy %s from NRS core.\n",
|
||||
conf->nc_name);
|
||||
|
||||
list_del(&desc->pd_list);
|
||||
kfree(desc);
|
||||
|
||||
fail:
|
||||
mutex_unlock(&ptlrpc_all_services_mutex);
|
||||
|
||||
not_exist:
|
||||
mutex_unlock(&nrs_core.nrs_mutex);
|
||||
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(ptlrpc_nrs_policy_unregister);
|
||||
|
||||
/**
|
||||
* Setup NRS heads on all service partitions of service \a svc, and register
|
||||
* all compatible policies on those NRS heads.
|
||||
|
@ -1552,22 +1487,6 @@ ptlrpc_nrs_req_get_nolock0(struct ptlrpc_service_part *svcpt, bool hp,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dequeues request \a req from the policy it has been enqueued on.
|
||||
*
|
||||
* \param[in] req the request
|
||||
*/
|
||||
void ptlrpc_nrs_req_del_nolock(struct ptlrpc_request *req)
|
||||
{
|
||||
struct ptlrpc_nrs_policy *policy = nrs_request_policy(&req->rq_nrq);
|
||||
|
||||
policy->pol_desc->pd_ops->op_req_dequeue(policy, &req->rq_nrq);
|
||||
|
||||
req->rq_nrq.nr_enqueued = 0;
|
||||
|
||||
nrs_request_removed(policy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether there are any requests currently enqueued on any of the
|
||||
* policies of service partition's \a svcpt NRS head specified by \a hp. Should
|
||||
|
@ -1588,48 +1507,6 @@ bool ptlrpc_nrs_req_pending_nolock(struct ptlrpc_service_part *svcpt, bool hp)
|
|||
return nrs->nrs_req_queued > 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Moves request \a req from the regular to the high-priority NRS head.
|
||||
*
|
||||
* \param[in] req the request to move
|
||||
*/
|
||||
void ptlrpc_nrs_req_hp_move(struct ptlrpc_request *req)
|
||||
{
|
||||
struct ptlrpc_service_part *svcpt = req->rq_rqbd->rqbd_svcpt;
|
||||
struct ptlrpc_nrs_request *nrq = &req->rq_nrq;
|
||||
struct ptlrpc_nrs_resource *res1[NRS_RES_MAX];
|
||||
struct ptlrpc_nrs_resource *res2[NRS_RES_MAX];
|
||||
|
||||
/**
|
||||
* Obtain the high-priority NRS head resources.
|
||||
*/
|
||||
nrs_resource_get_safe(nrs_svcpt2nrs(svcpt, true), nrq, res1, true);
|
||||
|
||||
spin_lock(&svcpt->scp_req_lock);
|
||||
|
||||
if (!ptlrpc_nrs_req_can_move(req))
|
||||
goto out;
|
||||
|
||||
ptlrpc_nrs_req_del_nolock(req);
|
||||
|
||||
memcpy(res2, nrq->nr_res_ptrs, NRS_RES_MAX * sizeof(res2[0]));
|
||||
memcpy(nrq->nr_res_ptrs, res1, NRS_RES_MAX * sizeof(res1[0]));
|
||||
|
||||
ptlrpc_nrs_hpreq_add_nolock(req);
|
||||
|
||||
memcpy(res1, res2, NRS_RES_MAX * sizeof(res1[0]));
|
||||
out:
|
||||
spin_unlock(&svcpt->scp_req_lock);
|
||||
|
||||
/**
|
||||
* Release either the regular NRS head resources if we moved the
|
||||
* request, or the high-priority NRS head resources if we took a
|
||||
* reference earlier in this function and ptlrpc_nrs_req_can_move()
|
||||
* returned false.
|
||||
*/
|
||||
nrs_resource_put_safe(res1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Carries out a control operation \a opc on the policy identified by the
|
||||
* human-readable \a name, on either all partitions, or only on the first
|
||||
|
|
|
@ -94,30 +94,6 @@ int ptlrpc_buf_need_swab(struct ptlrpc_request *req, const int inout,
|
|||
}
|
||||
EXPORT_SYMBOL(ptlrpc_buf_need_swab);
|
||||
|
||||
static inline int lustre_msg_check_version_v2(struct lustre_msg_v2 *msg,
|
||||
__u32 version)
|
||||
{
|
||||
__u32 ver = lustre_msg_get_version(msg);
|
||||
return (ver & LUSTRE_VERSION_MASK) != version;
|
||||
}
|
||||
|
||||
int lustre_msg_check_version(struct lustre_msg *msg, __u32 version)
|
||||
{
|
||||
#define LUSTRE_MSG_MAGIC_V1 0x0BD00BD0
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V1:
|
||||
CERROR("msg v1 not supported - please upgrade you system\n");
|
||||
return -EINVAL;
|
||||
case LUSTRE_MSG_MAGIC_V2:
|
||||
return lustre_msg_check_version_v2(msg, version);
|
||||
default:
|
||||
CERROR("incorrect message magic: %08x\n", msg->lm_magic);
|
||||
return 0;
|
||||
}
|
||||
#undef LUSTRE_MSG_MAGIC_V1
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_check_version);
|
||||
|
||||
/* early reply size */
|
||||
int lustre_msg_early_size(void)
|
||||
{
|
||||
|
@ -695,28 +671,6 @@ int lustre_msg_buflen(struct lustre_msg *m, int n)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_msg_buflen);
|
||||
|
||||
static inline void
|
||||
lustre_msg_set_buflen_v2(struct lustre_msg_v2 *m, int n, int len)
|
||||
{
|
||||
if (n >= m->lm_bufcount)
|
||||
LBUG();
|
||||
|
||||
m->lm_buflens[n] = len;
|
||||
}
|
||||
|
||||
void lustre_msg_set_buflen(struct lustre_msg *m, int n, int len)
|
||||
{
|
||||
switch (m->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2:
|
||||
lustre_msg_set_buflen_v2(m, n, len);
|
||||
return;
|
||||
default:
|
||||
LASSERTF(0, "incorrect message magic: %08x\n", m->lm_magic);
|
||||
}
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(lustre_msg_set_buflen);
|
||||
|
||||
/* NB return the bufcount for lustre_msg_v2 format, so if message is packed
|
||||
* in V1 format, the result is one bigger. (add struct ptlrpc_body). */
|
||||
int lustre_msg_bufcount(struct lustre_msg *m)
|
||||
|
@ -958,24 +912,6 @@ __u32 lustre_msg_get_type(struct lustre_msg *msg)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_msg_get_type);
|
||||
|
||||
__u32 lustre_msg_get_version(struct lustre_msg *msg)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2: {
|
||||
struct ptlrpc_body *pb = lustre_msg_ptlrpc_body(msg);
|
||||
if (!pb) {
|
||||
CERROR("invalid msg %p: no ptlrpc body!\n", msg);
|
||||
return 0;
|
||||
}
|
||||
return pb->pb_version;
|
||||
}
|
||||
default:
|
||||
CERROR("incorrect message magic: %08x\n", msg->lm_magic);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_get_version);
|
||||
|
||||
void lustre_msg_add_version(struct lustre_msg *msg, int version)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
|
@ -1010,24 +946,6 @@ __u32 lustre_msg_get_opc(struct lustre_msg *msg)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_msg_get_opc);
|
||||
|
||||
__u64 lustre_msg_get_last_xid(struct lustre_msg *msg)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2: {
|
||||
struct ptlrpc_body *pb = lustre_msg_ptlrpc_body(msg);
|
||||
if (!pb) {
|
||||
CERROR("invalid msg %p: no ptlrpc body!\n", msg);
|
||||
return 0;
|
||||
}
|
||||
return pb->pb_last_xid;
|
||||
}
|
||||
default:
|
||||
CERROR("incorrect message magic: %08x\n", msg->lm_magic);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_get_last_xid);
|
||||
|
||||
__u64 lustre_msg_get_last_committed(struct lustre_msg *msg)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
|
@ -1243,25 +1161,6 @@ __u32 lustre_msg_get_service_time(struct lustre_msg *msg)
|
|||
}
|
||||
}
|
||||
|
||||
char *lustre_msg_get_jobid(struct lustre_msg *msg)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2: {
|
||||
struct ptlrpc_body *pb =
|
||||
lustre_msg_buf_v2(msg, MSG_PTLRPC_BODY_OFF,
|
||||
sizeof(struct ptlrpc_body));
|
||||
if (!pb)
|
||||
return NULL;
|
||||
|
||||
return pb->pb_jobid;
|
||||
}
|
||||
default:
|
||||
CERROR("incorrect message magic: %08x\n", msg->lm_magic);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_get_jobid);
|
||||
|
||||
__u32 lustre_msg_get_cksum(struct lustre_msg *msg)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
|
@ -1336,36 +1235,6 @@ void lustre_msg_set_opc(struct lustre_msg *msg, __u32 opc)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_msg_set_opc);
|
||||
|
||||
void lustre_msg_set_last_xid(struct lustre_msg *msg, __u64 last_xid)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2: {
|
||||
struct ptlrpc_body *pb = lustre_msg_ptlrpc_body(msg);
|
||||
LASSERTF(pb, "invalid msg %p: no ptlrpc body!\n", msg);
|
||||
pb->pb_last_xid = last_xid;
|
||||
return;
|
||||
}
|
||||
default:
|
||||
LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_set_last_xid);
|
||||
|
||||
void lustre_msg_set_last_committed(struct lustre_msg *msg, __u64 last_committed)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
case LUSTRE_MSG_MAGIC_V2: {
|
||||
struct ptlrpc_body *pb = lustre_msg_ptlrpc_body(msg);
|
||||
LASSERTF(pb, "invalid msg %p: no ptlrpc body!\n", msg);
|
||||
pb->pb_last_committed = last_committed;
|
||||
return;
|
||||
}
|
||||
default:
|
||||
LASSERTF(0, "incorrect message magic: %08x\n", msg->lm_magic);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_msg_set_last_committed);
|
||||
|
||||
void lustre_msg_set_versions(struct lustre_msg *msg, __u64 *versions)
|
||||
{
|
||||
switch (msg->lm_magic) {
|
||||
|
@ -1509,14 +1378,6 @@ void ptlrpc_request_set_replen(struct ptlrpc_request *req)
|
|||
}
|
||||
EXPORT_SYMBOL(ptlrpc_request_set_replen);
|
||||
|
||||
void ptlrpc_req_set_repsize(struct ptlrpc_request *req, int count, __u32 *lens)
|
||||
{
|
||||
req->rq_replen = lustre_msg_size(req->rq_reqmsg->lm_magic, count, lens);
|
||||
if (req->rq_reqmsg->lm_magic == LUSTRE_MSG_MAGIC_V2)
|
||||
req->rq_reqmsg->lm_repsize = req->rq_replen;
|
||||
}
|
||||
EXPORT_SYMBOL(ptlrpc_req_set_repsize);
|
||||
|
||||
/**
|
||||
* Send a remote set_info_async.
|
||||
*
|
||||
|
@ -1968,15 +1829,6 @@ void lustre_swab_idx_info(struct idx_info *ii)
|
|||
__swab16s(&ii->ii_recsize);
|
||||
}
|
||||
|
||||
void lustre_swab_lip_header(struct lu_idxpage *lip)
|
||||
{
|
||||
/* swab header */
|
||||
__swab32s(&lip->lip_magic);
|
||||
__swab16s(&lip->lip_flags);
|
||||
__swab16s(&lip->lip_nr);
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_swab_lip_header);
|
||||
|
||||
void lustre_swab_mdt_rec_reint (struct mdt_rec_reint *rr)
|
||||
{
|
||||
__swab32s(&rr->rr_opcode);
|
||||
|
@ -2019,46 +1871,6 @@ void lustre_swab_lov_desc(struct lov_desc *ld)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_swab_lov_desc);
|
||||
|
||||
void lustre_swab_lmv_desc(struct lmv_desc *ld)
|
||||
{
|
||||
__swab32s(&ld->ld_tgt_count);
|
||||
__swab32s(&ld->ld_active_tgt_count);
|
||||
__swab32s(&ld->ld_default_stripe_count);
|
||||
__swab32s(&ld->ld_pattern);
|
||||
__swab64s(&ld->ld_default_hash_size);
|
||||
__swab32s(&ld->ld_qos_maxage);
|
||||
/* uuid endian insensitive */
|
||||
}
|
||||
|
||||
void lustre_swab_lmv_stripe_md(struct lmv_stripe_md *mea)
|
||||
{
|
||||
__swab32s(&mea->mea_magic);
|
||||
__swab32s(&mea->mea_count);
|
||||
__swab32s(&mea->mea_master);
|
||||
CLASSERT(offsetof(typeof(*mea), mea_padding) != 0);
|
||||
}
|
||||
|
||||
void lustre_swab_lmv_user_md(struct lmv_user_md *lum)
|
||||
{
|
||||
int i;
|
||||
|
||||
__swab32s(&lum->lum_magic);
|
||||
__swab32s(&lum->lum_stripe_count);
|
||||
__swab32s(&lum->lum_stripe_offset);
|
||||
__swab32s(&lum->lum_hash_type);
|
||||
__swab32s(&lum->lum_type);
|
||||
CLASSERT(offsetof(typeof(*lum), lum_padding1) != 0);
|
||||
CLASSERT(offsetof(typeof(*lum), lum_padding2) != 0);
|
||||
CLASSERT(offsetof(typeof(*lum), lum_padding3) != 0);
|
||||
|
||||
for (i = 0; i < lum->lum_stripe_count; i++) {
|
||||
__swab32s(&lum->lum_objects[i].lum_mds);
|
||||
lustre_swab_lu_fid(&lum->lum_objects[i].lum_fid);
|
||||
}
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_swab_lmv_user_md);
|
||||
|
||||
static void print_lum(struct lov_user_md *lum)
|
||||
{
|
||||
CDEBUG(D_OTHER, "lov_user_md %p:\n", lum);
|
||||
|
@ -2282,7 +2094,6 @@ void dump_obdo(struct obdo *oa)
|
|||
if (valid & OBD_MD_FLCOOKIE)
|
||||
CDEBUG(D_RPCTRACE, "obdo: o_lcookie = (llog_cookie dumping not yet implemented)\n");
|
||||
}
|
||||
EXPORT_SYMBOL(dump_obdo);
|
||||
|
||||
void dump_ost_body(struct ost_body *ob)
|
||||
{
|
||||
|
@ -2381,14 +2192,6 @@ void lustre_swab_lustre_capa(struct lustre_capa *c)
|
|||
}
|
||||
EXPORT_SYMBOL(lustre_swab_lustre_capa);
|
||||
|
||||
void lustre_swab_lustre_capa_key(struct lustre_capa_key *k)
|
||||
{
|
||||
__swab64s(&k->lk_seq);
|
||||
__swab32s(&k->lk_keyid);
|
||||
CLASSERT(offsetof(typeof(*k), lk_padding) != 0);
|
||||
}
|
||||
EXPORT_SYMBOL(lustre_swab_lustre_capa_key);
|
||||
|
||||
void lustre_swab_hsm_user_state(struct hsm_user_state *state)
|
||||
{
|
||||
__swab32s(&state->hus_states);
|
||||
|
|
|
@ -44,20 +44,10 @@
|
|||
#include "../include/obd_class.h"
|
||||
#include "ptlrpc_internal.h"
|
||||
|
||||
static int suppress_pings;
|
||||
module_param(suppress_pings, int, 0644);
|
||||
MODULE_PARM_DESC(suppress_pings, "Suppress pings");
|
||||
|
||||
struct mutex pinger_mutex;
|
||||
static LIST_HEAD(pinger_imports);
|
||||
static struct list_head timeout_list = LIST_HEAD_INIT(timeout_list);
|
||||
|
||||
int ptlrpc_pinger_suppress_pings(void)
|
||||
{
|
||||
return suppress_pings;
|
||||
}
|
||||
EXPORT_SYMBOL(ptlrpc_pinger_suppress_pings);
|
||||
|
||||
struct ptlrpc_request *
|
||||
ptlrpc_prep_ping(struct obd_import *imp)
|
||||
{
|
||||
|
@ -122,11 +112,6 @@ static void ptlrpc_update_next_ping(struct obd_import *imp, int soon)
|
|||
imp->imp_next_ping = cfs_time_shift(time);
|
||||
}
|
||||
|
||||
void ptlrpc_ping_import_soon(struct obd_import *imp)
|
||||
{
|
||||
imp->imp_next_ping = cfs_time_current();
|
||||
}
|
||||
|
||||
static inline int imp_is_deactive(struct obd_import *imp)
|
||||
{
|
||||
return (imp->imp_deactive ||
|
||||
|
@ -325,9 +310,6 @@ int ptlrpc_start_pinger(void)
|
|||
l_wait_event(pinger_thread.t_ctl_waitq,
|
||||
thread_is_running(&pinger_thread), &lwi);
|
||||
|
||||
if (suppress_pings)
|
||||
CWARN("Pings will be suppressed at the request of the administrator. The configuration shall meet the additional requirements described in the manual. (Search for the \"suppress_pings\" kernel module parameter.)\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -137,7 +137,6 @@ ptlrpc_nrs_req_get_nolock(struct ptlrpc_service_part *svcpt, bool hp,
|
|||
return ptlrpc_nrs_req_get_nolock0(svcpt, hp, false, force);
|
||||
}
|
||||
|
||||
void ptlrpc_nrs_req_del_nolock(struct ptlrpc_request *req);
|
||||
bool ptlrpc_nrs_req_pending_nolock(struct ptlrpc_service_part *svcpt, bool hp);
|
||||
|
||||
int ptlrpc_nrs_policy_control(const struct ptlrpc_service *svc,
|
||||
|
@ -243,7 +242,6 @@ int ptlrpc_stop_pinger(void);
|
|||
void ptlrpc_pinger_sending_on_import(struct obd_import *imp);
|
||||
void ptlrpc_pinger_commit_expected(struct obd_import *imp);
|
||||
void ptlrpc_pinger_wake_up(void);
|
||||
void ptlrpc_ping_import_soon(struct obd_import *imp);
|
||||
|
||||
/* sec_null.c */
|
||||
int sptlrpc_null_init(void);
|
||||
|
|
Loading…
Reference in New Issue