From: Dave Chinner <david@fromorbit.com>
To: Mark Tinguely <tinguely@sgi.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH V2 00/13] xfs: remove the xfssyncd mess
Date: Mon, 3 Sep 2012 14:05:23 +1000 [thread overview]
Message-ID: <20120903040523.GP15292@dastard> (raw)
In-Reply-To: <5040C3A0.2050107@sgi.com>
On Fri, Aug 31, 2012 at 09:01:04AM -0500, Mark Tinguely wrote:
> On 08/30/12 07:00, Dave Chinner wrote:
> >Version 2 of the patchset I described here:
> >
> >http://oss.sgi.com/archives/xfs/2012-06/msg00064.html
> >
> >This version has run through xfstests completely once, so it's
> >less likely to let smoke out....
> >
> >Version 2:
> >- fix writeback_inodes_sb_if_idle call in xfs_create()
> >- refreshed patch 13 before sending.
> >
> >_______________________________________________
> >xfs mailing list
> >xfs@oss.sgi.com
> >http://oss.sgi.com/mailman/listinfo/xfs
>
> I wanted to get a fast look at your patch series. I am getting the
> following ASSERT on xfstest 179 when running the series with the
> latest OSS soruces.The ASSERT appears to start at patch number 3.
> Sorry these boxes won't kdump the top of tree kernels:
>
> [17474.545964] XFS: Assertion failed: atomic_read(&bp->b_hold) > 0,
> file: /root/xfs/fs/xfs/xfs_buf.c, line: 896
FWIW, when you paste stack traces, can you turn off line wrapping
when you paste it so the crash is simple to quote in reply? (use
:set paste in mutt, the :set nopaste when finished pasting it in).
> [17474.559784] Process umount (pid: 26427, threadinfo
...
> [17474.559784] Call Trace:
> [17474.559784] [<ffffffffa05b4ed4>] xfs_buf_rele+0xa4/0x1b0 [xfs]
> [17474.559784] [<ffffffffa05b5b86>] xfs_buf_iodone_work+0x46/0x50 [xfs]
> [17474.559784] [<ffffffffa05b5c26>] xfs_buf_ioend+0x96/0x120 [xfs]
> [17474.559784] [<ffffffffa061e939>] xfs_buf_iodone_callbacks+0x59/0x230 [xfs]
> [17474.559784] [<ffffffffa05b5b61>] xfs_buf_iodone_work+0x21/0x50 [xfs]
> [17474.559784] [<ffffffffa05b5c26>] xfs_buf_ioend+0x96/0x120 [xfs]
> [17474.559784] [<ffffffffa061f7e9>] xfs_buf_item_unpin+0x289/0x2d0 [xfs]
> [17474.559784] [<ffffffffa0617c33>] xfs_trans_committed_bulk+0x213/0x300 [xfs]
> [17474.559784] [<ffffffffa061dde6>] xlog_cil_committed+0x36/0x130 [xfs]
> [17474.559784] [<ffffffffa061e1e8>] xlog_cil_push+0x308/0x430 [xfs]
> [17474.559784] [<ffffffffa061e466>] xlog_cil_force_lsn+0x146/0x1b0 [xfs]
> [17474.559784] [<ffffffffa061c1e4>] _xfs_log_force+0x64/0x280 [xfs]
> [17474.559784] [<ffffffffa061c454>] xfs_log_force+0x54/0x80 [xfs]
> [17474.559784] [<ffffffffa05c65dd>] xfs_fs_sync_fs+0x2d/0x50 [xfs]
> [17474.559784] [<ffffffff8118c00b>] __sync_filesystem+0x2b/0x50
> [17474.559784] [<ffffffff8118c073>] sync_filesystem+0x43/0x60
> [17474.559784] [<ffffffff81160846>] generic_shutdown_super+0x36/0xe0
> [17474.559784] [<ffffffff8116091c>] kill_block_super+0x2c/0x80
> [17474.559784] [<ffffffff81160e78>] deactivate_locked_super+0x38/0x90
> [17474.559784] [<ffffffff81161951>] deactivate_super+0x61/0x70
> [17474.559784] [<ffffffff8117c659>] mntput_no_expire+0x149/0x1b0
> [17474.559784] [<ffffffff8117d10e>] sys_umount+0x6e/0xd0
Nothing has been shut down in XFS at this point (i.e. .put_super()
has not yet been called) so none of the shutdown changes could have
caused this problem.
Indeed, it looks like this is during a forced shutdown here in
xfs_buf_item_unpin:
} else if (freed && remove) {
xfs_buf_lock(bp);
xfs_buf_ioerror(bp, EIO);
XFS_BUF_UNDONE(bp);
xfs_buf_stale(bp);
>>>>>> xfs_buf_ioend(bp, 0);
}
Now, xfs_buf_stale() does this:
ASSERT(atomic_read(&bp->b_hold) >= 1);
Which means that in calling xfs_buf_ioend(), at least two references
to the buffer are being dropped. Working out why that is occurring
will find the root cause of this problem.
All that I can say at this point is that I find it highly unlikely
that it is caused by the changes in this patchset.
> I got this ASSERT when I ran it on the 8/27 OSS sources:
>
> [188646.952426] XFS: Assertion failed:
> atomic_read(&iclog->ic_refcnt) == 0, file:
> /root/xfs/fs/xfs/xfs_log.c, line: 2590
> [188646.967020] Process kworker/2:1H (pid: 356, threadinfo ffff8808396a4000, task ffff88083a9aa1c0)
> [188646.967020] Call Trace:
> [188646.967020] [<ffffffffa01dd2bf>] xlog_state_done_syncing+0x7f/0x110 [xfs]
> [188646.967020] [<ffffffffa01ddbde>] xlog_iodone+0x7e/0x100 [xfs]
> [188646.967020] [<ffffffffa0179b51>] xfs_buf_iodone_work+0x21/0x50 [xfs]
> [188646.967020] [<ffffffff8105d6b3>] process_one_work+0x1d3/0x370
> [188646.967020] [<ffffffff810603e3>] worker_thread+0x133/0x390
> [188646.967020] [<ffffffff810651ce>] kthread+0x9e/0xb0
> [188646.967020] [<ffffffff8143e504>] kernel_thread_helper+0x4/0x10
I've never seen that ASSERT fire. That implies we've got a log
buffer that is being actively modified under IO, but I cannot see
how that would happen. Was this during an unmount? What test?
/me is starting to wonder about memory errors...
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-09-03 4:04 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-30 12:00 [PATCH V2 00/13] xfs: remove the xfssyncd mess Dave Chinner
2012-08-30 12:00 ` [PATCH 01/13] xfs: xfs_syncd_stop must die Dave Chinner
2012-09-01 23:15 ` Christoph Hellwig
2012-09-04 16:10 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 02/13] xfs: rename the xfs_syncd workqueue Dave Chinner
2012-09-01 23:17 ` Christoph Hellwig
2012-09-03 3:09 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 03/13] xfs: rationalise xfs_mount_wq users Dave Chinner
2012-09-04 15:48 ` Mark Tinguely
2012-09-05 4:30 ` Dave Chinner
2012-09-05 13:16 ` Mark Tinguely
2012-09-05 14:34 ` Mark Tinguely
2012-09-06 0:46 ` Dave Chinner
2012-09-06 15:08 ` Mark Tinguely
2012-09-07 0:41 ` Dave Chinner
2012-09-11 21:25 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 04/13] xfs: don't run the sync work if the filesyste is read-only Dave Chinner
2012-09-04 16:13 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 05/13] xfs: sync work is now only periodic log work Dave Chinner
2012-09-01 23:23 ` Christoph Hellwig
2012-09-03 3:36 ` Dave Chinner
2012-09-04 16:14 ` Mark Tinguely
2012-09-04 18:57 ` Mark Tinguely
2012-09-05 4:35 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 06/13] xfs: Bring some sanity to log unmounting Dave Chinner
2012-09-01 23:28 ` Christoph Hellwig
2012-09-04 19:11 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 07/13] xfs: xfs_sync_data is redundant Dave Chinner
2012-09-01 23:24 ` Christoph Hellwig
2012-09-03 6:08 ` Dave Chinner
2012-09-04 20:48 ` Mark Tinguely
2012-09-06 0:53 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 08/13] xfs: xfs_sync_fsdata " Dave Chinner
2012-09-01 23:27 ` Christoph Hellwig
2012-09-04 20:59 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 09/13] xfs: move xfs_quiesce_attr() into xfs_super.c Dave Chinner
2012-09-01 23:27 ` Christoph Hellwig
2012-09-04 21:03 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 10/13] xfs: xfs_quiesce_attr() should quiesce the log like unmount Dave Chinner
2012-09-01 23:29 ` Christoph Hellwig
2012-09-04 21:04 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 11/13] xfs: rename xfs_sync.[ch] to xfs_icache.[ch] Dave Chinner
2012-09-01 23:30 ` Christoph Hellwig
2012-09-04 21:06 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 12/13] xfs: move inode locking functions to xfs_inode.c Dave Chinner
2012-09-01 23:30 ` Christoph Hellwig
2012-09-04 21:07 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 13/13] xfs: remove xfs_iget.c Dave Chinner
2012-09-01 23:31 ` Christoph Hellwig
2012-09-04 21:11 ` Mark Tinguely
2012-08-30 12:15 ` [PATCH V2 00/13] xfs: remove the xfssyncd mess Markus Trippelsdorf
2012-08-30 22:51 ` Dave Chinner
2012-08-31 6:18 ` Markus Trippelsdorf
2012-08-31 8:42 ` Dave Chinner
2012-08-31 9:30 ` Markus Trippelsdorf
2012-08-31 14:01 ` Mark Tinguely
2012-09-03 4:05 ` Dave Chinner [this message]
2012-09-04 0:13 ` Mark Tinguely
2012-09-25 9:26 ` Christoph Hellwig
2012-09-25 9:35 ` Dave Chinner
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=20120903040523.GP15292@dastard \
--to=david@fromorbit.com \
--cc=tinguely@sgi.com \
--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 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.