xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, master, updated. xfs-for-linu

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, master, updated. xfs-for-linus-v3.12-rc3-40-g632b89e
From: xfs@xxxxxxxxxxx
Date: Wed, 30 Oct 2013 14:18:54 -0500 (CDT)
Delivered-to: xfs@xxxxxxxxxxx
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "XFS development tree".

The branch, master has been updated
  632b89e xfs: fix static and extern sparse warnings
  a629362 xfs: validity check the directory block leaf entry count
  b01ef65 xfs: make dir2 ftype offset pointers explicit
  1c9a5b2 xfs: convert directory vector functions to constants
  24dd0f5 xfs: convert directory vector functions to constants
  01ba43b xfs: vectorise encoding/decoding directory headers
  4bceb18 xfs: vectorise DA btree operations
  4141956 xfs: vectorise directory leaf operations
  2ca9877 xfs: vectorise directory data operations part 2
  9d23fc8 xfs: vectorise directory data operations
  4740175 xfs: vectorise remaining shortform dir2 ops
  32c5483 xfs: abstract the differences in dir2/dir3 via an ops vector
      from  c963c6193a5adaec58044e238ef23516d04e5a74 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 632b89e82bf1c04c251924b49adc689f7b346321
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:58 2013 +1100

    xfs: fix static and extern sparse warnings
    
    The kbuild test robot indicated that there were some new sparse
    warnings in fs/xfs/xfs_dquot_buf.c. Actually, there were a lot more
    that is wasn't warning about, so fix them all up.
    
    Reported-by: kbuild test robot
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit a62936210525da2f46ae264e0bf9680eafac176e
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:56 2013 +1100

    xfs: validity check the directory block leaf entry count
    
    The directory block format verifier fails to check that the leaf
    entry count is in a valid range, and so if it is corrupted then it
    can lead to derefencing a pointer outside the block buffer. While we
    can't exactly validate the count without first walking the directory
    block, we can ensure the count lands in the valid area within the
    directory block and hence avoid out-of-block references.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit b01ef655d8b9753c3d25e4c22e0a4e7c442fe5e1
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:55 2013 +1100

    xfs: make dir2 ftype offset pointers explicit
    
    Rather than hiding the ftype field size accounting inside the dirent
    padding for the ".." and first entry offset functions for v2
    directory formats, add explicit functions that calculate it
    correctly.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 1c9a5b2e3045b91a10335adcc73267c304cb5dc0
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Oct 30 09:15:02 2013 +1100

    xfs: convert directory vector functions to constants
    
    Many of the vectorised function calls now take no parameters and
    return a constant value. There is no reason for these to be vectored
    functions, so convert them to constants
    
    Binary sizes:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
     789061   96802    1096  886959   d88af fs/xfs/xfs.o.p5
     789733   96802    1096  887631   d8b4f fs/xfs/xfs.o.p6
     791421   96802    1096  889319   d91e7 fs/xfs/xfs.o.p7
     791701   96802    1096  889599   d92ff fs/xfs/xfs.o.p8
     791205   96802    1096  889103   d91cf fs/xfs/xfs.o.p9
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 24dd0f546c366da68f33bbf2ecef2306f8c2281d
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Oct 30 13:48:41 2013 -0500

    xfs: convert directory vector functions to constants
    
    Next step in the vectorisation process is the directory free block
    encode/decode operations. There are relatively few of these, though
    there are quite a number of calls to them.
    
    Binary sizes:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
     789061   96802    1096  886959   d88af fs/xfs/xfs.o.p5
     789733   96802    1096  887631   d8b4f fs/xfs/xfs.o.p6
     791421   96802    1096  889319   d91e7 fs/xfs/xfs.o.p7
     791701   96802    1096  889599   d92ff fs/xfs/xfs.o.p8
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 01ba43b873d9e91ba2e0341fe8cb7e89eaa41661
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:52 2013 +1100

    xfs: vectorise encoding/decoding directory headers
    
    Conversion from on-disk structures to in-core header structures
    currently relies on magic number checks. If the magic number is
    wrong, but one of the supported values, we do the wrong thing with
    the encode/decode operation. Split these functions so that there are
    discrete operations for the specific directory format we are
    handling.
    
    In doing this, move all the header encode/decode functions to
    xfs_da_format.c as they are directly manipulating the on-disk
    format. It should be noted that all the growth in binary size is
    from xfs_da_format.c - the rest of the code actaully shrinks.
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
     789061   96802    1096  886959   d88af fs/xfs/xfs.o.p5
     789733   96802    1096  887631   d8b4f fs/xfs/xfs.o.p6
     791421   96802    1096  889319   d91e7 fs/xfs/xfs.o.p7
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 4bceb18f1551c8c047eeb54d48cda9f5453dc12f
Author: Dave Chinner <david@xxxxxxxxxxxxx>
Date:   Tue Oct 29 22:11:51 2013 +1100

    xfs: vectorise DA btree operations
    
    The remaining non-vectorised code for the directory structure is the
    node format blocks. This is shared with the attribute tree, and so
    is slightly more complex to vectorise.
    
    Introduce a "non-directory" directory ops structure that is attached
    to all non-directory inodes so that attribute operations can be
    vectorised for all inodes.
    
    Once we do this, we can vectorise all the da btree operations.
    Because this patch adds more infrastructure than it removes the
    binary size does not decrease:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
     789061   96802    1096  886959   d88af fs/xfs/xfs.o.p5
     789733   96802    1096  887631   d8b4f fs/xfs/xfs.o.p6
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 4141956ae05e0685b14b30f92fdc8fb11b4a0cb2
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:50 2013 +1100

    xfs: vectorise directory leaf operations
    
    Next step in the vectorisation process is the leaf block
    encode/decode operations. Most of the operations on leaves are
    handled by the data block vectors, so there are relatively few of
    them here.
    
    Because of all the shuffling of code and having to pass more state
    to some functions, this patch doesn't directly reduce the size of
    the binary. It does open up many more opportunities for factoring
    and optimisation, however.
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
     789061   96802    1096  886959   d88af fs/xfs/xfs.o.p5
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 2ca9877410594dd321621efc9e1cbcd1ca24d0f3
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:49 2013 +1100

    xfs: vectorise directory data operations part 2
    
    Convert the rest of the directory data block encode/decode
    operations to vector format.
    
    This further reduces the size of the built binary:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
     789005   96802    1096  886903   d8997 fs/xfs/xfs.o.p4
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 9d23fc8575de7012b8853bd6fefe10534665de2f
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:48 2013 +1100

    xfs: vectorise directory data operations
    
    Following from the initial patches to vectorise the shortform
    directory encode/decode operations, convert half the data block
    operations to use the vector. The rest will be done in a second
    patch.
    
    This further reduces the size of the built binary:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
     789293   96802    1096  887191   d8997 fs/xfs/xfs.o.p3
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 4740175e75f70ab71f76ae98ab00f7db731a48f7
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:47 2013 +1100

    xfs: vectorise remaining shortform dir2 ops
    
    Following from the initial patch to introduce the directory
    operations vector, convert the rest of the shortform directory
    operations to use vectored ops rather than superblock feature
    checks. This further reduces the size of the built binary:
    
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
     792350   96802    1096  890248   d9588 fs/xfs/xfs.o.p2
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 32c5483a8a13a43264809144210ec114dd70b611
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Oct 29 22:11:46 2013 +1100

    xfs: abstract the differences in dir2/dir3 via an ops vector
    
    Lots of the dir code now goes through switches to determine what is
    the correct on-disk format to parse. It generally involves a
    "xfs_sbversion_hasfoo" check, deferencing the superblock version and
    feature fields and hence touching several cache lines per operation
    in the process. Some operations do multiple checks because they nest
    conditional operations and they don't pass the information in a
    direct fashion between each other.
    
    Hence, add an ops vector to the xfs_inode structure that is
    configured when the inode is initialised to point to all the correct
    decode and encoding operations.  This will significantly reduce the
    branchiness and cacheline footprint of the directory object decoding
    and encoding.
    
    This is the first patch in a series of conversion patches. It will
    introduce the ops structure, the setup of it and add the first
    operation to the vector. Subsequent patches will convert directory
    ops one at a time to keep the changes simple and obvious.
    
    Just this patch shows the benefit of such an approach on code size.
    Just converting the two shortform dir operations as this patch does
    decreases the built binary size by ~1500 bytes:
    
    $ size fs/xfs/xfs.o.orig fs/xfs/xfs.o.p1
       text    data     bss     dec     hex filename
     794490   96802    1096  892388   d9de4 fs/xfs/xfs.o.orig
     792986   96802    1096  890884   d9804 fs/xfs/xfs.o.p1
    $
    
    That's a significant decrease in the instruction cache footprint of
    the directory code for such a simple change, and indicates that this
    approach is definitely worth pursuing further.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

-----------------------------------------------------------------------

Summary of changes:
 fs/xfs/Makefile            |   1 +
 fs/xfs/xfs_alloc_btree.c   |   1 +
 fs/xfs/xfs_attr_inactive.c |   5 +-
 fs/xfs/xfs_attr_leaf.c     |   8 +-
 fs/xfs/xfs_attr_list.c     |  13 +-
 fs/xfs/xfs_attr_remote.c   |   1 +
 fs/xfs/xfs_bit.c           |   1 +
 fs/xfs/xfs_bmap_btree.c    |   1 +
 fs/xfs/xfs_buf_item.c      |   2 +-
 fs/xfs/xfs_da_btree.c      | 252 ++++++-------
 fs/xfs/xfs_da_btree.h      |   1 +
 fs/xfs/xfs_da_format.c     | 907 +++++++++++++++++++++++++++++++++++++++++++++
 fs/xfs/xfs_da_format.h     | 347 -----------------
 fs/xfs/xfs_dir2.c          |   7 +-
 fs/xfs/xfs_dir2.h          | 106 +++++-
 fs/xfs/xfs_dir2_block.c    |  97 ++---
 fs/xfs/xfs_dir2_data.c     | 150 ++++----
 fs/xfs/xfs_dir2_leaf.c     | 231 +++++-------
 fs/xfs/xfs_dir2_node.c     | 337 ++++++++---------
 fs/xfs/xfs_dir2_priv.h     |  20 +-
 fs/xfs/xfs_dir2_readdir.c  |  30 +-
 fs/xfs/xfs_dir2_sf.c       | 204 +++-------
 fs/xfs/xfs_dquot_buf.c     |   3 +-
 fs/xfs/xfs_ialloc_btree.c  |   1 +
 fs/xfs/xfs_inode.h         |   3 +
 fs/xfs/xfs_iops.c          |   2 +
 fs/xfs/xfs_mount.h         |   3 +
 fs/xfs/xfs_rtbitmap.c      |   1 +
 fs/xfs/xfs_sb.c            |   1 +
 fs/xfs/xfs_super.c         |   2 +-
 30 files changed, 1610 insertions(+), 1128 deletions(-)
 create mode 100644 fs/xfs/xfs_da_format.c


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, master, updated. xfs-for-linus-v3.12-rc3-40-g632b89e, xfs <=