xfs
[Top] [All Lists]

[TARBALL] xfsprogs: fixes and updates to current kernel code

To: xfs@xxxxxxxxxxx
Subject: [TARBALL] xfsprogs: fixes and updates to current kernel code
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 30 Apr 2013 22:13:00 +1000
Delivered-to: xfs@xxxxxxxxxxx
User-agent: Mutt/1.5.21 (2010-09-15)
Hi folks,

The attached tarball contains the following patches and a series
file:

xfs_repair: validate on-disk extent count better
xfs_logprint: print all AGI unlinked buckets
xfs_fsr: file reads should be O_DIRECT
xfsprogs: Die dir1 Die!
xfsprogs: sync code to current kernel code
xfsprogs: update libxfs to 3.9-rc1 + xfsdev
xfsprogs: add CRC32c infrastructure
xfsprogs: update libxlog to current kernel code

The first 3 patches are miscellaneous fixes I have for various
issues that I've triaged over the past couple of weeks, and there
should be nothing controversial about them. The xfs_fsr fix almost
doubled the speed of defragmenting a large sparse VM image with
millions of extents (from copy rate of ~100MB/s to ~180MB/s), so
while it's a simple change the effect can be quite dramatic.

The fourth patch (Die dir1 Die!) removes support for V1 directories
from the userspace toolchains as we discussed last week. I put that
before the kernel code sync as it removes over 4000 lines of code
and various header files that then don't have to be modified and
juggled for the dir2 header changes in the kernel sync patches,
making them a little simpler and smaller.

The next 3 patches pull all the libxfs code up to match the xfs dev
tree shortly after the 3.9-rc1 merge. This is roughly the version of
the xfs dev tree the kernel CRC patches apply to, and is close
enough for the purposes of adding CRC support to the userspace code
without needing to greatly modify the kernel patches.

The second-to-last patch introduces all the CRC32c infrastructure
necessary to allow the libxlog code to be synced to the kernel code
as the 3.8 kernel adds CRC32c encapuslation to the log buffers
written to disk. This also lays the groundwork for bring the kernel
CRC patches across to userspace.

The final patch updates the libxlog code to match the kernel code
now that all the infrastructure is in place to allow it to be copied
across.

This update seems to be relatively robust - I'm not seeing any
xfstests regressions as a result of making these changes, and while
there are a couple of compile warnings in the libxfs code, they
need to be fixed in the kernel code first and sync'd across.

Hopefully this tarball is now small enough to make it through the
list without getting held up. It's still a large amount of change:

114 files changed, 13327 insertions(+), 14808 deletions(-)

but thanks to the dirv1 removal it's actually a net reduction by
1500 lines of code. Full diffstat is below.

Comments, testing and feedback welcome....

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

$ git diff --stat --summary 30626ef..
 db/Makefile                |    2 +-
 db/check.c                 |  321 +-
 db/dir.c                   |  255 --
 db/dir.h                   |   30 -
 db/dir2.c                  |   11 +-
 db/dir2.h                  |   30 +
 db/dir2sf.c                |   15 +-
 db/dirshort.c              |  132 -
 db/dirshort.h              |   25 -
 db/field.c                 |   29 -
 db/inode.c                 |   20 +-
 db/metadump.c              |   23 +-
 db/sb.c                    |    7 +-
 db/type.c                  |    3 -
 db/type.h                  |    2 +-
 estimate/xfs_estimate.c    |    4 +-
 fsr/xfs_fsr.c              |    7 +-
 include/Makefile           |    9 +-
 include/libxfs.h           |  155 +-
 include/libxlog.h          |   32 +-
 include/linux.h            |    1 +
 include/platform_defs.h.in |    5 +
 include/project.h          |    4 -
 include/swab.h             |   38 +
 include/xfs.h              |    1 +
 include/xfs_ag.h           |   29 +-
 include/xfs_alloc.h        |   57 +-
 include/xfs_alloc_btree.h  |   16 +-
 include/xfs_arch.h         |   16 +
 include/xfs_attr_leaf.h    |   27 +-
 include/xfs_bmap.h         |  325 +-
 include/xfs_bmap_btree.h   |    1 +
 include/xfs_btree.h        |   24 +-
 include/xfs_buf_item.h     |   55 +-
 include/xfs_cksum.h        |   63 +
 include/xfs_da_btree.h     |   59 +-
 include/xfs_dinode.h       |   10 +-
 include/xfs_dir2.h         |   83 +-
 include/xfs_dir2_block.h   |   92 -
 include/xfs_dir2_data.h    |  184 -
 include/xfs_dir2_format.h  |  591 +++
 include/xfs_dir2_leaf.h    |  253 --
 include/xfs_dir2_node.h    |  100 -
 include/xfs_dir2_sf.h      |  171 -
 include/xfs_dir_leaf.h     |  113 -
 include/xfs_dir_sf.h       |   99 -
 include/xfs_fs.h           |   38 +-
 include/xfs_ialloc.h       |   17 +-
 include/xfs_ialloc_btree.h |    2 +
 include/xfs_inode.h        |  237 +-
 include/xfs_inode_item.h   |   22 +-
 include/xfs_inum.h         |   16 -
 include/xfs_log.h          |   31 +-
 include/xfs_log_priv.h     |  101 +-
 include/xfs_mount.h        |   47 +-
 include/xfs_quota.h        |   47 +-
 include/xfs_rtalloc.h      |    4 +-
 include/xfs_sb.h           |   10 +-
 include/xfs_trace.h        |   69 +-
 include/xfs_trans.h        |   88 +-
 include/xfs_types.h        |   25 +-
 libxfs/Makefile            |   26 +-
 libxfs/crc32.c             | 1036 ++++++
 libxfs/crc32defs.h         |   72 +
 libxfs/gen_crc32table.c    |  144 +
 libxfs/init.c              |   32 +-
 libxfs/logitem.c           |   20 +-
 libxfs/rdwr.c              |  409 ++-
 libxfs/trans.c             |   50 +-
 libxfs/util.c              |  202 +-
 libxfs/xfs.h               |  112 +-
 libxfs/xfs_alloc.c         |  592 +--
 libxfs/xfs_alloc_btree.c   |  105 +-
 libxfs/xfs_attr.c          |  260 +-
 libxfs/xfs_attr_leaf.c     |  501 +--
 libxfs/xfs_bmap.c          | 8937 
