From 270553da095ad4f47048654b981ac166a1c4327d Mon Sep 17 00:00:00 2001 From: yury Date: Fri, 11 Aug 2006 07:20:26 +0000 Subject: [PATCH] - last portion of cleanups and fixes after Nikita's CODEINSP; - fixes about accessing pointers which are not valid and store error code what may be checked with IS_ERR() macro; --- lustre/fid/fid_handler.c | 5 +---- lustre/fid/fid_internal.h | 22 ++++++++++++++++------ lustre/fid/fid_store.c | 12 ++++++++---- lustre/fld/fld_handler.c | 12 +++--------- lustre/fld/fld_index.c | 25 +++++++++++++++---------- lustre/fld/fld_internal.h | 12 ++++++++++-- lustre/fld/fld_request.c | 3 ++- lustre/include/liblustre.h | 1 - lustre/include/lustre_fld.h | 12 ++++++------ lustre/lmv/lmv_internal.h | 9 +++++++++ 10 files changed, 70 insertions(+), 43 deletions(-) diff --git a/lustre/fid/fid_handler.c b/lustre/fid/fid_handler.c index 5b92760..7f3090a 100644 --- a/lustre/fid/fid_handler.c +++ b/lustre/fid/fid_handler.c @@ -497,7 +497,6 @@ int seq_server_init(struct lu_server_seq *seq, LASSERT(dev != NULL); LASSERT(uuid != NULL); - seq->lss_dev = dev; seq->lss_cli = NULL; seq->lss_type = type; sema_init(&seq->lss_sem, 1); @@ -512,9 +511,7 @@ int seq_server_init(struct lu_server_seq *seq, seq->lss_space = LUSTRE_SEQ_SPACE_RANGE; seq->lss_super = LUSTRE_SEQ_ZERO_RANGE; - lu_device_get(&seq->lss_dev->dd_lu_dev); - - rc = seq_store_init(seq, ctx); + rc = seq_store_init(seq, ctx, dev); if (rc) GOTO(out, rc); diff --git a/lustre/fid/fid_internal.h b/lustre/fid/fid_internal.h index 72a5861..0140fb7 100644 --- a/lustre/fid/fid_internal.h +++ b/lustre/fid/fid_internal.h @@ -26,12 +26,15 @@ #ifndef _FID_INTERNAL_H #define _FID_INTERNAL_H -#define SEQ_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000) +#include +#include -#ifdef LPROCFS -extern struct lprocfs_vars seq_server_proc_list[]; -extern struct lprocfs_vars seq_client_proc_list[]; -#endif +#include +#include + +#include + +#define SEQ_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000) #ifdef __KERNEL__ struct seq_store_record { @@ -49,7 +52,8 @@ struct seq_thread_info { extern struct lu_context_key seq_thread_key; int seq_store_init(struct lu_server_seq *seq, - const struct lu_context *ctx); + const struct lu_context *ctx, + struct dt_device *dt); void seq_store_fini(struct lu_server_seq *seq, const struct lu_context *ctx); @@ -59,6 +63,12 @@ int seq_store_write(struct lu_server_seq *seq, int seq_store_read(struct lu_server_seq *seq, const struct lu_context *ctx); + +#ifdef LPROCFS +extern struct lprocfs_vars seq_server_proc_list[]; +extern struct lprocfs_vars seq_client_proc_list[]; +#endif + #endif #endif diff --git a/lustre/fid/fid_store.c b/lustre/fid/fid_store.c index 3556738..00ec2e8 100644 --- a/lustre/fid/fid_store.c +++ b/lustre/fid/fid_store.c @@ -57,13 +57,14 @@ int seq_store_write(struct lu_server_seq *seq, const struct lu_context *ctx) { struct dt_object *dt_obj = seq->lss_obj; - struct dt_device *dt_dev = seq->lss_dev; struct seq_thread_info *info; + struct dt_device *dt_dev; struct thandle *th; loff_t pos = 0; int rc; ENTRY; + dt_dev = lu2dt_dev(seq->lss_obj->do_lu.lo_dev); info = lu_context_key_get(ctx, &seq_thread_key); LASSERT(info != NULL); @@ -130,9 +131,9 @@ int seq_store_read(struct lu_server_seq *seq, } int seq_store_init(struct lu_server_seq *seq, - const struct lu_context *ctx) + const struct lu_context *ctx, + struct dt_device *dt) { - struct dt_device *dt = seq->lss_dev; struct dt_object *dt_obj; struct lu_fid fid; int rc; @@ -158,10 +159,13 @@ void seq_store_fini(struct lu_server_seq *seq, const struct lu_context *ctx) { ENTRY; + if (seq->lss_obj != NULL) { - lu_object_put(ctx, &seq->lss_obj->do_lu); + if (!IS_ERR(seq->lss_obj)) + lu_object_put(ctx, &seq->lss_obj->do_lu); seq->lss_obj = NULL; } + EXIT; } #endif diff --git a/lustre/fld/fld_handler.c b/lustre/fld/fld_handler.c index 2485cc0..1e0b03f 100644 --- a/lustre/fld/fld_handler.c +++ b/lustre/fld/fld_handler.c @@ -359,13 +359,10 @@ int fld_server_init(struct lu_server_fld *fld, }; ENTRY; - fld->fld_dt = dt; - lu_device_get(&dt->dd_lu_dev); - snprintf(fld->fld_name, sizeof(fld->fld_name), "%s-srv-%s", LUSTRE_FLD_NAME, uuid); - rc = fld_index_init(fld, ctx); + rc = fld_index_init(fld, ctx, dt); if (rc) GOTO(out, rc); @@ -405,11 +402,8 @@ void fld_server_fini(struct lu_server_fld *fld, fld->fld_service = NULL; } - if (fld->fld_dt != NULL) { - lu_device_put(&fld->fld_dt->dd_lu_dev); - fld_index_fini(fld, ctx); - fld->fld_dt = NULL; - } + fld_index_fini(fld, ctx); + EXIT; } EXPORT_SYMBOL(fld_server_fini); diff --git a/lustre/fld/fld_index.c b/lustre/fld/fld_index.c index 4378781..73c9332 100644 --- a/lustre/fld/fld_index.c +++ b/lustre/fld/fld_index.c @@ -133,22 +133,24 @@ int fld_index_create(struct lu_server_fld *fld, const struct lu_context *ctx, seqno_t seq, mdsno_t mds) { - struct dt_device *dt = fld->fld_dt; struct dt_object *dt_obj = fld->fld_obj; + struct dt_device *dt_dev; struct txn_param txn; struct thandle *th; int rc; ENTRY; + dt_dev = lu2dt_dev(fld->fld_obj->do_lu.lo_dev); + /* stub here, will fix it later */ txn.tp_credits = FLD_TXN_INDEX_INSERT_CREDITS; - th = dt->dd_ops->dt_trans_start(ctx, dt, &txn); + th = dt_dev->dd_ops->dt_trans_start(ctx, dt_dev, &txn); if (!IS_ERR(th)) { rc = dt_obj->do_index_ops->dio_insert(ctx, dt_obj, fld_rec(ctx, mds), fld_key(ctx, seq), th); - dt->dd_ops->dt_trans_stop(ctx, th); + dt_dev->dd_ops->dt_trans_stop(ctx, th); } else rc = PTR_ERR(th); RETURN(rc); @@ -158,19 +160,20 @@ int fld_index_delete(struct lu_server_fld *fld, const struct lu_context *ctx, seqno_t seq) { - struct dt_device *dt = fld->fld_dt; struct dt_object *dt_obj = fld->fld_obj; + struct dt_device *dt_dev; struct txn_param txn; struct thandle *th; int rc; ENTRY; + dt_dev = lu2dt_dev(fld->fld_obj->do_lu.lo_dev); txn.tp_credits = FLD_TXN_INDEX_DELETE_CREDITS; - th = dt->dd_ops->dt_trans_start(ctx, dt, &txn); + th = dt_dev->dd_ops->dt_trans_start(ctx, dt_dev, &txn); if (!IS_ERR(th)) { rc = dt_obj->do_index_ops->dio_delete(ctx, dt_obj, fld_key(ctx, seq), th); - dt->dd_ops->dt_trans_stop(ctx, th); + dt_dev->dd_ops->dt_trans_stop(ctx, th); } else rc = PTR_ERR(th); RETURN(rc); @@ -193,10 +196,11 @@ int fld_index_lookup(struct lu_server_fld *fld, } int fld_index_init(struct lu_server_fld *fld, - const struct lu_context *ctx) + const struct lu_context *ctx, + struct dt_device *dt) { - struct dt_device *dt = fld->fld_dt; struct dt_object *dt_obj; + struct lu_fid fid; int rc; ENTRY; @@ -213,7 +217,7 @@ int fld_index_init(struct lu_server_fld *fld, */ LASSERT(fld->fld_service == NULL); - dt_obj = dt_store_open(ctx, dt, fld_index_name, &fld->fld_fid); + dt_obj = dt_store_open(ctx, dt, fld_index_name, &fid); if (!IS_ERR(dt_obj)) { fld->fld_obj = dt_obj; rc = dt_obj->do_ops->do_index_try(ctx, dt_obj, @@ -236,7 +240,8 @@ void fld_index_fini(struct lu_server_fld *fld, { ENTRY; if (fld->fld_obj != NULL) { - lu_object_put(ctx, &fld->fld_obj->do_lu); + if (!IS_ERR(fld->fld_obj)) + lu_object_put(ctx, &fld->fld_obj->do_lu); fld->fld_obj = NULL; } if (fld_key_registered > 0) { diff --git a/lustre/fld/fld_internal.h b/lustre/fld/fld_internal.h index 8f3dad2..9a1295a 100644 --- a/lustre/fld/fld_internal.h +++ b/lustre/fld/fld_internal.h @@ -28,6 +28,12 @@ #ifndef _FLD_INTERNAL_H #define _FLD_INTERNAL_H +#include +#include + +#include +#include + #include enum fld_op { @@ -46,7 +52,8 @@ extern struct lu_fld_hash fld_hash[]; #define FLD_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000) int fld_index_init(struct lu_server_fld *fld, - const struct lu_context *ctx); + const struct lu_context *ctx, + struct dt_device *dt); void fld_index_fini(struct lu_server_fld *fld, const struct lu_context *ctx); @@ -62,7 +69,6 @@ int fld_index_delete(struct lu_server_fld *fld, int fld_index_lookup(struct lu_server_fld *fld, const struct lu_context *ctx, seqno_t seq, mdsno_t *mds); -#endif #ifdef LPROCFS extern struct lprocfs_vars fld_server_proc_list[]; @@ -70,3 +76,5 @@ extern struct lprocfs_vars fld_client_proc_list[]; #endif #endif + +#endif diff --git a/lustre/fld/fld_request.c b/lustre/fld/fld_request.c index 7389e4a..90b7888 100644 --- a/lustre/fld/fld_request.c +++ b/lustre/fld/fld_request.c @@ -318,7 +318,8 @@ void fld_client_fini(struct lu_client_fld *fld) #ifdef __KERNEL__ if (fld->fld_cache != NULL) { - fld_cache_fini(fld->fld_cache); + if (!IS_ERR(fld->fld_cache)) + fld_cache_fini(fld->fld_cache); fld->fld_cache = NULL; } #endif diff --git a/lustre/include/liblustre.h b/lustre/include/liblustre.h index aaa369d..b48cac9 100644 --- a/lustre/include/liblustre.h +++ b/lustre/include/liblustre.h @@ -528,7 +528,6 @@ static inline void intent_init(struct lookup_intent *it, int op, int flags) it->it_flags = flags; } - struct dentry { int d_count; }; diff --git a/lustre/include/lustre_fld.h b/lustre/include/lustre_fld.h index 1b3ed54..105ad8a 100644 --- a/lustre/include/lustre_fld.h +++ b/lustre/include/lustre_fld.h @@ -23,6 +23,12 @@ #ifndef __LINUX_FLD_H #define __LINUX_FLD_H +#include +#include + +#include +#include + struct lu_client_fld; struct lu_server_fld; @@ -59,15 +65,9 @@ struct lu_server_fld { /* pointer to started server service */ struct ptlrpc_service *fld_service; - /* device for access object index methods */ - struct dt_device *fld_dt; - /* /fld file object device */ struct dt_object *fld_obj; - /* /fld file fid */ - struct lu_fid fld_fid; - /* fld service name in form "fld-MDTXXX" */ char fld_name[80]; }; diff --git a/lustre/lmv/lmv_internal.h b/lustre/lmv/lmv_internal.h index 9ba41e8..b5b850e 100644 --- a/lustre/lmv/lmv_internal.h +++ b/lustre/lmv/lmv_internal.h @@ -24,6 +24,15 @@ #include +#ifndef __KERNEL__ +/* XXX: dirty hack, needs to be fixed more clever way. */ +struct qstr { + const char *name; + size_t len; + unsigned hashval; +}; +#endif + #define LMV_MAX_TGT_COUNT 128 #define lmv_init_lock(lmv) down(&lmv->init_sem); -- 1.8.3.1