Whamcloud - gitweb
- we could call this "merely a merge from b_devel". Notes:
authorbraam <braam>
Tue, 8 Jul 2003 22:41:20 +0000 (22:41 +0000)
committerbraam <braam>
Tue, 8 Jul 2003 22:41:20 +0000 (22:41 +0000)
 - lprocfs is not managable
 - this oopses on mount, will be fixed soon.

lnet/utils/wirecheck.c
lustre/ldlm/ldlm_lib.c
lustre/mdc/mdc_internal.h
lustre/mdc/mdc_lib.c
lustre/mds/mds_lib.c
lustre/portals/utils/wirecheck.c
lustre/utils/wirecheck.c

index 52a37c2..6a4377b 100644 (file)
@@ -30,25 +30,25 @@ do {                                                        \
 
 #define CHECK_MEMBER_OFFSET(s,m)               \
 do {                                           \
-       CHECK_VALUE (offsetof (s, m));  \
+       CHECK_VALUE(offsetof(s, m));            \
 } while (0)
 
-#define CHECK_MEMBER_SIZEOF(s,m)                       \
-do {                                                   \
-       CHECK_VALUE (sizeof (((s *)0)->m));     \
+#define CHECK_MEMBER_SIZEOF(s,m)               \
+do {                                           \
+       CHECK_VALUE((int)sizeof(((s *)0)->m));  \
 } while (0)
 
 #define CHECK_MEMBER(s,m)                      \
 do {                                           \
-       CHECK_MEMBER_OFFSET (s, m);             \
-       CHECK_MEMBER_SIZEOF (s, m);             \
+       CHECK_MEMBER_OFFSET(s, m);              \
+       CHECK_MEMBER_SIZEOF(s, m);              \
 } while (0)
 
 #define CHECK_STRUCT(s)                         \
 do {                                            \
-        BLANK_LINE ();                           \
+        BLANK_LINE ();                          \
         COMMENT ("Checks for struct "#s);       \
-       CHECK_VALUE (sizeof (s));               \
+       CHECK_VALUE((int)sizeof(s));            \
 } while (0)
 
 void
index 2616392..d6029f3 100644 (file)
@@ -32,7 +32,7 @@
 #include <linux/lustre_mds.h>
 #include <linux/lustre_net.h>
 
-int client_import_connect(struct lustre_handle *dlm_handle, 
+int client_import_connect(struct lustre_handle *dlm_handle,
                           struct obd_device *obd,
                           struct obd_uuid *cluuid)
 {
@@ -74,6 +74,8 @@ int client_import_connect(struct lustre_handle *dlm_handle,
         request->rq_level = LUSTRE_CONN_NEW;
         request->rq_replen = lustre_msg_size(0, NULL);
 
+        lustre_msg_add_op_flags(request->rq_reqmsg, MSG_CONNECT_PEER);
+
         imp->imp_dlm_handle = *dlm_handle;
 
         imp->imp_level = LUSTRE_CONN_CON;
@@ -92,6 +94,7 @@ int client_import_connect(struct lustre_handle *dlm_handle,
                 imp->imp_replayable = 1;
                 CDEBUG(D_HA, "connected to replayable target: %s\n",
                        imp->imp_target_uuid.uuid);
+                ptlrpc_pinger_add_import(imp);
         }
         imp->imp_level = LUSTRE_CONN_FULL;
         imp->imp_remote_handle = request->rq_repmsg->handle;
@@ -144,14 +147,14 @@ int client_import_disconnect(struct lustre_handle *dlm_handle, int failover)
         if (obd->obd_namespace != NULL) {
                 /* obd_no_recov == local only */
                 ldlm_cli_cancel_unused(obd->obd_namespace, NULL,
-                                       obd->obd_no_recov);
+                                       obd->obd_no_recov, NULL);
                 ldlm_namespace_free(obd->obd_namespace);
                 obd->obd_namespace = NULL;
         }
 
         /* Yeah, obd_no_recov also (mainly) means "forced shutdown". */
         if (obd->obd_no_recov) {
-                ptlrpc_abort_inflight(imp);
+                ptlrpc_set_import_active(imp, 0);
         } else {
                 request = ptlrpc_prep_req(imp, rq_opc, 0, NULL, NULL);
                 if (!request)
@@ -159,13 +162,13 @@ int client_import_disconnect(struct lustre_handle *dlm_handle, int failover)
 
                 request->rq_replen = lustre_msg_size(0, NULL);
 
-                /* Process disconnects even if we're waiting for recovery. */
-                request->rq_level = LUSTRE_CONN_RECOVD;
-
                 rc = ptlrpc_queue_wait(request);
                 if (rc)
                         GOTO(out_req, rc);
         }
+        if (imp->imp_replayable)
+                ptlrpc_pinger_del_import(imp);
+
         EXIT;
  out_req:
         if (request)
@@ -228,36 +231,32 @@ int target_handle_connect(struct ptlrpc_request *req, svc_handler_t handler)
         struct obd_uuid remote_uuid;
         struct list_head *p;
         char *str, *tmp;
-        int rc = 0, i, abort_recovery;
+        int rc = 0, abort_recovery;
+
         ENTRY;
 
         LASSERT_REQSWAB (req, 0);
-        str = lustre_msg_string (req->rq_reqmsg, 0, sizeof (tgtuuid.uuid) - 1);
+        str = lustre_msg_string(req->rq_reqmsg, 0, sizeof(tgtuuid) - 1);
         if (str == NULL) {
                 CERROR("bad target UUID for connect\n");
                 GOTO(out, rc = -EINVAL);
         }
+
         obd_str2uuid (&tgtuuid, str);
+        target = class_uuid2obd(&tgtuuid);
+        if (!target || target->obd_stopping || !target->obd_set_up) {
+                CERROR("UUID '%s' is not available for connect\n", str);
+                GOTO(out, rc = -ENODEV);
+        }
 
         LASSERT_REQSWAB (req, 1);
-        str = lustre_msg_string (req->rq_reqmsg, 1, sizeof (cluuid.uuid) - 1);
+        str = lustre_msg_string(req->rq_reqmsg, 1, sizeof(cluuid) - 1);
         if (str == NULL) {
                 CERROR("bad client UUID for connect\n");
                 GOTO(out, rc = -EINVAL);
         }
-        obd_str2uuid (&cluuid, str);
 
-        i = class_uuid2dev(&tgtuuid);
-        if (i == -1) {
-                CERROR("UUID '%s' not found for connect\n", tgtuuid.uuid);
-                GOTO(out, rc = -ENODEV);
-        }
-
-        target = &obd_dev[i];
-        if (!target || target->obd_stopping || !target->obd_set_up) {
-                CERROR("UUID '%s' is not available for connect\n", str);
-                GOTO(out, rc = -ENODEV);
-        }
+        obd_str2uuid (&cluuid, str);
 
         /* XXX extract a nettype and format accordingly */
         snprintf(remote_uuid.uuid, sizeof remote_uuid,
@@ -468,6 +467,7 @@ void target_abort_recovery(void *data)
         class_disconnect_exports(obd, 0);
         abort_delayed_replies(obd);
         abort_recovery_queue(obd);
+        ptlrpc_run_recovery_over_upcall(obd);
 }
 
 static void target_recovery_expired(unsigned long castmeharder)
@@ -489,8 +489,7 @@ static void reset_recovery_timer(struct obd_device *obd)
 
         if (!recovering)
                 return;
-        CDEBUG(D_ERROR, "timer will expire in %ld seconds\n",
-               OBD_RECOVERY_TIMEOUT / HZ);
+        CERROR("timer will expire in %ld seconds\n", OBD_RECOVERY_TIMEOUT / HZ);
         mod_timer(&obd->obd_recovery_timer, jiffies + OBD_RECOVERY_TIMEOUT);
 }
 
@@ -713,8 +712,7 @@ int target_queue_final_reply(struct ptlrpc_request *req, int rc)
         if (recovery_done) {
                 struct list_head *tmp, *n;
                 ldlm_reprocess_all_ns(req->rq_export->exp_obd->obd_namespace);
-                CDEBUG(D_ERROR,
-                       "%s: all clients recovered, sending delayed replies\n",
+                CERROR("%s: all clients recovered, sending delayed replies\n",
                        obd->obd_name);
                 obd->obd_recovering = 0;
                 list_for_each_safe(tmp, n, &obd->obd_delayed_reply_queue) {
index e39a0aa..49d85ab 100644 (file)
@@ -1,24 +1,25 @@
-void mds_pack_req_body(struct ptlrpc_request *);
-void mds_pack_rep_body(struct ptlrpc_request *);
-void mds_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
+void mdc_pack_req_body(struct ptlrpc_request *);
+void mdc_pack_rep_body(struct ptlrpc_request *);
+void mdc_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
                       obd_id ino, int type);
-void mds_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
+void mdc_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
                       int flags, struct mdc_op_data *data);
-void mds_setattr_pack(struct ptlrpc_request *req,
+void mdc_setattr_pack(struct ptlrpc_request *req,
                       struct mdc_op_data *data,
-                      struct iattr *iattr, void *ea, int ealen);
-void mds_create_pack(struct ptlrpc_request *req, int offset,
+                      struct iattr *iattr, void *ea, int ealen,
+                     void *ea2, int ea2len);
+void mdc_create_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *op_data,
                      __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time,
                      const void *data, int datalen);
-void mds_open_pack(struct ptlrpc_request *req, int offset,
+void mdc_open_pack(struct ptlrpc_request *req, int offset,
                    struct mdc_op_data *op_data,
                    __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time,
                    __u32 flags, const void *data, int datalen);
-void mds_unlink_pack(struct ptlrpc_request *req, int offset,
+void mdc_unlink_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *data);
-void mds_link_pack(struct ptlrpc_request *req, int offset,
+void mdc_link_pack(struct ptlrpc_request *req, int offset,
                    struct mdc_op_data *data);
-void mds_rename_pack(struct ptlrpc_request *req, int offset,
+void mdc_rename_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *data,
                      const char *old, int oldlen, const char *new, int newlen);
index 1396f8d..a17f7a1 100644 (file)
@@ -28,7 +28,7 @@
 #include <linux/lustre_mds.h>
 #include <linux/lustre_lite.h>
 
-void mds_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
+void mdc_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
                       obd_id ino, int type, __u64 xid)
 {
         struct mds_body *b;
@@ -45,7 +45,7 @@ void mds_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size,
         b->nlink = size;                        /* !! */
 }
 
-static void mds_pack_body(struct mds_body *b)
+static void mdc_pack_body(struct mds_body *b)
 {
         LASSERT (b != NULL);
 
@@ -54,14 +54,14 @@ static void mds_pack_body(struct mds_body *b)
         b->capability = current->cap_effective;
 }
 
-void mds_pack_req_body(struct ptlrpc_request *req)
+void mdc_pack_req_body(struct ptlrpc_request *req)
 {
         struct mds_body *b = lustre_msg_buf(req->rq_reqmsg, 0, sizeof (*b));
-        mds_pack_body(b);
+        mdc_pack_body(b);
 }
 
 /* packing of MDS records */
-void mds_create_pack(struct ptlrpc_request *req, int offset,
+void mdc_create_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *op_data,
                      __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time,
                      const void *data, int datalen)
@@ -94,12 +94,12 @@ void mds_create_pack(struct ptlrpc_request *req, int offset,
                 memcpy (tmp, data, datalen);
         }
 }
+
 /* packing of MDS records */
-void mds_open_pack(struct ptlrpc_request *req, int offset,
+void mdc_open_pack(struct ptlrpc_request *req, int offset,
                    struct mdc_op_data *op_data,
                    __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time,
-                   __u32 flags,
-                   const void *data, int datalen)
+                   __u32 flags, const void *data, int datalen)
 {
         struct mds_rec_create *rec;
         char *tmp;
@@ -110,8 +110,9 @@ void mds_open_pack(struct ptlrpc_request *req, int offset,
         rec->cr_fsuid = current->fsuid;
         rec->cr_fsgid = current->fsgid;
         rec->cr_cap = current->cap_effective;
-        ll_ino2fid(&rec->cr_fid, op_data->ino1,
-                   op_data->gen1, op_data->typ1);
+        if (op_data != NULL)
+                ll_ino2fid(&rec->cr_fid, op_data->ino1,
+                           op_data->gen1, op_data->typ1);
         memset(&rec->cr_replayfid, 0, sizeof(rec->cr_replayfid));
         rec->cr_mode = mode;
         rec->cr_flags = flags;
@@ -124,17 +125,22 @@ void mds_open_pack(struct ptlrpc_request *req, int offset,
         else
                 rec->cr_suppgid = -1;
 
-        tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1, op_data->namelen + 1);
-        LOGL0(op_data->name, op_data->namelen, tmp);
+        if (op_data->name) {
+                tmp = lustre_msg_buf(req->rq_reqmsg, offset + 1,
+                                     op_data->namelen + 1);
+                LOGL0(op_data->name, op_data->namelen, tmp);
+        }
 
         if (data) {
                 tmp = lustre_msg_buf(req->rq_reqmsg, offset + 2, datalen);
                 memcpy (tmp, data, datalen);
         }
 }
-void mds_setattr_pack(struct ptlrpc_request *req,
+
+void mdc_setattr_pack(struct ptlrpc_request *req,
                       struct mdc_op_data *data,
-                      struct iattr *iattr, void *ea, int ealen)
+                      struct iattr *iattr, void *ea, int ealen,
+                      void *ea2, int ea2len)
 {
         struct mds_rec_setattr *rec = lustre_msg_buf(req->rq_reqmsg, 0,
                                                      sizeof (*rec));
@@ -164,11 +170,18 @@ void mds_setattr_pack(struct ptlrpc_request *req,
                         rec->sa_suppgid = -1;
         }
 
-        if (ealen != 0)
-                memcpy(lustre_msg_buf(req->rq_reqmsg, 1, ealen), ea, ealen);
+        if (ealen == 0)
+                return;
+
+        memcpy(lustre_msg_buf(req->rq_reqmsg, 1, ealen), ea, ealen);
+
+        if (ea2len == 0)
+                return;
+
+        memcpy(lustre_msg_buf(req->rq_reqmsg, 2, ea2len), ea2, ea2len);
 }
 
-void mds_unlink_pack(struct ptlrpc_request *req, int offset,
+void mdc_unlink_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *data)
 {
         struct mds_rec_unlink *rec;
@@ -195,7 +208,7 @@ void mds_unlink_pack(struct ptlrpc_request *req, int offset,
         LOGL0(data->name, data->namelen, tmp);
 }
 
-void mds_link_pack(struct ptlrpc_request *req, int offset,
+void mdc_link_pack(struct ptlrpc_request *req, int offset,
                    struct mdc_op_data *data)
 {
         struct mds_rec_link *rec;
@@ -222,7 +235,7 @@ void mds_link_pack(struct ptlrpc_request *req, int offset,
         LOGL0(data->name, data->namelen, tmp);
 }
 
-void mds_rename_pack(struct ptlrpc_request *req, int offset,
+void mdc_rename_pack(struct ptlrpc_request *req, int offset,
                      struct mdc_op_data *data,
                      const char *old, int oldlen, const char *new, int newlen)
 {
@@ -256,7 +269,7 @@ void mds_rename_pack(struct ptlrpc_request *req, int offset,
         }
 }
 
-void mds_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
+void mdc_getattr_pack(struct ptlrpc_request *req, int valid, int offset,
                       int flags, struct mdc_op_data *data)
 {
         struct mds_body *b;
index 8f16795..a72e176 100644 (file)
@@ -80,10 +80,12 @@ void mds_pack_inode2body(struct mds_body *b, struct inode *inode)
         b->gid = inode->i_gid;
         b->flags = inode->i_flags;
         b->rdev = b->rdev;
-        b->nlink = inode->i_nlink;
+        /* Return the correct link count for orphan inodes */
+        b->nlink = mds_inode_is_orphan(inode) ? 0 : inode->i_nlink;
         b->generation = inode->i_generation;
         b->suppgid = -1;
 }
+
 /* unpacking */
 static int mds_setattr_unpack(struct ptlrpc_request *req, int offset,
                               struct mds_update_record *r)
@@ -92,8 +94,8 @@ static int mds_setattr_unpack(struct ptlrpc_request *req, int offset,
         struct mds_rec_setattr *rec;
         ENTRY;
 
-        rec = lustre_swab_reqbuf (req, offset, sizeof (*rec),
-                                  lustre_swab_mds_rec_setattr);
+        rec = lustre_swab_reqbuf(req, offset, sizeof(*rec),
+                                 lustre_swab_mds_rec_setattr);
         if (rec == NULL)
                 RETURN (-EFAULT);
 
@@ -120,9 +122,14 @@ static int mds_setattr_unpack(struct ptlrpc_request *req, int offset,
                 if (r->ur_eadata == NULL)
                         RETURN (-EFAULT);
                 r->ur_eadatalen = req->rq_reqmsg->buflens[offset + 1];
-        } else {
-                r->ur_eadata = NULL;
-                r->ur_eadatalen = 0;
+        }
+
+        if (req->rq_reqmsg->bufcount > offset + 2) {
+                r->ur_logcookies = lustre_msg_buf(req->rq_reqmsg, offset + 2,0);
+                if (r->ur_eadata == NULL)
+                        RETURN (-EFAULT);
+
+                r->ur_cookielen = req->rq_reqmsg->buflens[offset + 2];
         }
 
         RETURN(0);
@@ -172,9 +179,6 @@ static int mds_create_unpack(struct ptlrpc_request *req, int offset,
                 if (r->ur_tgt == NULL)
                         RETURN (-EFAULT);
                 r->ur_tgtlen = req->rq_reqmsg->buflens[offset + 2];
-        } else {
-                r->ur_tgt = NULL;
-                r->ur_tgtlen = 0;
         }
         RETURN(0);
 }
index 52a37c2..6a4377b 100644 (file)
@@ -30,25 +30,25 @@ do {                                                        \
 
 #define CHECK_MEMBER_OFFSET(s,m)               \
 do {                                           \
-       CHECK_VALUE (offsetof (s, m));  \
+       CHECK_VALUE(offsetof(s, m));            \
 } while (0)
 
-#define CHECK_MEMBER_SIZEOF(s,m)                       \
-do {                                                   \
-       CHECK_VALUE (sizeof (((s *)0)->m));     \
+#define CHECK_MEMBER_SIZEOF(s,m)               \
+do {                                           \
+       CHECK_VALUE((int)sizeof(((s *)0)->m));  \
 } while (0)
 
 #define CHECK_MEMBER(s,m)                      \
 do {                                           \
-       CHECK_MEMBER_OFFSET (s, m);             \
-       CHECK_MEMBER_SIZEOF (s, m);             \
+       CHECK_MEMBER_OFFSET(s, m);              \
+       CHECK_MEMBER_SIZEOF(s, m);              \
 } while (0)
 
 #define CHECK_STRUCT(s)                         \
 do {                                            \
-        BLANK_LINE ();                           \
+        BLANK_LINE ();                          \
         COMMENT ("Checks for struct "#s);       \
-       CHECK_VALUE (sizeof (s));               \
+       CHECK_VALUE((int)sizeof(s));            \
 } while (0)
 
 void
index 7f2c3d0..5b6a589 100644 (file)
@@ -17,34 +17,34 @@ do {                                                \
 
 #define CHECK_DEFINE(a)                                                \
 do {                                                           \
-       printf ("        LASSERT ("#a" == "STRINGIFY(a)");\n"); \
+       printf("        LASSERT ("#a" == "STRINGIFY(a)");\n");  \
 } while (0)
 
 #define CHECK_VALUE(a)                                 \
 do {                                                   \
-       printf ("        LASSERT ("#a" == %d);\n", a);  \
+       printf("        LASSERT ("#a" == %d);\n", a);   \
 } while (0)
 
 #define CHECK_MEMBER_OFFSET(s,m)               \
 do {                                           \
-       CHECK_VALUE (offsetof (struct s, m));   \
+       CHECK_VALUE(offsetof (struct s, m));    \
 } while (0)
 
 #define CHECK_MEMBER_SIZEOF(s,m)                       \
 do {                                                   \
-       CHECK_VALUE (sizeof (((struct s *)0)->m));      \
+       CHECK_VALUE((int)sizeof(((struct s *)0)->m));   \
 } while (0)
 
 #define CHECK_MEMBER(s,m)                      \
 do {                                           \
-       CHECK_MEMBER_OFFSET (s, m);             \
-       CHECK_MEMBER_SIZEOF (s, m);             \
+       CHECK_MEMBER_OFFSET(s, m);              \
+       CHECK_MEMBER_SIZEOF(s, m);              \
 } while (0)
 
 #define CHECK_STRUCT(s)                                \
 do {                                           \
-        COMMENT ("Checks for struct "#s);      \
-       CHECK_VALUE (sizeof (struct s));        \
+        COMMENT("Checks for struct "#s);       \
+       CHECK_VALUE((int)sizeof(struct s));     \
 } while (0)