lkml.org 
[lkml]   [2014]   [Oct]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16 006/127] Btrfs: try not to ENOSPC on log replay
    Date
    3.16-stable review patch.  If anyone has any objections, please let me know.

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

    From: Josef Bacik <jbacik@fb.com>

    commit 1d52c78afbbf80b58299e076a159617d6b42fe3c upstream.

    When doing log replay we may have to update inodes, which traditionally goes
    through our delayed inode stuff. This will try to move space over from the
    trans handle, but we don't reserve space in our trans handle on replay since we
    don't know how much we will need, so instead we try to flush. But because we
    have a trans handle open we won't flush anything, so if we are out of reserve
    space we will simply return ENOSPC. Since we know that if an operation made it
    into the log then we definitely had space before the box bought the farm then we
    don't need to worry about doing this space reservation. Use the
    fs_info->log_root_recovering flag to skip the delayed inode stuff and update the
    item directly. Thanks,

    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/btrfs/inode.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/fs/btrfs/inode.c
    +++ b/fs/btrfs/inode.c
    @@ -3656,7 +3656,8 @@ noinline int btrfs_update_inode(struct b
    * without delay
    */
    if (!btrfs_is_free_space_inode(inode)
    - && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID) {
    + && root->root_key.objectid != BTRFS_DATA_RELOC_TREE_OBJECTID
    + && !root->fs_info->log_root_recovering) {
    btrfs_update_root_times(trans, root);

    ret = btrfs_delayed_update_inode(trans, root, inode);



    \
     
     \ /
      Last update: 2014-10-28 09:01    [W:4.033 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site