All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Tinguely <tinguely@sgi.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: xfs-oss <xfs@oss.sgi.com>
Subject: Re: [PATCH] mkfs.xfs: fix protofile name create block reservation
Date: Fri, 09 Aug 2013 08:34:40 -0500	[thread overview]
Message-ID: <5204EFF0.1090402@sgi.com> (raw)
In-Reply-To: <5201E28B.1050800@redhat.com>

On 08/07/13 01:00, Eric Sandeen wrote:
> A large protofile which creates a large directory and requires
> a a dir tree split, can fail:
>
>    mkfs.xfs: directory createname error [28 - No space left on device]
>
> This is because when we've split a block once, we decrement args->total:
> (see kernel commit a7444053fb3ebd3d905e3c7a7bd5ea80a54b083a for the
> rationale)
>
>         /* account for newly allocated blocks in reserved blocks total */
>         args->total -= dp->i_d.di_nblocks - nblks;
>
> but every call into this path from proto file parsing started
> reserved / args->total as only "1" as passed tro newdirent() -
> so if we allocate a block, args->total hits 0, and then in
> xfs_dir2_node_addname():
>
>          /*
>           * Add the new leaf entry.
>           */
>          rval = xfs_dir2_leafn_add(blk->bp, args, blk->index);
>          if (rval == 0) {
> 		...
>          } else {
>                  /*
>                   * It didn't work, we need to split the leaf block.
>                   */
>                  if (args->total == 0) {
>                          ASSERT(rval == ENOSPC);
>                          goto done;
>                  }
>                  /*
>                   * Split the leaf block and insert the new entry.
>                   */
>
> we hit the args->total == 0 special case, and don't do the next
> split, and ENOSPC gets returned all the way up, and we fail.
>
> So rather than calling newdirent with a total of "1" in every case,
> which doesn't account for possible tree splits, we should call it
> with a more appropriate value: XFS_DIRENTER_SPACE_RES(mp, name->len),
> which will handle the maximum nr of block allocations that might be
> needed during a directory entry insert.
>
> Since the reservation required doesn't depend on entry type,
> just push this down a level, into newdirent() itself.
>
> Reported-by: Boris Ranto<branto@redhat.com>
> Signed-off-by: Eric Sandeen<sandeen@redhat.com>
> ---

This patches and the Coverity xfsprog patches have been commited to the 
master branch:

commit 312592defb8b6051389a56a5c780819b4239dab4
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Aug 1 01:13:10 2013 +0000

     xfsprogs: fix unint var in repair phase6

commit aba29588f81dad52129037c15fe584ec89b36a4f
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Thu Aug 1 02:25:18 2013 +0000

     xfsprogs: fix agcnts leak in xfs_repair's scan_ags

commit dc93954aa6f13963bcc87fc00ce55a4745dc7b93
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Aug 1 01:33:47 2013 +0000

     xfsprogs:free bp in xlog_find_tail() error path

commit 4623d1041dd34d73aeab4b51002fc9ca6d543415
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Aug 1 01:32:30 2013 +0000

     xfsprogs: free bp in xlog_find_zeroed() error path

commit a134873e2903837bdbeab261b6d0ceee2fd499ba
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Aug 1 01:42:58 2013 +0000

     xfsprogs: fix buffer leak in xlog_print_find_oldest

commit 504dbe46549d462e79565514d86ce69b74b96893
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Thu Aug 1 01:18:54 2013 +0000

     xfsprogs: avoid double-free in xfs_attr_node_addname

commit 1b6bf714a7179942b8523cc966124249b74381da
Author: Eric Sandeen <sandeen@redhat.com>
Date:   Wed Aug 7 06:00:43 2013 +0000

     mkfs.xfs: fix protofile name create block reservation


None collide with the for Linux 3.12 kernel/user sync series.

The kernel patches should make Linux 3.12.

--Mark.


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

      parent reply	other threads:[~2013-08-09 13:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-07  6:00 [PATCH] mkfs.xfs: fix protofile name create block reservation Eric Sandeen
2013-08-07 20:19 ` Mark Tinguely
2013-08-07 20:42   ` Eric Sandeen
2013-08-09 13:34 ` Mark Tinguely [this message]

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=5204EFF0.1090402@sgi.com \
    --to=tinguely@sgi.com \
    --cc=sandeen@redhat.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.