On Tue, 2004-12-07 at 23:59 -0800, Sang Nguyen Van wrote:
> processing terminated:  12/8/2004 8:49:47  with return
> code: 10052  exit code: 8. [xchkdsk.c:472]

Here is a patch that should get you by this specific error, but I'm not
sure how much further you'll get.  This is a failure to read an inode
that isn't used.  fsck shouldn't give up here.  But with both the
journal superblock corrupt, and fsck unable to read this inode, I have a
suspicion that fsck won't get a whole lot farther.

If you can't get fsck to finish, you may try to mount the partition
read-only (mount -oro).  If that succeeds, you may be able to recover
some data.

> About the syslog, before we installed the new SuSe
> 9.2, my administrator checked the system and said
> there was an error message like the system is trying
> to write to the area out of the hardisk space (?!).
> I have a question: the problem comes from my old SuSe
> 7.3 (old kernel), and so the jfs handler or something
> else? Eventhough there may not be much hope for
> recovering the partition, I just don't want it to
> occur again!

I'm not sure what happened, but jfs is much more stable in SuSe 9.2 than
in 7.3.

> Thanks,
> Sang Nguyen.

Shaggy
-- 
David Kleikamp
IBM Linux Technology Center
Index: jfsutils/fsck/fsckmeta.c
===================================================================
RCS file: /usr/cvs/jfs/jfsutils/fsck/fsckmeta.c,v
retrieving revision 1.19
diff -u -p -r1.19 fsckmeta.c
--- jfsutils/fsck/fsckmeta.c	24 Sep 2004 14:43:53 -0000	1.19
+++ jfsutils/fsck/fsckmeta.c	8 Dec 2004 14:12:25 -0000
@@ -1370,8 +1370,9 @@ int validate_fs_metadata()
 	intermed_rc = inode_get(aggregate_inode, which_fsit, ino_idx, &ino_ptr);
 	if (intermed_rc != FSCK_OK) {
 		/* can't get the inode */
-		vfm_rc = FSCK_CANTREADFSEXT;
-		goto vfm_exit;		
+		//vfm_rc = FSCK_CANTREADFSEXT;
+		//goto vfm_exit;		
+		goto read_root; /* Who really cares? */
 	}
 	
 	/* got superinode extension inode  */
@@ -1379,14 +1380,16 @@ int validate_fs_metadata()
 	intermed_rc = verify_fs_super_ext(ino_ptr, msg_info_ptr,&inode_updated);
 	if (intermed_rc < 0) {
 		/* something really really bad happened */
-		vfm_rc = intermed_rc;
-		goto vfm_exit;		
+		//vfm_rc = intermed_rc;
+		//goto vfm_exit;		
+		goto read_root;
 	}
 	
 	if (intermed_rc != FSCK_OK) {
 		/* inode is bad */
-		vfm_rc = FSCK_FSETEXTBAD;
-		goto vfm_exit;		
+		//vfm_rc = FSCK_FSETEXTBAD;
+		//goto vfm_exit;
+		goto read_root;
 	}
 	
 	/* superinode extension inode is ok */
@@ -1394,8 +1397,8 @@ int validate_fs_metadata()
 		/* need to write the superinode extension */
 		vfm_rc = inode_put(ino_ptr);
 	}
-	if (vfm_rc != FSCK_OK)
-		goto vfm_exit;		
+	//if (vfm_rc != FSCK_OK)
+	//	goto vfm_exit;		
 			
 	/* read the root directory inode */
 	ino_idx = ROOT_I;

Reply via email to