Skip to contentSkip to conversation

Kernel 4.4.0 intermittent ENOSPC during heavy data write and concurrent snapshotting

DISCUSSION Roman Mamedov 3 participants 4 messages Jan 20, 2016 – Jan 22, 2016 Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hello,

To reproduce...

*) in one terminal window:

btrfs sub create test
chattr +C test
cd test/
while true; do dd if=/dev/zero of=zerofile bs=1M count=1024; sync; done

*) in another terminal window start repeatedly snapshotting 'test', at random
1-3-5 second intervals:

    mkdir snaps
    btrfs sub snap test snaps/test-`date +%Y-%m-%dT%H:%M:%S`

The 'dd' output of first window then looks like this for me:

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.49982 s, 2.1 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.541291 s, 2.0 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.88021 s, 220 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.56427 s, 235 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.530991 s, 2.0 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.68497 s, 189 MB/s
dd: writing `zerofile': No space left on device 1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000591943 s, 0.0 kB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.25015 s, 253 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.66459 s, 230 MB/s
dd: writing `zerofile': No space left on device 1015+0 records in
1014+0 records out
1063489536 bytes (1.1 GB) copied, 3.0433 s, 349 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.24264 s, 253 MB/s
dd: writing `zerofile': No space left on device 1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000647234 s, 0.0 kB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.56673 s, 301 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.71281 s, 289 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.551317 s, 1.9 GB/s ^C
-----

This also causes my KVM VMs to fail with a high probability during snapshotting of their backing subvolume (as described in the previous thread).

Signature · 2 lines
With respect,
Roman
#1 lore raw
Quoted 70 lines · Roman Mamedov

Hello,

To reproduce...

*) in one terminal window:

btrfs sub create test
chattr +C test
cd test/
while true; do dd if=/dev/zero of=zerofile bs=1M count=1024; sync; done

*) in another terminal window start repeatedly snapshotting 'test', at random
1-3-5 second intervals:

    mkdir snaps
    btrfs sub snap test snaps/test-`date +%Y-%m-%dT%H:%M:%S`

The 'dd' output of first window then looks like this for me:

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.49982 s, 2.1 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.541291 s, 2.0 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.88021 s, 220 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.56427 s, 235 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.530991 s, 2.0 GB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.68497 s, 189 MB/s
dd: writing `zerofile': No space left on device 1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000591943 s, 0.0 kB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.25015 s, 253 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.66459 s, 230 MB/s
dd: writing `zerofile': No space left on device 1015+0 records in
1014+0 records out
1063489536 bytes (1.1 GB) copied, 3.0433 s, 349 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.24264 s, 253 MB/s
dd: writing `zerofile': No space left on device 1+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000647234 s, 0.0 kB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.56673 s, 301 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.71281 s, 289 MB/s 1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.551317 s, 1.9 GB/s ^C
-----

Quoted 2 lines

This also causes my KVM VMs to fail with a high probability during snapshotting of their backing subvolume (as described in the previous thread).

Try this: https://patchwork.kernel.org/patch/7967161/

(It's not a regression in 4.4 however, it has been there for a long time)

Quoted 4 lines

--
With respect,
Roman

Signature · 5 lines
Filipe David Manana,

"Reasonable men adapt themselves to the world.
 Unreasonable men adapt the world to themselves.
 That's why all progress depends on unreasonable men."
#2 lore raw

Hello,

Quoted 3 lines · On Wed, 20 Jan 2016 20:46:39 +0000 Filipe Manana <[email protected]> wrote:

Try this: https://patchwork.kernel.org/patch/7967161/

(It's not a regression in 4.4 however, it has been there for a long time)

I can't reproduce the problem on 4.3.3 or 3.18.22. On 4.4.0 it occurs almost instantly (faster if not including 'sync' into the dd cycle).

The patch seems to fix it for 4.4.0, thanks.

Signature · 2 lines
With respect,
Roman
#3 lore raw
Quoted 5 lines · Roman Mamedov

Hello,

On Wed, 20 Jan 2016 20:46:39 +0000
Filipe Manana <[email protected]> wrote:

Quoted 9 lines
Quoted 3 lines

Try this: https://patchwork.kernel.org/patch/7967161/

(It's not a regression in 4.4 however, it has been there for a long time)

I can't reproduce the problem on 4.3.3 or 3.18.22. On 4.4.0 it occurs almost instantly (faster if not including 'sync' into the dd cycle).

The patch seems to fix it for 4.4.0, thanks.

FWIW, I managed to reproduce it on 4.3.2 just last night, it just takes a lot longer to hit than it does in 4.4.0. I think something might have changed that made this more likely to be hit, but I have no idea what.