Skip to content

Instantly share code, notes, and snippets.

@rfjakob
Last active September 11, 2021 12:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rfjakob/cbc7eae945551177b17c110b6874b8ad to your computer and use it in GitHub Desktop.
Save rfjakob/cbc7eae945551177b17c110b6874b8ad to your computer and use it in GitHub Desktop.
# This is on ext4, kernel 5.13.5
$ rm foo ; echo hello > foo; SECONDS=0 ; while sleep 1 ; do echo -n "$SECONDS " ; filefrag -v foo | grep eof ; done
1 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
2 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
3 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
4 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
5 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
6 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
7 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
8 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
9 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
10 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
11 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
12 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
13 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
14 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
15 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
16 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
17 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
18 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
19 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
20 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
21 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
22 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
23 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
24 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
25 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
26 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
27 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
28 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
29 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
30 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
31 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
32 0: 0.. 0: 2130481.. 2130481: 1: last,eof
33 0: 0.. 0: 2130481.. 2130481: 1: last,eof
34 0: 0.. 0: 2130481.. 2130481: 1: last,eof
btrfs:
/mnt/btrfs.mnt$ rm foo ; echo hello > foo; SECONDS=0 ; while sleep 1 ; do echo -n "$SECONDS " ; filefrag -v foo | grep eof ; done
rm: cannot remove 'foo': No such file or directory
1 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
2 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
3 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
4 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
5 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
6 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
7 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
8 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
9 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
10 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
11 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
12 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
13 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
14 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
15 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
16 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
17 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
18 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
19 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
20 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
21 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
22 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
23 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
24 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
25 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
26 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
27 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
28 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
29 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
30 0: 0.. 0: 0.. 0: 1: last,unknown_loc,delalloc,eof
31 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
32 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
33 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
34 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
Overwrite by rename, ext4:
~/tmp$ touch foo ; echo hello > foo.tmp ; mv foo.tmp foo ; SECONDS=0 ; while true ; do echo -n "$SECONDS " ; filefrag -v foo | grep eof ; sleep 1 ; done
0 0: 0.. 0: 2130481.. 2130481: 1: last,unwritten,eof
1 0: 0.. 0: 2130481.. 2130481: 1: last,eof
2 0: 0.. 0: 2130481.. 2130481: 1: last,eof
3 0: 0.. 0: 2130481.. 2130481: 1: last,eof
Overwrite by rename, btrfs:
/mnt/btrfs.mnt$ touch foo ; echo hello > foo.tmp ; mv foo.tmp foo ; SECONDS=0 ; while true ; do echo -n "$SECONDS " ; filefrag -v foo | grep eof ; sleep 1 ; done
0 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
1 0: 0.. 4095: 0.. 4095: 4096: last,not_aligned,inline,eof
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment