As the number of fragments in a file increases, you can watch the number of bytes used in the MFT record grow. As expected, it grows in increments of 8 until it fills every last byte of the 1024 byte base record, before splitting into a second record. At first blush, you might expect the answer to be "1024 - headerlength."
However, as that second record grows, it doesn't use every byte of that record. Instead, it tops out at 1016, leaving 8 bytes of the record unused when it splits into a 3rd record (see below). If I continue splitting the runs, the third record will also split, again at 1016 instead of 1024.
NTFS is usually highly efficient in handling MFT records, which makes this behavior highly suspect. It smells like a bug, although I suppose there could be some obscure reason it's necessary.
But then I started experimenting with 4k MFT records (format /L
). And both the base records and the extension records always use the full 4096 bytes.
So now it really looks like a bug. Although I'm not sure if the bug is that 1k records top out at 1016, or that 4k records don't top out at 4088. Either there's a good reason to reserve those final bytes or there isn't, right?
In addition to wasting a precious resource, it makes computing 'available' space on MFT records really complicated. Is the formula really "assume records will grow to the MFT record size, unless it's an extension record, then subtract 8, unless it's a 4k record, then don't do the subtraction?" Or does this behavior imply there's some other criteria here? Is there a trick?
FWIW, here's the 1016 byte record right before the split (as seen in a disk editor). You can see the end of attributes marker (FFFFFFFF 82794711) followed by 8 empty bytes. The trailing 02 00 is the Updatebytes used by MFT records. After the next split, the size of this record drops in half.
Offset | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ASCII
------------------------------------------------------------------------------------------------
00C8788400 | 46 49 4C 45 30 00 03 00 E2 2F 31 C5 11 00 00 00 | FILE0..../1.....
00C8788410 | 2F 00 00 00 38 00 01 00 F8 03 00 00 00 04 00 00 | /...8...........
00C8788420 | 51 31 00 00 00 00 8F 00 01 00 00 00 21 1E 02 00 | Q1..........!...
00C8788430 | 02 00 11 01 00 00 00 00 80 00 00 00 B8 03 00 00 | ................
00C8788440 | 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00C8788450 | 3E 08 00 00 00 00 00 00 40 00 00 00 00 00 00 00 | >.......@.......
00C8788460 | 00 F0 83 00 00 00 00 00 62 EB 83 00 00 00 00 00 | ........b.......
00C8788470 | 62 EB 83 00 00 00 00 00 41 01 80 F0 9E 03 11 01 | b.......A.......
00C8788480 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788490 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87884A0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87884B0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87884C0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87884D0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87884E0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87884F0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788500 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788510 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788520 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788530 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788540 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788550 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788560 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788570 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788580 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788590 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87885A0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87885B0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87885C0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87885D0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87885E0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87885F0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 02 00 | ................
00C8788600 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788610 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788620 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788630 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788640 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788650 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788660 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788670 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788680 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788690 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87886A0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87886B0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87886C0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C87886D0 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87886E0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87886F0 | FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788700 | 11 01 FF 11 01 FF 31 01 32 A1 FE 11 01 FF 21 01 | ......1.2.....!.
00C8788710 | 3A FE 11 01 FF 21 01 C3 F8 11 01 FF 21 01 BD FB | :....!......!...
00C8788720 | 11 01 FF 11 01 FF 21 01 52 FD 11 01 FF 11 01 FF | ......!.R.......
00C8788730 | 11 01 FF 21 01 A5 A9 11 01 FF 21 01 A2 EF 11 01 | ...!......!.....
00C8788740 | FA 11 01 F9 11 01 FF 11 01 FF 11 01 FF 11 01 FD | ................
00C8788750 | 11 01 FF 11 01 FB 11 01 FF 11 01 F2 11 01 FB 11 | ................
00C8788760 | 01 FC 11 01 FD 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C8788770 | FD 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF | ................
00C8788780 | 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C8788790 | 01 FF 11 01 FF 11 01 FF 11 01 FF 21 01 F4 FE 21 | ...........!...!
00C87887A0 | 01 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 | ................
00C87887B0 | 01 FF 11 01 FF 11 01 FF 21 01 FD FE 11 01 FF 11 | ........!.......
00C87887C0 | 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 FF 11 01 | ................
00C87887D0 | FF 11 01 85 11 01 FF 11 01 FB 11 01 FF 11 01 FF | ................
00C87887E0 | 11 01 FF 11 01 FB 42 1F 07 3A 3D C5 01 00 00 00 | ......B..:=.....
00C87887F0 | FF FF FF FF 82 79 47 11 00 00 00 00 00 00 02 00 | .....yG.........