All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Scott <nathans@sgi.com>
To: Sonny Rao <sonny@burdell.org>, Dave Jones <davej@redhat.com>,
	Jan Engelhardt <jengelh@linux01.gwdg.de>, bjd <bjdouma@xs4all.nl>,
	linux-kernel@vger.kernel.org, linux-xfs@oss.sgi.com
Subject: Re: kernel oops: trying to mount a corrupted xfs partition (2.6.16-rc3)
Date: Tue, 21 Feb 2006 13:04:47 +1100	[thread overview]
Message-ID: <20060221020447.GB1588@frodo> (raw)
In-Reply-To: <20060220070916.GA8101@kevlar.burdell.org>

On Mon, Feb 20, 2006 at 02:09:16AM -0500, Sonny Rao wrote:
> On Sun, Feb 19, 2006 at 04:52:09PM -0500, Dave Jones wrote:
> <snip> 
> > Just for kicks, I just hacked this up..
> > 
> > #!/bin/bash
> > wget http://www.digitaldwarf.be/products/mangle.c
> > gcc mangle.c -o mangle
> > 
> > dd if=/dev/zero of=data.img count=70000
> > 
> > while [ 1 ];
> > do
> >         mkfs.xfs -f data.img >/dev/null
> > 		./mangle data.img $RANDOM
> >         sudo mount -t xfs data.img mntpt -o loop
> >         sudo ls -R mntpt
> >         sudo umount mntpt
> > done
> ...
> > 
> > xfs wins the award for 'noisiest fs in the face of corruption' :-)
> > After a few dozen backtraces from xfs_corruption_error,
> > this fell out...
> > 
> > divide error: 0000 [1] SMP
> <snip trace>
>  
> > (The kernel is based on 2.6.16rc4)
> 
> I see a similar breakage (divide error) on x86 using 2.6.15

>From a quick look at the image you sent me Sonny, I guess this is
the same problem Dave was seeing too -- a divide by zero when we're
working out some of the per-mount constants during mount(2).  There
is probably one or two other superblock fields that could use more
verification, but this will do for now.

cheers.

-- 
Nathan


Index: xfs-linux/xfs_mount.c
===================================================================
--- xfs-linux.orig/xfs_mount.c
+++ xfs-linux/xfs_mount.c
@@ -268,9 +268,12 @@ xfs_mount_validate_sb(
 	    sbp->sb_blocklog > XFS_MAX_BLOCKSIZE_LOG			||
 	    sbp->sb_inodesize < XFS_DINODE_MIN_SIZE			||
 	    sbp->sb_inodesize > XFS_DINODE_MAX_SIZE			||
+	    sbp->sb_inodelog < XFS_DINODE_MIN_LOG			||
+	    sbp->sb_inodelog > XFS_DINODE_MAX_LOG			||
+	    (sbp->sb_blocklog - sbp->sb_inodelog != sbp->sb_inopblog)	||
 	    (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE)	||
 	    (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE)	||
-	    sbp->sb_imax_pct > 100)) {
+	    (sbp->sb_imax_pct > 100 || sbp->sb_imax_pct < 1))) {
 		cmn_err(CE_WARN, "XFS: SB sanity check 1 failed");
 		XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(3)",
 				     XFS_ERRLEVEL_LOW, mp, sbp);

  parent reply	other threads:[~2006-02-21  2:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-16 18:36 kernel oops: trying to mount a corrupted xfs partition (2.6.16-rc3) bjd
2006-02-16 19:31 ` Nathan Scott
2006-02-17 16:54   ` Jan Engelhardt
2006-02-19 21:29     ` Nathan Scott
2006-02-19 21:52       ` Dave Jones
2006-02-20  7:09         ` Sonny Rao
2006-02-20  7:21           ` Hans Reiser
2006-02-20 16:41             ` Sonny Rao
2006-02-20 17:11               ` Sonny Rao
2006-02-21  2:04           ` Nathan Scott [this message]
2006-02-21  4:06             ` Sonny Rao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060221020447.GB1588@frodo \
    --to=nathans@sgi.com \
    --cc=bjdouma@xs4all.nl \
    --cc=davej@redhat.com \
    --cc=jengelh@linux01.gwdg.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@oss.sgi.com \
    --cc=sonny@burdell.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.