Whamcloud - gitweb
- Updated changelog
authorpschwan <pschwan>
Wed, 13 Nov 2002 19:31:42 +0000 (19:31 +0000)
committerpschwan <pschwan>
Wed, 13 Nov 2002 19:31:42 +0000 (19:31 +0000)
- Better errors when the LDLM service can't be started
- Remove unnecessary flag from OSC lock cancellation in clear_inode
- If lov_enqueue fails to allocate a lock, zero the handle, so that we don't
  try to decref a bad handle (and LBUG) later

lustre/ChangeLog
lustre/ldlm/ldlm_lockd.c
lustre/llite/super.c
lustre/lov/lov_obd.c

index 3421e0e..d2ac804 100644 (file)
@@ -15,6 +15,7 @@ TBD
          - data locks weren't cancelled at clear_inode time (290, 311)
          - intent locks could lead to unbounded lock growth (205)
          - added a maximum lock count, an LRU list, and a flusher
          - data locks weren't cancelled at clear_inode time (290, 311)
          - intent locks could lead to unbounded lock growth (205)
          - added a maximum lock count, an LRU list, and a flusher
+         - fix multiple rename (365)
        * protocol change
           - Add capability to MDS protocol
          - LDLM cancellations and callbacks on different portals
        * protocol change
           - Add capability to MDS protocol
          - LDLM cancellations and callbacks on different portals
index 739b609..973d565 100644 (file)
@@ -606,8 +606,10 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf)
                                 LDLM_CB_REPLY_PORTAL, "self",
                                 ldlm_callback_handler, "ldlm_cbd");
 
                                 LDLM_CB_REPLY_PORTAL, "self",
                                 ldlm_callback_handler, "ldlm_cbd");
 
-        if (!ldlm->ldlm_cb_service)
+        if (!ldlm->ldlm_cb_service) {
+                CERROR("failed to start service\n");
                 GOTO(out_proc, rc = -ENOMEM);
                 GOTO(out_proc, rc = -ENOMEM);
+        }
 
         ldlm->ldlm_cancel_service =
                 ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE,
 
         ldlm->ldlm_cancel_service =
                 ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE,
@@ -615,8 +617,10 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf)
                                 LDLM_CANCEL_REPLY_PORTAL, "self",
                                 ldlm_cancel_handler, "ldlm_canceld");
 
                                 LDLM_CANCEL_REPLY_PORTAL, "self",
                                 ldlm_cancel_handler, "ldlm_canceld");
 
-        if (!ldlm->ldlm_cancel_service)
+        if (!ldlm->ldlm_cancel_service) {
+                CERROR("failed to start service\n");
                 GOTO(out_proc, rc = -ENOMEM);
                 GOTO(out_proc, rc = -ENOMEM);
+        }
 
         for (i = 0; i < LDLM_NUM_THREADS; i++) {
                 char name[32];
 
         for (i = 0; i < LDLM_NUM_THREADS; i++) {
                 char name[32];
index 027ee50..a348883 100644 (file)
@@ -298,8 +298,7 @@ static void ll_clear_inode(struct inode *inode)
         }
 
         if (lli->lli_smd) {
         }
 
         if (lli->lli_smd) {
-                rc = obd_cancel_unused(&sbi->ll_osc_conn, lli->lli_smd,
-                                       LDLM_FL_NO_CALLBACK);
+                rc = obd_cancel_unused(&sbi->ll_osc_conn, lli->lli_smd, 0);
                 if (rc < 0) {
                         CERROR("obd_cancel_unused: %d\n", rc);
                         /* XXX FIXME do something dramatic */
                 if (rc < 0) {
                         CERROR("obd_cancel_unused: %d\n", rc);
                         /* XXX FIXME do something dramatic */
index 132fdd4..7d41e3b 100644 (file)
@@ -1157,10 +1157,12 @@ static int lov_enqueue(struct lustre_handle *conn, struct lov_stripe_md *lsm,
                                  parent_lock, type, &sub_ext, sizeof(sub_ext),
                                  mode, flags, cb, data, datalen, &(lockhs[i]));
                 // XXX add a lock debug statement here
                                  parent_lock, type, &sub_ext, sizeof(sub_ext),
                                  mode, flags, cb, data, datalen, &(lockhs[i]));
                 // XXX add a lock debug statement here
-                if (rc)
+                if (rc) {
                         CERROR("Error enqueue objid "LPX64" subobj "LPX64
                                " on OST idx %d: rc = %d\n", lsm->lsm_object_id,
                                loi->loi_id, loi->loi_ost_idx, rc);
                         CERROR("Error enqueue objid "LPX64" subobj "LPX64
                                " on OST idx %d: rc = %d\n", lsm->lsm_object_id,
                                loi->loi_id, loi->loi_ost_idx, rc);
+                        memset(&(lockhs[i]), 0, sizeof(lockhs[i]));
+                }
         }
         RETURN(rc);
 }
         }
         RETURN(rc);
 }