public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Brian Foster <bfoster@redhat.com>
To: xfs@oss.sgi.com
Subject: [RFC PATCH 00/11] xfs: introduce the free inode btree
Date: Tue,  3 Sep 2013 14:24:57 -0400	[thread overview]
Message-ID: <1378232708-57156-1-git-send-email-bfoster@redhat.com> (raw)

Hi all,

This is an RFC for the kernel work to support a free inode btree. The free inode
btree (finobt) is equivalent to the existing inode allocation btree with the
exception that the finobt only tracks inode chunks with at least one free inode.
The purpose is to improve lookups for free inode clusters for inode allocation.

Newly allocated inode chunks by definition contain free inodes and are thus
inserted into the finobt immediately. The record for a previously full inode
chunk is inserted to the finobt when the first inode is freed. A record is
removed from the finobt when the last free inode has been allocated or the
entire chunk is completely deallocated.

Patches 1-3 refactor some ialloc btree code to introduce the new finobt type and
feature bit. Patches 4-7 fix up the transaction handling for inode allocation
and deallocation to account for the new tree. Patches 8-10 add the finobt
management code to insert, remove and modify records as appropriate. Patch 11
fixes growfs to support the finobt.

Thoughts, reviews, flames appreciated.

NOTES:
- This is RFC because it is lightly tested and I don't have much userspace code
at the moment (though most of this code should apply).
- I'm not totally sure about the scope of change in patch 6 (use correct
transaction reservations in xfs_inactive()). I started off minimally altering
the reserved blocks value, but the existing transaction management seemed
strange enough that I ended up with the current patch. I figured I'd start here
and pare it back as necessary if the changes are bogus or lead to other
problems.
- I've yet to do any performance testing to measure the benefit of patch 9.

Brian

Brian Foster (11):
  xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers
  xfs: reserve v5 superblock read-only compat. feature bit for finobt
  xfs: support the XFS_BTNUM_FINOBT free inode btree type
  xfs: update inode allocation transaction reservations for finobt
  xfs: update ifree transaction reservations for finobt
  xfs: use correct transaction reservations in xfs_inactive()
  xfs: retry trans reservation on ENOSPC in xfs_inactive()
  xfs: insert newly allocated inode chunks into the finobt
  xfs: use and update the finobt on inode allocation
  xfs: update the finobt on inode free
  xfs: add finobt support to growfs

 fs/xfs/xfs_ag.h           |   7 +-
 fs/xfs/xfs_btree.c        |   6 +-
 fs/xfs/xfs_btree.h        |   3 +
 fs/xfs/xfs_fsops.c        |  32 +++++
 fs/xfs/xfs_ialloc.c       | 343 ++++++++++++++++++++++++++++++++++++++++++----
 fs/xfs/xfs_ialloc_btree.c |  37 +++--
 fs/xfs/xfs_ialloc_btree.h |  17 ++-
 fs/xfs/xfs_inode.c        |  82 ++++++-----
 fs/xfs/xfs_itable.c       |   6 +-
 fs/xfs/xfs_log_recover.c  |   2 +
 fs/xfs/xfs_sb.h           |  10 +-
 fs/xfs/xfs_stats.h        |  18 ++-
 fs/xfs/xfs_trans_resv.c   |  14 +-
 fs/xfs/xfs_trans_space.h  |   4 +-
 fs/xfs/xfs_types.h        |   2 +-
 15 files changed, 500 insertions(+), 83 deletions(-)

-- 
1.8.1.4

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

             reply	other threads:[~2013-09-03 18:25 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-03 18:24 Brian Foster [this message]
2013-09-03 18:24 ` [RFC PATCH 01/11] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Brian Foster
2013-09-05  0:36   ` Dave Chinner
2013-09-03 18:24 ` [RFC PATCH 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Brian Foster
2013-09-05  0:39   ` Dave Chinner
2013-09-03 18:25 ` [RFC PATCH 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Brian Foster
2013-09-05  0:54   ` Dave Chinner
2013-09-05 16:17     ` Brian Foster
2013-09-06  0:07       ` Dave Chinner
2013-09-06 11:25         ` Brian Foster
2013-09-06 21:22           ` Dave Chinner
2013-09-03 18:25 ` [RFC PATCH 04/11] xfs: update inode allocation transaction reservations for finobt Brian Foster
2013-09-05  0:59   ` Dave Chinner
2013-09-05 16:17     ` Brian Foster
2013-09-06  0:11       ` Dave Chinner
2013-09-03 18:25 ` [RFC PATCH 05/11] xfs: update ifree " Brian Foster
2013-09-05  1:00   ` Dave Chinner
2013-09-03 18:25 ` [RFC PATCH 06/11] xfs: use correct transaction reservations in xfs_inactive() Brian Foster
2013-09-05  1:35   ` Dave Chinner
2013-09-05 16:18     ` Brian Foster
2013-09-03 18:25 ` [RFC PATCH 07/11] xfs: retry trans reservation on ENOSPC " Brian Foster
2013-09-05  1:40   ` Dave Chinner
2013-09-05 16:18     ` Brian Foster
2013-09-06  0:17       ` Dave Chinner
2013-09-06 11:30         ` Brian Foster
2013-09-03 18:25 ` [RFC PATCH 08/11] xfs: insert newly allocated inode chunks into the finobt Brian Foster
2013-09-05  2:10   ` Dave Chinner
2013-09-03 18:25 ` [RFC PATCH 09/11] xfs: use and update the finobt on inode allocation Brian Foster
2013-09-05  2:27   ` Dave Chinner
2013-09-05 16:18     ` Brian Foster
2013-09-03 18:25 ` [RFC PATCH 10/11] xfs: update the finobt on inode free Brian Foster
2013-09-05  2:54   ` Dave Chinner
2013-09-05 16:19     ` Brian Foster
2013-09-06  0:28       ` Dave Chinner
2013-09-06 11:39         ` Brian Foster
2013-09-06 21:24           ` Dave Chinner
2013-09-07 12:30             ` Brian Foster
2013-09-08 20:08               ` Michael L. Semon
2013-09-09  2:34               ` Better numbers " Michael L. Semon
2013-09-03 18:25 ` [RFC PATCH 11/11] xfs: add finobt support to growfs Brian Foster
2013-09-05  2:55   ` Dave Chinner
2013-09-05 21:17 ` [RFC PATCH 00/11] xfs: introduce the free inode btree Michael L. Semon
2013-09-06 11:17   ` Brian Foster
2013-09-06 21:35   ` Dave Chinner
2013-09-07 12:31     ` Brian Foster
2013-09-08  1:04       ` Michael L. Semon

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=1378232708-57156-1-git-send-email-bfoster@redhat.com \
    --to=bfoster@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox