lkml.org 
[lkml]   [2013]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 112/133] Btrfs: release both paths before logging dir/changed extents
    Date
    3.8.13.7 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Josef Bacik <jbacik@fusionio.com>

    commit f3b15ccdbb9a79781578249a63318805e55a6c34 upstream.

    The ceph guys tripped over this bug where we were still holding onto the
    original path that we used to copy the inode with when logging. This is based
    on Chris's fix which was reported to fix the problem. We need to drop the paths
    in two cases anyway so just move the drop up so that we don't have duplicate
    code. Thanks,

    Signed-off-by: Josef Bacik <jbacik@fusionio.com>
    Signed-off-by: Chris Mason <chris.mason@fusionio.com>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    fs/btrfs/tree-log.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
    index 8a00e2f..372a7d4 100644
    --- a/fs/btrfs/tree-log.c
    +++ b/fs/btrfs/tree-log.c
    @@ -3684,8 +3684,9 @@ next_slot:
    }

    log_extents:
    + btrfs_release_path(path);
    + btrfs_release_path(dst_path);
    if (fast_search) {
    - btrfs_release_path(dst_path);
    ret = btrfs_log_changed_extents(trans, root, inode, dst_path);
    if (ret) {
    err = ret;
    @@ -3702,8 +3703,6 @@ log_extents:
    }

    if (inode_only == LOG_INODE_ALL && S_ISDIR(inode->i_mode)) {
    - btrfs_release_path(path);
    - btrfs_release_path(dst_path);
    ret = log_directory_changes(trans, root, inode, path, dst_path);
    if (ret) {
    err = ret;
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-08-17 11:21    [W:3.465 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site