On Thu, Apr 25, 2019 at 09:50:25PM +0800, Qu Wenruo wrote:
> 
> 
> On 2019/4/25 下午9:25, Josef Bacik wrote:
> [snip]
> >>>
> >>> What if the commit is reverted, if the problem is otherwise hard to fix?
> >>> This seems to break the semantics of fallocate so the performance should
> >>> not the main concern here.
> >>
> > 
> > Are we sure the ENOSPC is coming from the data reservation?  That change 
> > makes
> > us fall back on the old behavior, which means we should still succeed at 
> > making
> > the data reservation.
> > 
> > However it fallocate() _does not_ guarantee you won't fail the metadata
> > reservation, I suspect that may be what you are running into.
> 
> For this script, we only needs 4 file extents at most.
> Even the initial 8M metadata should be pretty enough, thus I don't think
> it's metadata causing the problem.
> ---
> #!/bin/bash
> 
> dev=/dev/test/test
> mnt=/mnt/btrfs
> 
> mkfs.btrfs -f $dev -b 512M
> 
> mount $dev $mnt
> 
> fallocate -l 384M $mnt/file1
> echo "fallocate success"
> sync
> dd if=/dev/zero bs=512K  oflag=direct conv=notrunc count=768 of=$mnt/file2
> 

Wellll we don't do the nocow check _at all_ for O_DIRECT, so mystery solved
there.

Josef

Reply via email to