++++++++++++++++++++++++----------------------
 libxfs/xfs_bmap_btree.c    |   71 +-
 libxfs/xfs_btree.c         |  188 +-
 libxfs/xfs_da_btree.c      | 1278 ++++---
 libxfs/xfs_dir2.c          |  149 +-
 libxfs/xfs_dir2_block.c    |  709 ++--
 libxfs/xfs_dir2_data.c     |  506 ++-
 libxfs/xfs_dir2_leaf.c     |  720 ++--
 libxfs/xfs_dir2_node.c     |  722 ++--
 libxfs/xfs_dir2_priv.h     |  152 +
 libxfs/xfs_dir2_sf.c       |  320 +-
 libxfs/xfs_ialloc.c        |  582 +--
 libxfs/xfs_ialloc_btree.c  |   55 +-
 libxfs/xfs_inode.c         |  409 ++-
 libxfs/xfs_mount.c         |  176 +-
 libxfs/xfs_rtalloc.c       |   77 +-
 libxfs/xfs_trans.c         |    9 +-
 libxlog/xfs_log_recover.c  |  301 +-
 logprint/log_copy.c        |    2 +-
 logprint/log_dump.c        |    2 +-
 logprint/log_misc.c        |   31 +-
 logprint/log_print_all.c   |   23 +-
 logprint/log_print_trans.c |    4 +-
 logprint/logprint.c        |    2 +-
 logprint/logprint.h        |   10 +-
 mkfs/proto.c               |   10 +-
 repair/Makefile            |    4 +-
 repair/attr_repair.c       |  634 +++-
 repair/dino_chunks.c       |    1 -
 repair/dinode.c            |   39 +-
 repair/dir.c               | 2642 --------------
 repair/dir.h               |  126 -
 repair/dir2.c              |  354 +-
 repair/dir2.h              |   33 +-
 repair/init.c              |    1 -
 repair/phase2.c            |    7 +-
 repair/phase4.c            |    1 -
 repair/phase6.c            | 1001 +-----
 repair/prefetch.c          |    3 +-
 114 files changed, 13327 insertions(+), 14808 deletions(-)
 delete mode 100644 db/dir.c
 delete mode 100644 db/dir.h
 delete mode 100644 db/dirshort.c
 delete mode 100644 db/dirshort.h
 create mode 100644 include/xfs_cksum.h
 delete mode 100644 include/xfs_dir2_block.h
 delete mode 100644 include/xfs_dir2_data.h
 create mode 100644 include/xfs_dir2_format.h
 delete mode 100644 include/xfs_dir2_leaf.h
 delete mode 100644 include/xfs_dir2_node.h
 delete mode 100644 include/xfs_dir2_sf.h
 delete mode 100644 include/xfs_dir_leaf.h
 delete mode 100644 include/xfs_dir_sf.h
 create mode 100644 libxfs/crc32.c
 create mode 100644 libxfs/crc32defs.h
 create mode 100644 libxfs/gen_crc32table.c
 create mode 100644 libxfs/xfs_dir2_priv.h
 delete mode 100644 repair/dir.c
 delete mode 100644 repair/dir.h

Attachment: xfsprogs-kern-sync-patchset.tar.gz
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>