public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: Stefan Priebe - Profihost AG <s.priebe@profihost.ag>
Cc: "xfs-masters@oss.sgi.com" <xfs-masters@oss.sgi.com>,
	"xfs@oss.sgi.com" <xfs@oss.sgi.com>
Subject: Re: xfs trace in 4.4.2 / also in 4.3.3 WARNING fs/xfs/xfs_aops.c:1232 xfs_vm_releasepage
Date: Wed, 11 May 2016 11:59:52 -0400	[thread overview]
Message-ID: <20160511155951.GF42410@bfoster.bfoster> (raw)
In-Reply-To: <57333BA4.4040402@profihost.ag>

Dropped non-XFS cc's, probably no need to spam other lists at this
point...

On Wed, May 11, 2016 at 04:03:16PM +0200, Stefan Priebe - Profihost AG wrote:
> 
> Am 11.05.2016 um 15:34 schrieb Brian Foster:
> > On Wed, May 11, 2016 at 02:26:48PM +0200, Stefan Priebe - Profihost AG wrote:
> >> Hi Brian,
> >>
> >> i'm still unable to grab anything to the trace file? Is there anything
> >> to check if it's working at all?
> >>
> > 
> > See my previous mail:
> > 
> > http://oss.sgi.com/pipermail/xfs/2016-March/047793.html
> > 
> > E.g., something like this should work after writing to and removing a
> > new file:
> > 
> > # trace-cmd start -e "xfs:xfs_releasepage"
> > # cat /sys/kernel/debug/tracing/trace_pipe
> > ...
> > rm-8198  [000] ....  9445.774070: xfs_releasepage: dev 253:4 ino 0x69 pgoff 0x9ff000 size 0xa00000 offset 0 length 0 delalloc 0 unwritten 0
> 
> arg sorry yes that's working but delalloc is always 0.
> 

Hrm, Ok. That is strange.

> May be i have to hook that into my initramfs to be fast enough?
> 

Not sure that would matter.. you said it occurs within 48 hours? I take
that to mean it doesn't occur immediately on boot. You should be able to
tell from the logs or dmesg if it happens before you get a chance to
start the tracing.

Well, the options I can think of are:

- Perhaps I botched matching up the line number to the warning, in which
  case we might want to try 'grep -v "delalloc 0 unwritten 0"' to catch
  any delalloc or unwritten blocks at releasepage() time.

- Perhaps there's a race that the tracepoint doesn't catch. The warnings
  are based on local vars, so we could instrument the code to print a
  warning[1] to try and get the inode number.

Brian

[1] - compile tested diff:

diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 40645a4..94738ea 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -1038,11 +1038,18 @@ xfs_vm_releasepage(
 	gfp_t			gfp_mask)
 {
 	int			delalloc, unwritten;
+	struct xfs_inode	*ip = XFS_I(page->mapping->host);
 
 	trace_xfs_releasepage(page->mapping->host, page, 0, 0);
 
 	xfs_count_page_state(page, &delalloc, &unwritten);
 
+	if (delalloc || unwritten)
+		xfs_warn(ip->i_mount,
+		"ino 0x%llx delalloc %d unwritten %d pgoff 0x%llx size 0x%llx",
+			 ip->i_ino, delalloc, unwritten, page_offset(page),
+			 i_size_read(page->mapping->host));
+
 	if (WARN_ON_ONCE(delalloc))
 		return 0;
 	if (WARN_ON_ONCE(unwritten))

> Stefan
> 
> > Once that is working, add the grep command to filter out "delalloc 0"
> > instances, etc. For example:
> > 
> > 	cat .../trace_pipe | grep -v "delalloc 0" > ~/trace.out
> > 
> > Brian
> > 
> >> This still happens in the first 48 hours after a fresh reboot.
> >>
> >> Stefan
> >>
> >> Am 24.03.2016 um 13:24 schrieb Brian Foster:
> >>> On Thu, Mar 24, 2016 at 01:17:15PM +0100, Stefan Priebe - Profihost AG wrote:
> >>>>
> >>>> Am 24.03.2016 um 12:17 schrieb Brian Foster:
> >>>>> On Thu, Mar 24, 2016 at 09:15:15AM +0100, Stefan Priebe - Profihost AG wrote:
> >>>>>>
> >>>>>> Am 24.03.2016 um 09:10 schrieb Stefan Priebe - Profihost AG:
> >>>>>>>
> >>>>>>> Am 23.03.2016 um 15:07 schrieb Brian Foster:
> >>>>>>>> On Wed, Mar 23, 2016 at 02:28:03PM +0100, Stefan Priebe - Profihost AG wrote:
> >>>>>>>>> sorry new one the last one got mangled. Comments inside.
> >>>>>>>>>
> >>>>>>>>> Am 05.03.2016 um 23:48 schrieb Dave Chinner:
> >>>>>>>>>> On Fri, Mar 04, 2016 at 04:03:42PM -0500, Brian Foster wrote:
> >>>>>>>>>>> On Fri, Mar 04, 2016 at 09:02:06PM +0100, Stefan Priebe wrote:
> >>>>>>>>>>>> Am 04.03.2016 um 20:13 schrieb Brian Foster:
> >>>>>>>>>>>>> On Fri, Mar 04, 2016 at 07:47:16PM +0100, Stefan Priebe wrote:
> >>>>>>>>>>>>>> Am 20.02.2016 um 19:02 schrieb Stefan Priebe - Profihost AG:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Am 20.02.2016 um 15:45 schrieb Brian Foster <bfoster@redhat.com>:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On Sat, Feb 20, 2016 at 09:02:28AM +0100, Stefan Priebe wrote:
> >>>>>>>> ...
> >>>>>>>>>
> >>>>>>>>> This has happened again on 8 different hosts in the last 24 hours
> >>>>>>>>> running 4.4.6.
> >>>>>>>>>
> >>>>>>>>> All of those are KVM / Qemu hosts and are doing NO I/O except the normal
> >>>>>>>>> OS stuff as the VMs have remote storage. So no database, no rsync on
> >>>>>>>>> those hosts - just the OS doing nearly nothing.
> >>>>>>>>>
> >>>>>>>>> All those show:
> >>>>>>>>> [153360.287040] WARNING: CPU: 0 PID: 109 at fs/xfs/xfs_aops.c:1234
> >>>>>>>>> xfs_vm_releasepage+0xe2/0xf0()
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> Ok, well at this point the warning isn't telling us anything beyond
> >>>>>>>> you're reproducing the problem. We can't really make progress without
> >>>>>>>> more information. We don't necessarily know what application or
> >>>>>>>> operations caused this by the time it occurs, but perhaps knowing what
> >>>>>>>> file is affected could give us a hint.
> >>>>>>>>
> >>>>>>>> We have the xfs_releasepage tracepoint, but that's unconditional and so
> >>>>>>>> might generate a lot of noise by default. Could you enable the
> >>>>>>>> xfs_releasepage tracepoint and hunt for instances where delalloc != 0?
> >>>>>>>> E.g., we could leave a long running 'trace-cmd record -e
> >>>>>>>> "xfs:xfs_releasepage" <cmd>' command on several boxes and wait for the
> >>>>>>>> problem to occur. Alternatively (and maybe easier), run 'trace-cmd start
> >>>>>>>> -e "xfs:xfs_releasepage"' and leave something like 'cat
> >>>>>>>> /sys/kernel/debug/tracing/trace_pipe | grep -v "delalloc 0" >
> >>>>>>>> ~/trace.out' running to capture instances.
> >>>>>>
> >>>>>> Isn't the trace a WARN_ONCE? So it does not reoccur or can i check the
> >>>>>> it in the trace.out even the WARN_ONCE was already triggered?
> >>>>>>
> >>>>>
> >>>>> The tracepoint is independent from the warning (see
> >>>>> xfs_vm_releasepage()), so the tracepoint will fire every invocation of
> >>>>> the function regardless of whether delalloc blocks still exist at that
> >>>>> point. That creates the need to filter the entries.
> >>>>>
> >>>>> With regard to performance, I believe the tracepoints are intended to be
> >>>>> pretty lightweight. I don't think it should hurt to try it on a box,
> >>>>> observe for a bit and make sure there isn't a huge impact. Note that the
> >>>>> 'trace-cmd record' approach will save everything to file, so that's
> >>>>> something to consider I suppose.
> >>>>
> >>>> Tests / cat is running. Is there any way to test if it works? Or is it
> >>>> enough that cat prints stuff from time to time but does not match -v
> >>>> delalloc 0
> >>>>
> >>>
> >>> What is it printing where delalloc != 0? You could always just cat
> >>> trace_pipe and make sure the event is firing, it's just that I suspect
> >>> most entries will have delalloc == unwritten == 0.
> >>>
> >>> Also, while the tracepoint fires independent of the warning, it might
> >>> not be a bad idea to restart a system that has already seen the warning
> >>> since boot, just to provide some correlation or additional notification
> >>> when the problem occurs.
> >>>
> >>> Brian
> >>>
> >>>> Stefan
> >>>>
> >>>> _______________________________________________
> >>>> xfs mailing list
> >>>> xfs@oss.sgi.com
> >>>> http://oss.sgi.com/mailman/listinfo/xfs
> >>
> >> _______________________________________________
> >> xfs mailing list
> >> xfs@oss.sgi.com
> >> http://oss.sgi.com/mailman/listinfo/xfs
> 
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  reply	other threads:[~2016-05-11 15:59 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-20  8:02 xfs trace in 4.4.2 Stefan Priebe
2016-02-20 14:45 ` Brian Foster
2016-02-20 18:02   ` Stefan Priebe - Profihost AG
2016-03-04 18:47     ` xfs trace in 4.4.2 / also in 4.3.3 WARNING fs/xfs/xfs_aops.c:1232 xfs_vm_releasepage Stefan Priebe
2016-03-04 19:13       ` Brian Foster
2016-03-04 20:02         ` Stefan Priebe
2016-03-04 21:03           ` Brian Foster
2016-03-04 21:15             ` Stefan Priebe
2016-03-05 22:48             ` Dave Chinner
2016-03-05 22:58               ` Stefan Priebe
2016-03-23 13:26               ` Stefan Priebe - Profihost AG
2016-03-23 13:28               ` Stefan Priebe - Profihost AG
2016-03-23 14:07                 ` Brian Foster
2016-03-24  8:10                   ` Stefan Priebe - Profihost AG
2016-03-24  8:15                     ` Stefan Priebe - Profihost AG
2016-03-24 11:17                       ` Brian Foster
2016-03-24 12:17                         ` Stefan Priebe - Profihost AG
2016-03-24 12:24                           ` Brian Foster
2016-04-04  6:12                             ` Stefan Priebe - Profihost AG
2016-05-11 12:26                             ` Stefan Priebe - Profihost AG
2016-05-11 13:34                               ` Brian Foster
2016-05-11 14:03                                 ` Stefan Priebe - Profihost AG
2016-05-11 15:59                                   ` Brian Foster [this message]
2016-05-11 19:20                                     ` Stefan Priebe
2016-05-15 11:03                                     ` Stefan Priebe
2016-05-15 11:50                                       ` Brian Foster
2016-05-15 12:41                                         ` Stefan Priebe
2016-05-16  1:06                                           ` Brian Foster
2016-05-22 19:36                                             ` Stefan Priebe - Profihost AG
2016-05-22 21:38                                               ` Dave Chinner
2016-05-30  7:23                                                 ` Stefan Priebe - Profihost AG
2016-05-30 22:36                                                   ` shrink_active_list/try_to_release_page bug? (was Re: xfs trace in 4.4.2 / also in 4.3.3 WARNING fs/xfs/xfs_aops.c:1232 xfs_vm_releasepage) Dave Chinner
2016-05-31  1:07                                                     ` Minchan Kim
2016-05-31  2:55                                                       ` Dave Chinner
2016-05-31  3:59                                                         ` Minchan Kim
2016-05-31  6:07                                                           ` Dave Chinner
2016-05-31  6:11                                                             ` Stefan Priebe - Profihost AG
2016-05-31  7:31                                                               ` Dave Chinner
2016-05-31  8:03                                                                 ` Stefan Priebe - Profihost AG
2016-06-02 12:13                                                                 ` Stefan Priebe - Profihost AG
2016-06-02 12:44                                                                   ` Holger Hoffstätte
2016-06-02 23:08                                                                     ` Dave Chinner
2016-05-31  9:50                                                       ` Jan Kara
2016-06-01  1:38                                                         ` Minchan Kim
2016-08-17 15:37                                                         ` Andreas Grünbacher
2016-06-03 17:56                                                 ` xfs trace in 4.4.2 / also in 4.3.3 WARNING fs/xfs/xfs_aops.c:1232 xfs_vm_releasepage Stefan Priebe - Profihost AG
2016-06-03 19:35                                                   ` Holger Hoffstätte
2016-06-04  0:04                                                   ` Dave Chinner
2016-06-26  5:45                                                   ` Stefan Priebe

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=20160511155951.GF42410@bfoster.bfoster \
    --to=bfoster@redhat.com \
    --cc=s.priebe@profihost.ag \
    --cc=xfs-masters@oss.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox