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 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 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs