[Ocfs2-tools-commits] branch, metaecc, created. ocfs2-tools-1.4.0-223-g6fdcc5d

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon Dec 29 19:16:25 PST 2008


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 "Tools to manage the ocfs2 filesystem.".

The branch, metaecc has been created
        at  6fdcc5d9f84e5c877428042b287df6e8a5168c63 (commit)

- Log -----------------------------------------------------------------
commit 6fdcc5d9f84e5c877428042b287df6e8a5168c63
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 19:13:43 2008 -0800

    libocfs2:  Add META_ECC to the supported feature list
    
    Add META_ECC to the list of features supported by the ocfs2 toolset.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 78a43d0e5c1a71f0c45e1516ed6d66868ef57f3b
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:59:48 2008 -0800

    tunefs.ocfs2: Enable and disable the metaecc feature.
    
    The metaecc feature requires a bit of work.
    
    To disable it is easy; just clear the feature bit.  All structures left
    behind are fully compatible with filesystems that don't know about
    metaecc.
    
    Enabling it is hard work.  We must run though every block in the
    filesystem and compute its checksum and error correction values.  But
    even that's not all.  Directory blocks need trailers to store the ECC
    values, and the directories might not have them yet.  More on the
    trailers below.
    
    The preparation step runs through every inode in the filesystem.  If the
    inode does not need directory trailers - that is, it is not a directory,
    is an inline directory, or already has trailers - we add all of its
    metadata blocks to an rbtree.  This caches the blocks for later
    re-write.  We don't want to have to re-read them in the writeout step.
    If the inode is a directory requiring trailers, we call
    tunefs_prepare_dir_trailer() to determine how much space it needs.  At
    the end of this step, we have a list of all directories requiring
    trailers, and we know whether we have enough space to do the work.
    
    Next, we install all the trailers.  When this completes, we have a valid
    filesystem with trailers.  For each directory, we add its blocks to the
    rbtree after we've added the trailers.
    
    Finally, we run through the rbtree and compute the ECC values for each
    block.  When this is finished, we can write the META_ECC feature bit to
    the superblock.
    
    We add two functions to handle the trailers.
    
    tunefs_prepare_dir_trailer() will walk a directory and check all of its
    dirblocks.  If the directory needs trailers, a tunefs_trailer_context is
    returned.  This contains all the information needed to add trailers to
    this directory.  The caller can use this structure to determine how much
    allocation is needed.  The caller passes this structure to
    tunefs_install_dir_trailer() to actually write out the trailers for this
    directory.
    
    We add a tunefs-in-progress flag for adding dirblock trailers.
    
    When tunefs.ocfs2 is adding directory block trailers, it cannot do it
    atomically.  For some directory blocks, dirents have to be moved out of
    the way to make room for the trailer.  These dirents are shifted to new
    directory blocks.  When tunefs writes out the changes, it does so in the
    following order:
    
    1) Write out the new blocks
    2) Update the directory's i_size to include the new blocks
    3) Write the old blocks with trailers in place.
    
    If tunefs crashes after (1), the new blocks are just unused allocation.
    We're safe.  If tunefs crashes after (3), we have the directory with
    trailers correctly installed.  However, if tunefs crashes after (2), the
    old dirents are in the old blocks, but the shifted copies are in the new
    blocks.  This leaves duplicate dirents.  fsck.ocfs2 can fix them, but we
    need to set OCFS2_TUNEFS_INPROG_DIR_TRAILER to make sure fsck is run.
    
    The alternative order, writing out the old blocks before the new ones,
    leaves missing dirents in the case of a crash.  That's not a good plan.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 245bf26e68eacdf3e5655f3f7a6192e88a1e78c4
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:54:54 2008 -0800

    mkfs.ocfs2: Support the metaecc feature.
    
    mkfs.ocfs2 can now create filesystems with the metaecc feature enabled.
    It will compute checksums and error correction codes during the mkfs
    process.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit fc3c382066056481c577c2a1802a8cc226731320
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:53:42 2008 -0800

    debugfs.ocfs2: Dump the ocfs2_block_check structure (metaecc)
    
    The metaecc feature uses the ocfs2_block_check structure.  debugfs.ocfs2
    can now dump that field wherever it finds it.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit aca1227ca025c6212b609c211f7604cf99ad42b7
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:52:31 2008 -0800

    libocfs2: Add support for metadata checksums and error correction.
    
    Use the functions in blockcheck.[ch] to add checksums and error
    correction to libocfs2.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d51f1498a4a117afd94b74391fa1ca69c0425970
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:48:22 2008 -0800

    libocfs2: Add blockcheck.[ch]
    
    blockcheck.c contains the crc32_le() function from the kernel and the
    ocfs2_hamming_encode/fix() functions for computing the error correction
    codes.  These will be used to implement metadata checksums and error
    correction in the tools ("metaecc").
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 8713d4bfc35d5575019aeb3fb542d7c552933c61
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:42:07 2008 -0800

    mkfs.ocfs2: Write directory trailers when necessary.
    
    Add the code to put trailers on dirblocks when they are created in mkfs.
    This includes a little convenience routine, fill_fake_fs(), that allows
    us to use simple functions on a fake ocfs2_filesys created from State.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit ec88a0b952e27507ce6b532e45a18be746c4c3e0
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:39:49 2008 -0800

    debugfs.ocfs2: Dump directory block trailers.
    
    Teach debugfs.ocfs2 to notice and dump directory block trailers via the
    new "dir_trailers" command.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 55e59554e243965f31a847358122b35f519186c4
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:37:28 2008 -0800

    fsck.ocfs2: Add checking of directory trailers.
    
    If we have trailers, fsck needs to know about them.
    
    In pass2, we don't treat the trailer of a directory block as a regular
    dirent.  We fix the trailer's compatibility fields if they are broken.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 07ef4225cd3936794a8df2123f8e93632059de27
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:35:31 2008 -0800

    libocfs2: Support directory block trailers.
    
    Teach the various parts of libocfs2 to read, skip, and write directory
    block trailers.  These trailers live as a fake dirent at the end of the
    block.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c637ddb48059354fb2b0b138e8f6a3f010f46a5a
Author: Joel Becker <joel.becker at oracle.com>
Date:   Wed Dec 17 15:58:32 2008 -0800

    libocfs2: Pass the dinode to ocfs2_read/write_dir_block().
    
    Future code will need to look at the dinode when reading and writing
    dirblocks, so let's pass it in.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 9b9c05e2ae7dfd24e51c576e12d64dac047efbbc
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Dec 29 18:12:15 2008 -0800

    libocfs2: Bring in ocfs2_fs.h from the kernel.
    
    Bring in the latest ocfs2_fs.h.  This includes the quota, xattr, and
    directory block trailer structures, as well as the ocfs2_block_check
    definitions we need for metadata checksums.
    
    The only changes from the kernel are:
    
    - Remove XATTR, QUOTA, and META_ECC from the list of supported features.
    - Remove the quota system files from the system inode list.
    
    sizetest.c is updated to match a few structure changes.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

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


hooks/post-receive
-- 
Tools to manage the ocfs2 filesystem.



More information about the Ocfs2-tools-commits mailing list