From: Dave Chinner <david@fromorbit.com>
To: Alexander Tsvetkov <alexander.tsvetkov@oracle.com>
Cc: Eric Sandee <sandeen@sandeen.net>, xfs@oss.sgi.com
Subject: Re: xfs_logprint segfault with external log
Date: Fri, 13 Feb 2015 10:09:40 +1100 [thread overview]
Message-ID: <20150212230940.GD12722@dastard> (raw)
In-Reply-To: <54DC940D.4030009@oracle.com>
On Thu, Feb 12, 2015 at 02:52:45PM +0300, Alexander Tsvetkov wrote:
> On 02/11/2015 11:54 PM, Dave Chinner wrote:
> >On Wed, Feb 11, 2015 at 04:51:44PM +0300, Alexander Tsvetkov wrote:
> >>Hello,
> >>
> >>I've obtained corrupted xfs log after some sanity xfs testing:
> >>
> >>"log=logfile
> >>log_size=855
> >>
> >>dd if=/dev/zero "of=$log" bs=4096 count=$log_size
> >>loopdev=$(losetup -f)
> >>losetup $loopdev $log
> >>
> >>mkfs.xfs -f -m crc=1 -llogdev=$loopdev,size=${log_size}b $SCRATCH_DEV
> >>mount -t xfs -ologdev=$loopdev $SCRATCH_DEV $SCRATCH_MNT
> >>./fdtree.sh -l 4 -d 4 -C -o $SCRATCH_MNT
> >>sync
> >>umount $SCRATCH_MNT
> >>
> >>xfs_logprint -l $loopdev $SCRATCH_DEV"
> >>
> >>Test makes crc enabled xfs filesystem with the external log of
> >>minimal allowed size and then creates on this fs the small directory
> >>tree
> >>with sub directories and files of fixed depth and size with help of
> >>fdtree utility:
> >>https://computing.llnl.gov/?set=code&page=sio_downloads
> >Just take metadump image and put it somewhere we can down load it.
> >
> >>After that xfs_logprint stably reports bad data in log:
Please try the patch below, it fixes the problem on the image you
provided.
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
logprint: fix inode fork print record overrun
From: Dave Chinner <dchinner@redhat.com>
logprint checks for whether the inode log item extends across a log
record boundary so that it doesn't try to dereference beyond the ned
of the buffer containing the log items. It doesn' however, take into
account log items with attribute forks in them, and so doesn't catch
the overrun in this case. Fix it.
reported-by: Alexander Tsvetkov <alexander.tsvetkov@oracle.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
logprint/log_misc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/logprint/log_misc.c b/logprint/log_misc.c
index 521ab66..e4f2174 100644
--- a/logprint/log_misc.c
+++ b/logprint/log_misc.c
@@ -698,7 +698,7 @@ xlog_print_trans_inode(
xlog_print_trans_inode_core(&dino);
*ptr += xfs_icdinode_size(dino.di_version);
- if (*i == num_ops-1 && f->ilf_size == 3) {
+ if (*i == num_ops-1 && f->ilf_size >= 3) {
return 1;
}
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2015-02-12 23:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-11 13:51 xfs_logprint segfault with external log Alexander Tsvetkov
2015-02-11 15:51 ` Eric Sandeen
2015-02-11 20:54 ` Dave Chinner
2015-02-12 11:52 ` Alexander Tsvetkov
2015-02-12 23:09 ` Dave Chinner [this message]
2015-02-16 13:55 ` Alexander Tsvetkov
2015-02-17 1:38 ` Dave Chinner
2015-02-17 9:26 ` Alexander Tsvetkov
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=20150212230940.GD12722@dastard \
--to=david@fromorbit.com \
--cc=alexander.tsvetkov@oracle.com \
--cc=sandeen@sandeen.net \
--cc=xfs@oss.sgi.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox