All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	Eryu Guan <eguan@redhat.com>,
	linux-xfs@vger.kernel.org
Subject: Re: [BUG] xfs/109 crashed 2k block size reflink enabled XFS
Date: Tue, 6 Dec 2016 23:18:57 -0800	[thread overview]
Message-ID: <20161207071857.GA23809@infradead.org> (raw)
In-Reply-To: <20161207034903.GX16813@birch.djwong.org>

On Tue, Dec 06, 2016 at 07:49:03PM -0800, Darrick J. Wong wrote:
> On Tue, Dec 06, 2016 at 06:45:59AM -0800, Christoph Hellwig wrote:
> > I think the problem is that the extents -> btree conversion does not
> > use the per-AG reservations, but it should probably use it (even if it
> > predates if of course).
> > 
> > In the reproduce the fs still has enough blocks to allocate the
> > one block for the first bmap btree leave.  But all free space sits
> > in AGs with a lower agno then what we used for allocating the actual
> > extent, and thus xfs_alloc_vextent never manages to allocate it.
> 
> Wellll... I cobbled together a crappy patch that flips on
> XFS_AG_RESV_AGFL if xfs_bmap_extents_to_btree really can't get a block.
> It seems to have survived ~175 iterations of xfs/109 so I'll try to
> clean it up tomorrow.

I tried it with XFS_AG_RESV_METADATA, but that didn't work.  But then
again I didn't add an additional reservation and I was about to head
out for dinner so I didn't investigate the details.  It might have been
the case Ross pointed out yeserday, so I'll look into the details more
today.

> Not sure that helps Christoph's situation though... if you're not
> running rmap or reflink then the AG reservation is always zero.

For now I was just running xfs/109.  The customer workload uses
reflinks, but not rmap.  That being said I think this issue can
in theory happen without eithr one due to the way the AG loop
works in xfs_alloc_vextext - while we have a reservation for the
indirect block(s) there is no guarantee it is in an AG that is
greater or equal to that use for the actual extent allocation.

  reply	other threads:[~2016-12-07  7:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-05  9:21 [BUG] xfs/109 crashed 2k block size reflink enabled XFS Eryu Guan
2016-12-05 12:45 ` Christoph Hellwig
2016-12-05 14:39 ` Christoph Hellwig
2016-12-05 15:36   ` Christoph Hellwig
2016-12-05 18:28     ` Darrick J. Wong
2016-12-05 19:05       ` Christoph Hellwig
2016-12-06  6:37       ` Eryu Guan
2016-12-06 14:45       ` Christoph Hellwig
2016-12-06 15:19         ` Brian Foster
2016-12-06 18:14           ` Darrick J. Wong
2016-12-07  3:49         ` Darrick J. Wong
2016-12-07  7:18           ` Christoph Hellwig [this message]
2016-12-07 17:40             ` Christoph Hellwig
2016-12-08  6:35               ` Darrick J. Wong
2016-12-08 14:30                 ` Christoph Hellwig
2016-12-06 13:48 ` Christoph Hellwig
2016-12-06 15:24   ` Eryu Guan
2016-12-06 16:31     ` Eryu Guan

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=20161207071857.GA23809@infradead.org \
    --to=hch@infradead.org \
    --cc=darrick.wong@oracle.com \
    --cc=eguan@redhat.com \
    --cc=linux-xfs@vger.kernel.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.