lkml.org 
[lkml]   [2012]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 098/122] ext4: use proper csum calculation in ext4_rename
    Date
    From: Greg KH <gregkh@linuxfoundation.org>

    3.5-stable review patch. If anyone has any objections, please let me know.

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

    From: Tao Ma <boyu.mt@taobao.com>

    commit ef58f69c3c34f6377f1e21d3533c806dbd980ad0 upstream.

    In ext4_rename, when the old name is a dir, we need to
    change ".." to its new parent and journal the change, so
    with metadata_csum enabled, we have to re-calc the csum.

    As the first block of the dir can be either a htree root
    or a normal directory block and we have different csum
    calculation for these 2 types, we have to choose the right
    one in ext4_rename.

    btw, it is found by xfstests 013.

    Signed-off-by: Tao Ma <boyu.mt@taobao.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Acked-by: Darrick J. Wong <djwong@us.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/ext4/namei.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    --- a/fs/ext4/namei.c
    +++ b/fs/ext4/namei.c
    @@ -2918,8 +2918,15 @@ static int ext4_rename(struct inode *old
    PARENT_INO(dir_bh->b_data, new_dir->i_sb->s_blocksize) =
    cpu_to_le32(new_dir->i_ino);
    BUFFER_TRACE(dir_bh, "call ext4_handle_dirty_metadata");
    - retval = ext4_handle_dirty_dirent_node(handle, old_inode,
    - dir_bh);
    + if (is_dx(old_inode)) {
    + retval = ext4_handle_dirty_dx_node(handle,
    + old_inode,
    + dir_bh);
    + } else {
    + retval = ext4_handle_dirty_dirent_node(handle,
    + old_inode,
    + dir_bh);
    + }
    if (retval) {
    ext4_std_error(old_dir->i_sb, retval);
    goto end_rename;



    \
     
     \ /
      Last update: 2012-08-08 02:01    [W:0.043 / U:59.804 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site