All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 00/19] gfs2-utils: Introduce extent allocation and speed up journal creation
Date: Wed, 03 Sep 2014 11:20:53 +0100	[thread overview]
Message-ID: <5406EB85.8080906@redhat.com> (raw)
In-Reply-To: <1409659656-23051-1-git-send-email-anprice@redhat.com>

Hi,

Aside from the question on patch 6, the other patches all look good,

Steve.

On 02/09/14 13:07, Andrew Price wrote:
> Hi,
>
> This patch set introduces extent allocation to libgfs2 and adds functions which
> decouple file creation, allocation and writing so that mkfs.gfs2 can be
> re-worked to write journals and resource groups sequentially.
>
> With these patches, mkfs.gfs2 typically takes around 20% of the time that it
> did before in my tests.  The main speed-up has been from the journal data
> allocation functions not having to re-read and write a resource group for each
> block allocated as it did before (this was a performance regression introduced
> by previous memory footprint improvement patches, hence the significant perf
> improvement).  Journals now each occupy an extent spanning an entire resource
> group specifically sized for the journal, and the resource group headers are
> written only once, after the journal blocks have been allocated in the
> in-memory bitmaps. Resource groups are still only kept in memory for as long as
> they are needed so peak memory usage should be largely unchanged.
>
> One thing to note is that, with these patches, the root and master inodes are
> no longer the first objects in the first resource group. The master inode is
> written in the first free block after the journals and then the other metafs
> structures are placed. The root directory inode is then finally created. This
> is not a format change but it may cause some confusion after years of expecting
> the root and master inodes to be at certain addresses so I thought it worth
> mentioning.
>
> Coverity and valgrind are happy about these patches and I've encountered no
> problems after various tests which mount the fs.
>
> Cheers,
> Andy
>
> Andrew Price (19):
>    libgfs2: Keep a pointer to the sbd in lgfs2_rgrps_t
>    libgfs2: Move bitmap buffers inside struct gfs2_bitmap
>    libgfs2: Fix an impossible loop condition in gfs2_rgrp_read
>    libgfs2: Introduce struct lgfs2_rbm
>    libgfs2: Move struct _lgfs2_rgrps into rgrp.h
>    libgfs2: Add functions for finding free extents
>    tests: Add unit tests for the new extent search functions
>    libgfs2: Ignore an empty rgrp plan if a length is specified
>    libgfs2: Add back-pointer to rgrps in lgfs2_rgrp_t
>    libgfs2: Const-ify the parameters of print functions
>    libgfs2: Allow init_dinode to accept a preallocated bh
>    libgfs2: Add extent allocation functions
>    libgfs2: Add support for allocating entire rgrp headers
>    libgfs2: Write file metadata sequentially
>    libgfs2: Fix alignment in lgfs2_rgsize_for_data
>    libgfs2: Handle non-zero bitmaps in lgfs2_rgrp_write
>    libgfs2: Add a speedier journal data block writing function
>    libgfs2: Create jindex directory separately from journals
>    mkfs.gfs2: Improve journal creation performance
>
>   .gitignore                  |   3 +-
>   gfs2/convert/gfs2_convert.c |  49 +++--
>   gfs2/edit/journal.c         |   6 +-
>   gfs2/fsck/fs_recovery.c     |   2 +-
>   gfs2/fsck/initialize.c      |  27 +--
>   gfs2/fsck/metawalk.c        |  10 +-
>   gfs2/fsck/pass5.c           |   9 +-
>   gfs2/fsck/rgrepair.c        |  14 +-
>   gfs2/fsck/util.c            |   2 +-
>   gfs2/libgfs2/Makefile.am    |   2 +-
>   gfs2/libgfs2/fs_bits.c      |  10 +-
>   gfs2/libgfs2/fs_geometry.c  |   6 +-
>   gfs2/libgfs2/fs_ops.c       | 184 ++++++++++++++---
>   gfs2/libgfs2/libgfs2.h      |  50 +++--
>   gfs2/libgfs2/ondisk.c       |  26 +--
>   gfs2/libgfs2/rgrp.c         | 491 ++++++++++++++++++++++++++++++++++++--------
>   gfs2/libgfs2/rgrp.h         |  50 +++++
>   gfs2/libgfs2/structures.c   | 103 +++++++++-
>   gfs2/mkfs/main_grow.c       |   4 +-
>   gfs2/mkfs/main_mkfs.c       | 155 ++++++++++----
>   tests/Makefile.am           |  33 ++-
>   tests/check_rgrp.c          | 143 +++++++++++++
>   tests/libgfs2.at            |   8 +-
>   23 files changed, 1113 insertions(+), 274 deletions(-)
>   create mode 100644 gfs2/libgfs2/rgrp.h
>   create mode 100644 tests/check_rgrp.c
>



      parent reply	other threads:[~2014-09-03 10:20 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-02 12:07 [Cluster-devel] [PATCH 00/19] gfs2-utils: Introduce extent allocation and speed up journal creation Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 01/19] libgfs2: Keep a pointer to the sbd in lgfs2_rgrps_t Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 02/19] libgfs2: Move bitmap buffers inside struct gfs2_bitmap Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 03/19] libgfs2: Fix an impossible loop condition in gfs2_rgrp_read Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 04/19] libgfs2: Introduce struct lgfs2_rbm Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 05/19] libgfs2: Move struct _lgfs2_rgrps into rgrp.h Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 06/19] libgfs2: Add functions for finding free extents Andrew Price
2014-09-03 10:17   ` Steven Whitehouse
2014-09-03 12:13     ` Andrew Price
2014-09-03 12:24       ` Steven Whitehouse
2014-09-02 12:07 ` [Cluster-devel] [PATCH 07/19] tests: Add unit tests for the new extent search functions Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 08/19] libgfs2: Ignore an empty rgrp plan if a length is specified Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 09/19] libgfs2: Add back-pointer to rgrps in lgfs2_rgrp_t Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 10/19] libgfs2: Const-ify the parameters of print functions Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 11/19] libgfs2: Allow init_dinode to accept a preallocated bh Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 12/19] libgfs2: Add extent allocation functions Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 13/19] libgfs2: Add support for allocating entire rgrp headers Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 14/19] libgfs2: Write file metadata sequentially Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 15/19] libgfs2: Fix alignment in lgfs2_rgsize_for_data Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 16/19] libgfs2: Handle non-zero bitmaps in lgfs2_rgrp_write Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 17/19] libgfs2: Add a speedier journal data block writing function Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 18/19] libgfs2: Create jindex directory separately from journals Andrew Price
2014-09-02 12:07 ` [Cluster-devel] [PATCH 19/19] mkfs.gfs2: Improve journal creation performance Andrew Price
2014-09-02 14:06 ` [Cluster-devel] [PATCH 00/19] gfs2-utils: Introduce extent allocation and speed up journal creation Bob Peterson
2014-09-03 10:20 ` Steven Whitehouse [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=5406EB85.8080906@redhat.com \
    --to=swhiteho@redhat.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.