xfs
[Top] [All Lists]

[XFS updates] XFS development tree branch, for-next, updated. v3.7-rc1-7

To: xfs@xxxxxxxxxxx
Subject: [XFS updates] XFS development tree branch, for-next, updated. v3.7-rc1-70-g1813dd6
From: xfs@xxxxxxxxxxx
Date: Thu, 15 Nov 2012 21:50:20 -0600
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, for-next has been updated
  1813dd6 xfs: convert buffer verifiers to an ops structure.
  b0f539d xfs: connect up write verifiers to new buffers
  612cfbf xfs: add pre-write metadata buffer verifier callbacks
  cfb0285 xfs: add buffer pre-write callback
  da6958c xfs: Add verifiers to dir2 data readahead.
  d9392a4 xfs: add xfs_da_node verification
  ad14c33 xfs: factor and verify attr leaf reads
  e6f7667 xfs: factor dir2 leaf read
  e481357 xfs: factor out dir2 data block reading
  2025207 xfs: factor dir2 free block reading
  82025d7 xfs: verify dir2 block format buffers
  20f7e9f xfs: factor dir2 block read operations
  4bb20a8 xfs: add verifier callback to directory read code
  c631919 xfs: verify dquot blocks as they are read from disk
  3d3e6f6 xfs: verify btree blocks as they are read from disk
  af133e8 xfs: verify inode buffers as they are read from disk
  bb80c6d xfs: verify AGFL blocks as they are read from disk
  3702ce6 xfs: verify AGI blocks as they are read from disk
  5d5f527 xfs: verify AGF blocks as they are read from disk
  9802182 xfs: verify superblocks as they are read from disk
  eab4e63 xfs: uncached buffer reads need to return an error
  c3f8fc7 xfs: make buffer read verication an IO completion function
      from  fb59581404ab7ec5075299065c22cb211a9262a9 (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 1813dd64057490e7a0678a885c4fe6d02f78bdc1
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Nov 14 17:54:40 2012 +1100

    xfs: convert buffer verifiers to an ops structure.
    
    To separate the verifiers from iodone functions and associate read
    and write verifiers at the same time, introduce a buffer verifier
    operations structure to the xfs_buf.
    
    This avoids the need for assigning the write verifier, clearing the
    iodone function and re-running ioend processing in the read
    verifier, and gets rid of the nasty "b_pre_io" name for the write
    verifier function pointer. If we ever need to, it will also be
    easier to add further content specific callbacks to a buffer with an
    ops structure in place.
    
    We also avoid needing to export verifier functions, instead we
    can simply export the ops structures for those that are needed
    outside the function they are defined in.
    
    This patch also fixes a directory block readahead verifier issue
    it exposed.
    
    This patch also adds ops callbacks to the inode/alloc btree blocks
    initialised by growfs. These will need more work before they will
    work with CRCs.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit b0f539de9fcc543a3ffa40bc22bf51aca6ea6183
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Nov 14 17:53:49 2012 +1100

    xfs: connect up write verifiers to new buffers
    
    Metadata buffers that are read from disk have write verifiers
    already attached to them, but newly allocated buffers do not. Add
    appropriate write verifiers to all new metadata buffers.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 612cfbfe174a89d565363fff7f3961a2dda5fb71
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Nov 14 17:52:32 2012 +1100

    xfs: add pre-write metadata buffer verifier callbacks
    
    These verifiers are essentially the same code as the read verifiers,
    but do not require ioend processing. Hence factor the read verifier
    functions and add a new write verifier wrapper that is used as the
    callback.
    
    This is done as one large patch for all verifiers rather than one
    patch per verifier as the change is largely mechanical. This
    includes hooking up the write verifier via the read verifier
    function.
    
    Hooking up the write verifier for buffers obtained via
    xfs_trans_get_buf() will be done in a separate patch as that touches
    code in many different places rather than just the verifier
    functions.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Mark Tinguely <tinguely@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit cfb02852226aa449fe27075caffe88726507668c
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:19 2012 +1100

    xfs: add buffer pre-write callback
    
    Add a callback to the buffer write path to enable verification of
    the buffer and CRC calculation prior to issuing the write to the
    underlying storage.
    
    If the callback function detects some kind of failure or error
    condition, it must mark the buffer with an error so that the caller
    can take appropriate action. In the case of xfs_buf_ioapply(), a
    corrupt metadta buffer willt rigger a shutdown of the filesystem,
    because something is clearly wrong and we can't allow corrupt
    metadata to be written to disk.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit da6958c873ecd846d71fafbfe0f6168bb9c2c99e
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:18 2012 +1100

    xfs: Add verifiers to dir2 data readahead.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit d9392a4bb75503fc2adbb5237c3df940c6467eb2
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:17 2012 +1100

    xfs: add xfs_da_node verification
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit ad14c33ac862601c4c22755ed3b59f1906b134e5
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:16 2012 +1100

    xfs: factor and verify attr leaf reads
    
    Some reads are not converted yet because it isn't obvious ahead of
    time what the format of the block is going to be. Need to determine
    how to tell if the first block in the tree is a node or leaf format
    block. That will be done in later patches.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit e6f7667c4eef42b6f5bc6cdeb31d0bab62fe5f79
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:15 2012 +1100

    xfs: factor dir2 leaf read
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit e4813572640e27d3a5cce3f06751a9f54f77aaa5
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:14 2012 +1100

    xfs: factor out dir2 data block reading
    
    And add a verifier callback function while there.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 2025207ca6738a1217126ef14af9d104433f9824
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:13 2012 +1100

    xfs: factor dir2 free block reading
    
    Also factor out the updating of the free block when removing entries
    from leaf blocks, and add a verifier callback for reads.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 82025d7f79148fe66a1594a0ebe4ab38152cf9e6
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:12 2012 +1100

    xfs: verify dir2 block format buffers
    
    Add a dir2 block format read verifier. To fully verify every block
    when read, call xfs_dir2_data_check() on them. Change
    xfs_dir2_data_check() to do runtime checking, convert ASSERT()
    checks to XFS_WANT_CORRUPTED_RETURN(), which will trigger an ASSERT
    failure on debug kernels, but on production kernels will dump an
    error to dmesg and return EFSCORRUPTED to the caller.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 20f7e9f3726a27cccade65c28265eef8ca50eecb
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:11 2012 +1100

    xfs: factor dir2 block read operations
    
    In preparation for verifying dir2 block format buffers, factor
    the read operations out of the block operations (lookup, addname,
    getdents) and some of the additional logic to make it easier to
    understand an dmodify the code.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Ben Myers <bpm@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 4bb20a83a2a5ac4dcb62780c9950e47939956126
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:10 2012 +1100

    xfs: add verifier callback to directory read code
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit c6319198702350a2215a8c0cacd6cc4283728a1b
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Nov 14 17:50:13 2012 +1100

    xfs: verify dquot blocks as they are read from disk
    
    Add a dquot buffer verify callback function and pass it into the
    buffer read functions. This checks all the dquots in a buffer, but
    cannot completely verify the dquot ids are correct. Also, errors
    cannot be repaired, so an additional function is added to repair bad
    dquots in the buffer if such an error is detected in a context where
    repair is allowed.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 3d3e6f64e22c94115d47de670611bcd3ecda3796
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:08 2012 +1100

    xfs: verify btree blocks as they are read from disk
    
    Add an btree block verify callback function and pass it into the
    buffer read functions. Because each different btree block type
    requires different verification, add a function to the ops structure
    that is called from the generic code.
    
    Also, propagate the verification callback functions through the
    readahead functions, and into the external bmap and bulkstat inode
    readahead code that uses the generic btree buffer read functions.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit af133e8606d32c2aed43870491ebbdc56feec8a8
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:07 2012 +1100

    xfs: verify inode buffers as they are read from disk
    
    Add an inode buffer verify callback function and pass it into the
    buffer read functions. Inodes are special in that the verbose checks
    will be done when reading the inode, but we still need to sanity
    check the buffer when that is first read. Always verify the magic
    numbers in all inodes in the buffer, rather than jus ton debug
    kernels.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit bb80c6d79a3b0f9b6c3236a4bec021c72615bfd1
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:06 2012 +1100

    xfs: verify AGFL blocks as they are read from disk
    
    Add an AGFL block verify callback function and pass it into the
    buffer read functions.
    
    While this commit adds verification code to the AGFL, it cannot be
    used reliably until the CRC format change comes along as mkfs does
    not initialise the full AGFL. Hence it can be full of garbage at the
    first mount and will fail verification right now. CRC enabled
    filesystems won't have this problem, so leave the code that has
    already been written ifdef'd out until the proper time.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 3702ce6ed71cd60451ab278088863456dcb0dd99
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:05 2012 +1100

    xfs: verify AGI blocks as they are read from disk
    
    Add an AGI block verify callback function and pass it into the
    buffer read functions. Remove the now redundant verification code
    that is currently in use.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 5d5f527d13369d0047d52b7ac4ddee4f8c0ad173
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Wed Nov 14 17:44:56 2012 +1100

    xfs: verify AGF blocks as they are read from disk
    
    Add an AGF block verify callback function and pass it into the
    buffer read functions. This replaces the existing verification that
    is done after the read completes.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Mark Tinguely <tinguely@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit 98021821a502db347bd9c7671beeee6e8ce07ea6
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:03 2012 +1100

    xfs: verify superblocks as they are read from disk
    
    Add a superblock verify callback function and pass it into the
    buffer read functions. Remove the now redundant verification code
    that is currently in use.
    
    Adding verification shows that secondary superblocks never have
    their "sb_inprogress" flag cleared by mkfs.xfs, so when validating
    the secondary superblocks during a grow operation we have to avoid
    checking this field. Even if we fix mkfs, we will still have to
    ignore this field for verification purposes unless a version of mkfs
    that does not have this bug was used.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit eab4e63368b4cfa597dbdac66d1a7a836a693b7d
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:02 2012 +1100

    xfs: uncached buffer reads need to return an error
    
    With verification being done as an IO completion callback, different
    errors can be returned from a read. Uncached reads only return a
    buffer or NULL on failure, which means the verification error cannot
    be returned to the caller.
    
    Split the error handling for these reads into two - a failure to get
    a buffer will still return NULL, but a read error will return a
    referenced buffer with b_error set rather than NULL. The caller is
    responsible for checking the error state of the buffer returned.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

commit c3f8fc73ac97b76a12692088ef9cace9af8422c0
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Mon Nov 12 22:54:01 2012 +1100

    xfs: make buffer read verication an IO completion function
    
    Add a verifier function callback capability to the buffer read
    interfaces.  This will be used by the callers to supply a function
    that verifies the contents of the buffer when it is read from disk.
    This patch does not provide callback functions, but simply modifies
    the interfaces to allow them to be called.
    
    The reason for adding this to the read interfaces is that it is very
    difficult to tell fom the outside is a buffer was just read from
    disk or whether we just pulled it out of cache. Supplying a callbck
    allows the buffer cache to use it's internal knowledge of the buffer
    to execute it only when the buffer is read from disk.
    
    It is intended that the verifier functions will mark the buffer with
    an EFSCORRUPTED error when verification fails. This allows the
    reading context to distinguish a verification error from an IO
    error, and potentially take further actions on the buffer (e.g.
    attempt repair) based on the error reported.
    
    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Reviewed-by: Christoph Hellwig <hch@xxxxxx>
    Reviewed-by: Phil White <pwhite@xxxxxxx>
    Signed-off-by: Ben Myers <bpm@xxxxxxx>

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

Summary of changes:
 fs/xfs/xfs_ag.h           |    4 +
 fs/xfs/xfs_alloc.c        |  140 ++++++++++++---
 fs/xfs/xfs_alloc.h        |    3 +
 fs/xfs/xfs_alloc_btree.c  |   77 ++++++++
 fs/xfs/xfs_alloc_btree.h  |    2 +
 fs/xfs/xfs_attr.c         |   85 +++------
 fs/xfs/xfs_attr_leaf.c    |  106 +++++++----
 fs/xfs/xfs_attr_leaf.h    |    6 +
 fs/xfs/xfs_bmap.c         |   62 ++++---
 fs/xfs/xfs_bmap_btree.c   |   63 +++++++
 fs/xfs/xfs_bmap_btree.h   |    1 +
 fs/xfs/xfs_btree.c        |   78 ++++----
 fs/xfs/xfs_btree.h        |   11 +-
 fs/xfs/xfs_buf.c          |   59 ++++--
 fs/xfs/xfs_buf.h          |   27 ++-
 fs/xfs/xfs_da_btree.c     |  135 +++++++++++---
 fs/xfs/xfs_da_btree.h     |   10 +-
 fs/xfs/xfs_dir2_block.c   |  436 ++++++++++++++++++++++++++-------------------
 fs/xfs/xfs_dir2_data.c    |  170 ++++++++++++++----
 fs/xfs/xfs_dir2_leaf.c    |  172 ++++++++++++------
 fs/xfs/xfs_dir2_node.c    |  288 +++++++++++++++++++-----------
 fs/xfs/xfs_dir2_priv.h    |   19 +-
 fs/xfs/xfs_dquot.c        |  134 +++++++++++---
 fs/xfs/xfs_dquot.h        |    2 +
 fs/xfs/xfs_file.c         |    4 +-
 fs/xfs/xfs_fsops.c        |   38 ++--
 fs/xfs/xfs_ialloc.c       |   74 +++++---
 fs/xfs/xfs_ialloc.h       |    4 +-
 fs/xfs/xfs_ialloc_btree.c |   55 ++++++
 fs/xfs/xfs_ialloc_btree.h |    2 +
 fs/xfs/xfs_inode.c        |  131 +++++++++-----
 fs/xfs/xfs_inode.h        |    1 +
 fs/xfs/xfs_itable.c       |    3 +-
 fs/xfs/xfs_log.c          |    3 +-
 fs/xfs/xfs_log_recover.c  |   13 +-
 fs/xfs/xfs_mount.c        |  130 ++++++++++----
 fs/xfs/xfs_mount.h        |    4 +-
 fs/xfs/xfs_qm.c           |    6 +-
 fs/xfs/xfs_rtalloc.c      |   15 +-
 fs/xfs/xfs_trans.h        |   19 +-
 fs/xfs/xfs_trans_buf.c    |    9 +-
 fs/xfs/xfs_vnodeops.c     |    2 +-
 42 files changed, 1820 insertions(+), 783 deletions(-)


hooks/post-receive
-- 
XFS development tree

<Prev in Thread] Current Thread [Next in Thread>
  • [XFS updates] XFS development tree branch, for-next, updated. v3.7-rc1-70-g1813dd6, xfs <=