Skip to content

Commit d3bc0e6

Browse files
committed
Merge tag 'for-4.18-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
Pull btrfs fixes from David Sterba: "We have a few regression fixes for qgroup rescan status tracking and the vm_fault_t conversion that mixed up the error values" * tag 'for-4.18-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: Btrfs: fix mount failure when qgroup rescan is in progress Btrfs: fix regression in btrfs_page_mkwrite() from vm_fault_t conversion btrfs: quota: Set rescan progress to (u64)-1 if we hit last leaf
2 parents 4a770e6 + e4e7ede commit d3bc0e6

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

fs/btrfs/inode.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9005,13 +9005,14 @@ vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
90059005

90069006
unlock_extent_cached(io_tree, page_start, page_end, &cached_state);
90079007

9008-
out_unlock:
90099008
if (!ret2) {
90109009
btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE, true);
90119010
sb_end_pagefault(inode->i_sb);
90129011
extent_changeset_free(data_reserved);
90139012
return VM_FAULT_LOCKED;
90149013
}
9014+
9015+
out_unlock:
90159016
unlock_page(page);
90169017
out:
90179018
btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE, (ret != 0));

fs/btrfs/qgroup.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2680,8 +2680,10 @@ qgroup_rescan_leaf(struct btrfs_fs_info *fs_info, struct btrfs_path *path,
26802680
free_extent_buffer(scratch_leaf);
26812681
}
26822682

2683-
if (done && !ret)
2683+
if (done && !ret) {
26842684
ret = 1;
2685+
fs_info->qgroup_rescan_progress.objectid = (u64)-1;
2686+
}
26852687
return ret;
26862688
}
26872689

@@ -2784,13 +2786,20 @@ qgroup_rescan_init(struct btrfs_fs_info *fs_info, u64 progress_objectid,
27842786

27852787
if (!init_flags) {
27862788
/* we're resuming qgroup rescan at mount time */
2787-
if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN))
2789+
if (!(fs_info->qgroup_flags &
2790+
BTRFS_QGROUP_STATUS_FLAG_RESCAN)) {
27882791
btrfs_warn(fs_info,
27892792
"qgroup rescan init failed, qgroup is not enabled");
2790-
else if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON))
2793+
ret = -EINVAL;
2794+
} else if (!(fs_info->qgroup_flags &
2795+
BTRFS_QGROUP_STATUS_FLAG_ON)) {
27912796
btrfs_warn(fs_info,
27922797
"qgroup rescan init failed, qgroup rescan is not queued");
2793-
return -EINVAL;
2798+
ret = -EINVAL;
2799+
}
2800+
2801+
if (ret)
2802+
return ret;
27942803
}
27952804

27962805
mutex_lock(&fs_info->qgroup_rescan_lock);

0 commit comments

Comments
 (0)