At 02/25/2017 04:23 PM, Stefan Priebe - Profihost AG wrote:
Dear Qu,
any news on your branch? I still don't see it merged anywhere.
Greets,
Stefan
I just remember that Liu Bo has commented one of the patches, I'm afraid
I can only push these patches until I addressed his concern.
I'll
Introduce a new parameter, struct extent_changeset for
btrfs_qgroup_reserved_data() and its callers.
Such extent_changeset was used in btrfs_qgroup_reserve_data() to record
which range it reserved in current reserve, so it can free it at error
path.
The reason we need to export it to callers is,
Quite a lot of qgroup corruption happens due to wrong timing of calling
btrfs_qgroup_prepare_account_extents().
Since the safest timing is calling it just before
btrfs_qgroup_account_extents(), there is no need to separate these 2
function.
Merging them will make code cleaner and less bug prone.
[BUG]
For the following case, btrfs can underflow qgroup reserved space
at error path:
(Page size 4K, function name without "btrfs_" prefix)
Task A | Task B
--
Buffered_write [0, 2K)
Pull request can be fetched from my github:
https://github.com/adam900710/linux.git qgroup_fixes_for_4.11
The base is 6288d6eabc7505f42dda34a2c2962f91914be3a4.
Author: Liu Bo
Date: Tue Feb 21 12:12:58 2017 -0800
Btrfs: use the correct type when creating cow dio
[BUG]
The easist way to reproduce the bug is:
--
# mkfs.btrfs -f $dev -n 16K
# mount $dev $mnt -o inode_cache
# btrfs quota enable $mnt
# btrfs quota rescan -w $mnt
# btrfs qgroup show $mnt
qgroupid rfer excl
0/5 32.00KiB
[BUG]
Under the following case, we can underflow qgroup reserved space.
Task A|Task B
---
Quota disabled |
Buffered write |
|- btrfs_check_data_free_space() |
Newly introduced qgroup reserved space trace points are normally nested
into several common qgroup operations.
While some other trace points are not well placed to co-operate with
them, causing confusing output.
This patch re-arrange trace_btrfs_qgroup_release_data() and
Introduce the following trace points:
qgroup_update_reserve
qgroup_meta_reserve
These trace points are handy to trace qgroup reserve space related
problems.
Signed-off-by: Qu Wenruo
---
fs/btrfs/qgroup.c| 15 +++
include/trace/events/btrfs.h |
For btrfs_qgroup_account_extent(), modify make it exit quicker for
non-fs extents.
This will also reduce the noise in trace_btrfs_qgroup_account_extent
event.
Signed-off-by: Qu Wenruo
---
fs/btrfs/qgroup.c | 41 +++--
1 file changed,
btrfs_qgroup_release/free_data() only returns 0 or minus error
number(ENOMEM is the only possible error).
This is normally good enough, but sometimes we need the accurate byte
number it freed/released.
Change it to return actually released/freed bytenr number instead of 0
for success.
And
So far 4.10.0 seems to be flawless for me. All the strange OOMs (which
may or may not were related to Btrfs but it looked that way), random
unexplained Btrfs mount failures (as well as some various other things
totally unrelated to filesystems like sdhc card reader driver
problems) which were
I sent mail to David asking about these unmerged patchset, but no reply yet.
And to my surprise, the patch even disappeared from david's for-next branch.
Not sure what's wrong with all these unmerged patches.
Thanks,
Qu
At 02/25/2017 04:23 PM, Stefan Priebe - Profihost AG wrote:
Dear Qu,
Hitting this fairly frequently.. I'm not sure if this is the same bug I've
been hitting occasionally since 4.9. The assertion looks new to me at least.
Dave
assertion failed: last_size == new_size, file: fs/btrfs/inode.c, line: 4619
[ cut here ]
kernel BUG at
On Fri, Feb 24, 2017 at 06:39:20PM +0100, Goffredo Baroncelli wrote:
> Hi,
> On 2017-02-24 03:32, Lakshmipathi.G wrote:
> > Hi.
> >
> > I tried to a create list of corruption test scenarios for scrubbing process
> > with RAID5.
> > Here's the list:
> >
15 matches
Mail list logo