Whamcloud - gitweb
- last portion of cleanups and fixes after Nikita's CODEINSP;
authoryury <yury>
Fri, 11 Aug 2006 07:20:26 +0000 (07:20 +0000)
committeryury <yury>
Fri, 11 Aug 2006 07:20:26 +0000 (07:20 +0000)
- 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
lustre/fid/fid_internal.h
lustre/fid/fid_store.c
lustre/fld/fld_handler.c
lustre/fld/fld_index.c
lustre/fld/fld_internal.h
lustre/fld/fld_request.c
lustre/include/liblustre.h
lustre/include/lustre_fld.h
lustre/lmv/lmv_internal.h

index 5b92760..7f3090a 100644 (file)
@@ -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);
 
index 72a5861..0140fb7 100644 (file)
 #ifndef _FID_INTERNAL_H
 #define _FID_INTERNAL_H
 
-#define SEQ_SERVICE_WATCHDOG_TIMEOUT (obd_timeout * 1000)
+#include <lustre/lustre_idl.h>
+#include <dt_object.h>
 
-#ifdef LPROCFS
-extern struct lprocfs_vars seq_server_proc_list[];
-extern struct lprocfs_vars seq_client_proc_list[];
-#endif
+#include <libcfs/list.h>
+#include <libcfs/kp30.h>
+
+#include <linux/types.h>
+
+#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
index 3556738..00ec2e8 100644 (file)
@@ -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
index 2485cc0..1e0b03f 100644 (file)
@@ -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);
index 4378781..73c9332 100644 (file)
@@ -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) {
index 8f3dad2..9a1295a 100644 (file)
 #ifndef _FLD_INTERNAL_H
 #define _FLD_INTERNAL_H
 
+#include <lustre/lustre_idl.h>
+#include <dt_object.h>
+
+#include <libcfs/list.h>
+#include <libcfs/kp30.h>
+
 #include <linux/types.h>
 
 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
index 7389e4a..90b7888 100644 (file)
@@ -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
index aaa369d..b48cac9 100644 (file)
@@ -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;
 };
index 1b3ed54..105ad8a 100644 (file)
 #ifndef __LINUX_FLD_H
 #define __LINUX_FLD_H
 
+#include <lustre/lustre_idl.h>
+#include <dt_object.h>
+
+#include <libcfs/list.h>
+#include <libcfs/kp30.h>
+
 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];
 };
index 9ba41e8..b5b850e 100644 (file)
 
 #include <lustre/lustre_idl.h>
 
+#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);