- fixes in mdt_enqueue() with handling obd_fail_loc;
- fixed missed lu_context_key_register() in fid init time.
ENTRY;
seq->lss_proc_dir = lprocfs_register(seq->lss_name,
ENTRY;
seq->lss_proc_dir = lprocfs_register(seq->lss_name,
NULL, NULL);
if (IS_ERR(seq->lss_proc_dir)) {
rc = PTR_ERR(seq->lss_proc_dir);
NULL, NULL);
if (IS_ERR(seq->lss_proc_dir)) {
rc = PTR_ERR(seq->lss_proc_dir);
seq->lss_super_width = LUSTRE_SEQ_SUPER_WIDTH;
seq->lss_meta_width = LUSTRE_SEQ_META_WIDTH;
seq->lss_super_width = LUSTRE_SEQ_SUPER_WIDTH;
seq->lss_meta_width = LUSTRE_SEQ_META_WIDTH;
- snprintf(seq->lss_name, sizeof(seq->lss_name), "%s-%s-%s",
- LUSTRE_SEQ_NAME, (is_srv ? "srv" : "ctl"),
- prefix);
+ snprintf(seq->lss_name, sizeof(seq->lss_name), "%s-%s",
+ (is_srv ? "srv" : "ctl"), prefix);
seq->lss_space = LUSTRE_SEQ_SPACE_RANGE;
seq->lss_super = LUSTRE_SEQ_ZERO_RANGE;
seq->lss_space = LUSTRE_SEQ_SPACE_RANGE;
seq->lss_super = LUSTRE_SEQ_ZERO_RANGE;
}
EXPORT_SYMBOL(seq_server_fini);
}
EXPORT_SYMBOL(seq_server_fini);
-static int fid_init(void)
-{
- ENTRY;
- RETURN(0);
-}
-
-static int fid_fini(void)
-{
- ENTRY;
- RETURN(0);
-}
+cfs_proc_dir_entry_t *seq_type_proc_dir = NULL;
static int __init fid_mod_init(void)
{
static int __init fid_mod_init(void)
{
- /* init caches if any */
- fid_init();
+ printk(KERN_INFO "Lustre: Sequence Manager; "
+ "info@clusterfs.com\n");
+
+ seq_type_proc_dir = lprocfs_register(LUSTRE_SEQ_NAME,
+ proc_lustre_root,
+ NULL, NULL);
+ if (IS_ERR(seq_type_proc_dir))
+ return PTR_ERR(seq_type_proc_dir);
+
+ lu_context_key_register(&seq_thread_key);
return 0;
}
static void __exit fid_mod_exit(void)
{
return 0;
}
static void __exit fid_mod_exit(void)
{
- /* free caches if any */
- fid_fini();
- return;
+ lu_context_key_degister(&seq_thread_key);
+ if (seq_type_proc_dir != NULL && !IS_ERR(seq_type_proc_dir)) {
+ lprocfs_remove(seq_type_proc_dir);
+ seq_type_proc_dir = NULL;
+ }
}
MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
}
MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
+extern cfs_proc_dir_entry_t *seq_type_proc_dir;
+
#endif /* __FID_INTERNAL_H */
#endif /* __FID_INTERNAL_H */
ENTRY;
seq->lcs_proc_dir = lprocfs_register(seq->lcs_name,
ENTRY;
seq->lcs_proc_dir = lprocfs_register(seq->lcs_name,
NULL, NULL);
if (IS_ERR(seq->lcs_proc_dir)) {
NULL, NULL);
if (IS_ERR(seq->lcs_proc_dir)) {
}
snprintf(seq->lcs_name, sizeof(seq->lcs_name),
}
snprintf(seq->lcs_name, sizeof(seq->lcs_name),
- "%s-cli-%s", LUSTRE_SEQ_NAME, prefix);
rc = seq_client_proc_init(seq);
if (rc)
rc = seq_client_proc_init(seq);
if (rc)
.lct_fini = fld_key_fini
};
.lct_fini = fld_key_fini
};
+cfs_proc_dir_entry_t *fld_type_proc_dir = NULL;
+
static int __init fld_mod_init(void)
{
static int __init fld_mod_init(void)
{
- printk(KERN_INFO "Lustre: Fid Location Database; info@clusterfs.com\n");
+ printk(KERN_INFO "Lustre: Fid Location Database; "
+ "info@clusterfs.com\n");
+
+ fld_type_proc_dir = lprocfs_register(LUSTRE_FLD_NAME,
+ proc_lustre_root,
+ NULL, NULL);
+ if (IS_ERR(fld_type_proc_dir))
+ return PTR_ERR(fld_type_proc_dir);
+
lu_context_key_register(&fld_thread_key);
return 0;
}
lu_context_key_register(&fld_thread_key);
return 0;
}
static void __exit fld_mod_exit(void)
{
lu_context_key_degister(&fld_thread_key);
static void __exit fld_mod_exit(void)
{
lu_context_key_degister(&fld_thread_key);
+ if (fld_type_proc_dir != NULL && !IS_ERR(fld_type_proc_dir)) {
+ lprocfs_remove(fld_type_proc_dir);
+ fld_type_proc_dir = NULL;
+ }
}
/* insert index entry and update cache */
}
/* insert index entry and update cache */
ENTRY;
fld->lsf_proc_dir = lprocfs_register(fld->lsf_name,
ENTRY;
fld->lsf_proc_dir = lprocfs_register(fld->lsf_name,
fld_server_proc_list, fld);
if (IS_ERR(fld->lsf_proc_dir)) {
rc = PTR_ERR(fld->lsf_proc_dir);
fld_server_proc_list, fld);
if (IS_ERR(fld->lsf_proc_dir)) {
rc = PTR_ERR(fld->lsf_proc_dir);
#endif
int fld_server_init(struct lu_server_fld *fld, struct dt_device *dt,
#endif
int fld_server_init(struct lu_server_fld *fld, struct dt_device *dt,
- const char *uuid, const struct lu_context *ctx)
+ const char *prefix, const struct lu_context *ctx)
{
int rc;
ENTRY;
snprintf(fld->lsf_name, sizeof(fld->lsf_name),
{
int rc;
ENTRY;
snprintf(fld->lsf_name, sizeof(fld->lsf_name),
- "%s-srv-%s", LUSTRE_FLD_NAME, uuid);
rc = fld_index_init(fld, ctx, dt);
if (rc)
rc = fld_index_init(fld, ctx, dt);
if (rc)
return tar->ft_exp->exp_client_uuid.uuid;
}
return tar->ft_exp->exp_client_uuid.uuid;
}
+extern cfs_proc_dir_entry_t *fld_type_proc_dir;
+
#endif /* __FLD_INTERNAL_H */
#endif /* __FLD_INTERNAL_H */
ENTRY;
fld->lcf_proc_dir = lprocfs_register(fld->lcf_name,
ENTRY;
fld->lcf_proc_dir = lprocfs_register(fld->lcf_name,
NULL, NULL);
if (IS_ERR(fld->lcf_proc_dir)) {
NULL, NULL);
if (IS_ERR(fld->lcf_proc_dir)) {
INIT_LIST_HEAD(&fld->lcf_targets);
snprintf(fld->lcf_name, sizeof(fld->lcf_name),
INIT_LIST_HEAD(&fld->lcf_targets);
snprintf(fld->lcf_name, sizeof(fld->lcf_name),
- "%s-cli-%s", LUSTRE_FLD_NAME, prefix);
#ifdef __KERNEL__
cache_size = FLD_CACHE_SIZE /
#ifdef __KERNEL__
cache_size = FLD_CACHE_SIZE /
/* Server methods */
int fld_server_init(struct lu_server_fld *fld,
struct dt_device *dt,
/* Server methods */
int fld_server_init(struct lu_server_fld *fld,
struct dt_device *dt,
const struct lu_context *ctx);
void fld_server_fini(struct lu_server_fld *fld,
const struct lu_context *ctx);
void fld_server_fini(struct lu_server_fld *fld,
static int mdt_enqueue(struct mdt_thread_info *info)
{
static int mdt_enqueue(struct mdt_thread_info *info)
{
struct ptlrpc_request *req;
struct ptlrpc_request *req;
/*
* info->mti_dlm_req already contains swapped and (if necessary)
/*
* info->mti_dlm_req already contains swapped and (if necessary)
*/
LASSERT(info->mti_dlm_req != NULL);
*/
LASSERT(info->mti_dlm_req != NULL);
+ if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_LDLM_ENQUEUE)) {
+ info->mti_fail_id = OBD_FAIL_LDLM_ENQUEUE;
+ return 0;
+ }
+
req = mdt_info_req(info);
req = mdt_info_req(info);
- info->mti_fail_id = OBD_FAIL_LDLM_REPLY;
rc = ldlm_handle_enqueue0(info->mti_mdt->mdt_namespace,
rc = ldlm_handle_enqueue0(info->mti_mdt->mdt_namespace,
- req, info->mti_dlm_req, &cbs);
+ req, info->mti_dlm_req, &cbs);
+ info->mti_fail_id = OBD_FAIL_LDLM_REPLY;
return rc ? : req->rq_status;
}
return rc ? : req->rq_status;
}
* Set to info->mti_fail_id to handler fail_id, it will be used
* later, and better than use default fail_id.
*/
* Set to info->mti_fail_id to handler fail_id, it will be used
* later, and better than use default fail_id.
*/
- info->mti_fail_id = h->mh_fail_id;
- if (OBD_FAIL_CHECK(h->mh_fail_id))
+ if (OBD_FAIL_CHECK(h->mh_fail_id)) {
+ info->mti_fail_id = h->mh_fail_id;
}
/* If we're DISCONNECTing, the mdt_export_data is already freed */
}
/* If we're DISCONNECTing, the mdt_export_data is already freed */
-
- if (rc == 0 && h->mh_opc != MDS_DISCONNECT) {
+ if (rc == 0 && h->mh_opc != MDS_DISCONNECT)
target_committed_to_req(req);
target_committed_to_req(req);
#include "mdt_internal.h"
#include "mdt_internal.h"
static int mdt_md_create(struct mdt_thread_info *info)
{
struct mdt_device *mdt = info->mti_mdt;
static int mdt_md_create(struct mdt_thread_info *info)
{
struct mdt_device *mdt = info->mti_mdt;
- local fn=`ls /proc/fs/lustre/seq-cli-srv*/seq_width`
+ local fn=`ls /proc/fs/lustre/seq/cli-srv*/seq_width`
echo $1 > $fn
}
seq_get_width()
{
echo $1 > $fn
}
seq_get_width()
{
- local fn=`ls /proc/fs/lustre/seq-cli-srv*/seq_width`
+ local fn=`ls /proc/fs/lustre/seq/cli-srv*/seq_width`