Whamcloud - gitweb
don't confuse mds_finish_transno() with PTR_ERR(-ENOENT)
authorshadow <shadow>
Tue, 20 Jan 2009 08:59:37 +0000 (08:59 +0000)
committershadow <shadow>
Tue, 20 Jan 2009 08:59:37 +0000 (08:59 +0000)
Branch b_release_1_6_7
b=18238
i=green
i=umka

lustre/ChangeLog
lustre/mds/mds_open.c
lustre/mds/mds_reint.c

index e229ea5..3634f99 100644 (file)
          information, please refer to bugzilla 17630.
 
 Severity   : normal
-Frequency  : rarw
+Frequency  : rare
+Bugzilla   : 18238
+Descriptoin: panic in mds_open
+Details    : don't confuse mds_finish_transno() with PTR_ERR(-ENOENT)
+
+Severity   : normal
+Frequency  : rare
 Bugzilla   : 17972
 Descriptoin: stuck in cache_remove_extent() or panic with accessing to already
              freed look.
index e0959e7..b9bb335 100644 (file)
@@ -1067,12 +1067,6 @@ int mds_open(struct mds_update_record *rec, int offset,
                 dchild = dget(dparent);
         }
 
-        if (IS_ERR(dchild)) {
-                rc = PTR_ERR(dchild);
-                dchild = NULL; /* don't confuse mds_finish_transno() below */
-                GOTO(cleanup, rc);
-        }
-
         if (rec->ur_flags & MDS_OPEN_JOIN_FILE) {
                 acc_mode = accmode(dchild->d_inode, rec->ur_flags);
                 GOTO(found_child, rc);
index 5268880..4921f93 100644 (file)
@@ -1455,6 +1455,7 @@ int mds_get_parent_child_locked(struct obd_device *obd, struct mds_obd *mds,
         *dchildp = ll_lookup_one_len(name, *dparentp, namelen - 1);
         if (IS_ERR(*dchildp)) {
                 rc = PTR_ERR(*dchildp);
+                *dchildp = NULL;
                 CDEBUG(D_INODE, "child lookup error %d\n", rc);
                 GOTO(cleanup, rc);
         }