View in context in the libbitcoin Slack #general mirror.
fallocate on macOS is working as expected. The disk full fault we had on Linux was a result of relying on sparse allocation via ftruncate . That's resolved by using fallocate but macOS doesn't implement it. So disk full should be working properly on macOS now. This is the proof of proper behavior, with file system sparse and full sizes compared against the Windows sizes, with default initial sizes and files closed vs. open. Exact same to the byte, and physically allocated.
FILES CLOSED ++++++++++++ evoskuil@Big-Mac bitcoin % ls -l total 88 -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 address.data -rw-r--r-- 1 evoskuil staff 98 Oct 12 11:40 archive_header.data -rw-r--r-- 1 evoskuil staff 79 Oct 12 11:40 archive_input.data -rw-r--r-- 1 evoskuil staff 13 Oct 12 11:40 archive_ins.data -rw-r--r-- 1 evoskuil staff 81 Oct 12 11:40 archive_output.data -rw-r--r-- 1 evoskuil staff 5 Oct 12 11:40 archive_outs.data -rw-r--r-- 1 evoskuil staff 39 Oct 12 11:40 archive_point.data -rw-r--r-- 1 evoskuil staff 65 Oct 12 11:40 archive_tx.data -rw-r--r-- 1 evoskuil staff 10 Oct 12 11:40 archive_txs.data -rw-r--r-- 1 evoskuil staff 3 Oct 12 11:40 candidate.data -rw-r--r-- 1 evoskuil staff 3 Oct 12 11:40 confirmed.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 duplicate.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 filter_bk.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 filter_tx.data drwxr-xr-x 20 evoskuil staff 640 Oct 12 11:39 heads -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 prevout.data -rw-r--r-- 1 evoskuil staff 11 Oct 12 11:40 strong_tx.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 validated_bk.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 11:40 validated_tx.data Directory of M:\bitcoin 10/12/2025 11:58 AM <DIR> . 10/12/2025 11:58 AM <DIR> .. 10/12/2025 11:58 AM 0 address.data 10/12/2025 11:58 AM 98 archive_header.data 10/12/2025 11:58 AM 79 archive_input.data 10/12/2025 11:58 AM 13 archive_ins.data 10/12/2025 11:58 AM 81 archive_output.data 10/12/2025 11:58 AM 5 archive_outs.data 10/12/2025 11:58 AM 39 archive_point.data 10/12/2025 11:58 AM 65 archive_tx.data 10/12/2025 11:58 AM 10 archive_txs.data 10/12/2025 11:58 AM 3 candidate.data 10/12/2025 11:58 AM 3 confirmed.data 10/12/2025 11:58 AM 0 duplicate.data 10/12/2025 11:58 AM 0 filter_bk.data 10/12/2025 11:58 AM 0 filter_tx.data 10/12/2025 11:58 AM <DIR> heads 10/12/2025 11:58 AM 0 prevout.data 10/12/2025 11:58 AM 11 strong_tx.data 10/12/2025 11:58 AM 0 validated_bk.data 10/12/2025 11:58 AM 0 validated_tx.data 18 File(s) 407 bytes 3 Dir(s) 2,119,607,652,352 bytes free ==================== evoskuil@Big-Mac heads % ls -l total 28693968 -rw-r--r-- 1 evoskuil staff 8 Oct 12 11:40 address.head -rw-r--r-- 1 evoskuil staff 1545460 Oct 12 11:40 archive_header.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 11:40 archive_input.head -rw-r--r-- 1 evoskuil staff 4 Oct 12 11:40 archive_ins.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 11:40 archive_output.head -rw-r--r-- 1 evoskuil staff 4 Oct 12 11:40 archive_outs.head -rw-r--r-- 1 evoskuil staff 10927817096 Oct 12 11:40 archive_point.head -rw-r--r-- 1 evoskuil staff 1876890104 Oct 12 11:40 archive_tx.head -rw-r--r-- 1 evoskuil staff 4500010 Oct 12 11:40 archive_txs.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 11:40 candidate.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 11:40 confirmed.head -rw-r--r-- 1 evoskuil staff 4100 Oct 12 11:40 duplicate.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 11:40 filter_bk.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 11:40 filter_tx.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 11:40 prevout.head -rw-r--r-- 1 evoskuil staff 1876890104 Oct 12 11:40 strong_tx.head -rw-r--r-- 1 evoskuil staff 3600008 Oct 12 11:40 validated_bk.head -rw-r--r-- 1 evoskuil staff 10 Oct 12 11:40 validated_tx.head Directory of M:\bitcoin\heads 10/12/2025 11:58 AM <DIR> . 10/12/2025 11:58 AM <DIR> .. 10/12/2025 11:58 AM 8 address.head 10/12/2025 11:58 AM 1,545,460 archive_header.head 10/12/2025 11:58 AM 5 archive_input.head 10/12/2025 11:58 AM 4 archive_ins.head 10/12/2025 11:58 AM 5 archive_output.head 10/12/2025 11:58 AM 4 archive_outs.head 10/12/2025 11:58 AM 10,927,817,096 archive_point.head 10/12/2025 11:58 AM 1,876,890,104 archive_tx.head 10/12/2025 11:58 AM 4,500,010 archive_txs.head 10/12/2025 11:58 AM 3 candidate.head 10/12/2025 11:58 AM 3 confirmed.head 10/12/2025 11:58 AM 4,100 duplicate.head 10/12/2025 11:58 AM 3 filter_bk.head 10/12/2025 11:58 AM 5 filter_tx.head 10/12/2025 11:58 AM 5 prevout.head 10/12/2025 11:58 AM 1,876,890,104 strong_tx.head 10/12/2025 11:58 AM 3,600,008 validated_bk.head 10/12/2025 11:58 AM 10 validated_tx.head 18 File(s) 14,691,246,937 bytes 2 Dir(s) 2,119,607,652,352 bytes free FILES OPEN (network halted at startup) ++++++++++++++++++++++++++++++++++++++ evoskuil@Big-Mac bitcoin % ls -l total 345171760 -rw-r--r-- 1 evoskuil staff 1 Oct 12 12:38 address.data -rw-r--r-- 1 evoskuil staff 21000000 Oct 12 12:38 archive_header.data -rw-r--r-- 1 evoskuil staff 92500000000 Oct 12 12:38 archive_input.data -rw-r--r-- 1 evoskuil staff 8550000000 Oct 12 12:38 archive_ins.data -rw-r--r-- 1 evoskuil staff 25300000000 Oct 12 12:38 archive_output.data -rw-r--r-- 1 evoskuil staff 3700000000 Oct 12 12:38 archive_outs.data -rw-r--r-- 1 evoskuil staff 25700000000 Oct 12 12:38 archive_point.data -rw-r--r-- 1 evoskuil staff 17000000000 Oct 12 12:38 archive_tx.data -rw-r--r-- 1 evoskuil staff 1050000000 Oct 12 12:38 archive_txs.data -rw-r--r-- 1 evoskuil staff 2575500 Oct 12 12:38 candidate.data -rw-r--r-- 1 evoskuil staff 2575500 Oct 12 12:38 confirmed.data -rw-r--r-- 1 evoskuil staff 44 Oct 12 12:38 duplicate.data -rw-r--r-- 1 evoskuil staff 1 Oct 12 12:38 filter_bk.data -rw-r--r-- 1 evoskuil staff 1 Oct 12 12:38 filter_tx.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 12:38 flush.lock drwxr-xr-x 20 evoskuil staff 640 Oct 12 11:39 heads -rw-r--r-- 1 evoskuil staff 1 Oct 12 12:38 prevout.data -rw-r--r-- 1 evoskuil staff 0 Oct 12 12:38 process.lock -rw-r--r-- 1 evoskuil staff 2900000000 Oct 12 12:38 strong_tx.data -rw-r--r-- 1 evoskuil staff 1700000 Oct 12 12:38 validated_bk.data -rw-r--r-- 1 evoskuil staff 1 Oct 12 12:38 validated_tx.data Directory of M:\bitcoin 10/12/2025 12:15 PM <DIR> . 10/12/2025 12:15 PM <DIR> .. 10/12/2025 12:15 PM 1 address.data 10/12/2025 12:15 PM 21,000,000 archive_header.data 10/12/2025 12:15 PM 92,500,000,000 archive_input.data 10/12/2025 12:15 PM 8,550,000,000 archive_ins.data 10/12/2025 12:15 PM 25,300,000,000 archive_output.data 10/12/2025 12:15 PM 3,700,000,000 archive_outs.data 10/12/2025 12:15 PM 25,700,000,000 archive_point.data 10/12/2025 12:15 PM 17,000,000,000 archive_tx.data 10/12/2025 12:15 PM 1,050,000,000 archive_txs.data 10/12/2025 12:15 PM 2,575,500 candidate.data 10/12/2025 12:15 PM 2,575,500 confirmed.data 10/12/2025 12:15 PM 44 duplicate.data 10/12/2025 12:15 PM 1 filter_bk.data 10/12/2025 12:15 PM 1 filter_tx.data 10/12/2025 12:15 PM 0 flush.lock 10/12/2025 11:58 AM <DIR> heads 10/12/2025 12:15 PM 1 prevout.data 10/12/2025 12:15 PM 0 process.lock 10/12/2025 12:15 PM 2,900,000,000 strong_tx.data 10/12/2025 12:15 PM 1,700,000 validated_bk.data 10/12/2025 12:15 PM 1 validated_tx.data 20 File(s) 176,727,851,049 bytes 3 Dir(s) 1,942,879,830,016 bytes free ==================== evoskuil@Big-Mac heads % ls -l total 28693968 -rw-r--r-- 1 evoskuil staff 8 Oct 12 12:38 address.head -rw-r--r-- 1 evoskuil staff 1545460 Oct 12 12:38 archive_header.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 12:38 archive_input.head -rw-r--r-- 1 evoskuil staff 4 Oct 12 12:38 archive_ins.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 12:38 archive_output.head -rw-r--r-- 1 evoskuil staff 4 Oct 12 12:38 archive_outs.head -rw-r--r-- 1 evoskuil staff 10927817096 Oct 12 12:38 archive_point.head -rw-r--r-- 1 evoskuil staff 1876890104 Oct 12 12:38 archive_tx.head -rw-r--r-- 1 evoskuil staff 4500010 Oct 12 12:38 archive_txs.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 12:38 candidate.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 12:38 confirmed.head -rw-r--r-- 1 evoskuil staff 4100 Oct 12 12:38 duplicate.head -rw-r--r-- 1 evoskuil staff 3 Oct 12 12:38 filter_bk.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 12:38 filter_tx.head -rw-r--r-- 1 evoskuil staff 5 Oct 12 12:38 prevout.head -rw-r--r-- 1 evoskuil staff 1876890104 Oct 12 12:38 strong_tx.head -rw-r--r-- 1 evoskuil staff 3600008 Oct 12 12:38 validated_bk.head -rw-r--r-- 1 evoskuil staff 10 Oct 12 12:38 validated_tx.head Directory of M:\bitcoin\heads 10/12/2025 11:58 AM <DIR> . 10/12/2025 11:58 AM <DIR> .. 10/12/2025 11:58 AM 8 address.head 10/12/2025 11:58 AM 1,545,460 archive_header.head 10/12/2025 11:58 AM 5 archive_input.head 10/12/2025 11:58 AM 4 archive_ins.head 10/12/2025 11:58 AM 5 archive_output.head 10/12/2025 11:58 AM 4 archive_outs.head 10/12/2025 11:58 AM 10,927,817,096 archive_point.head 10/12/2025 11:58 AM 1,876,890,104 archive_tx.head 10/12/2025 11:58 AM 4,500,010 archive_txs.head 10/12/2025 11:58 AM 3 candidate.head 10/12/2025 11:58 AM 3 confirmed.head 10/12/2025 11:58 AM 4,100 duplicate.head 10/12/2025 11:58 AM 3 filter_bk.head 10/12/2025 11:58 AM 5 filter_tx.head 10/12/2025 11:58 AM 5 prevout.head 10/12/2025 11:58 AM 1,876,890,104 strong_tx.head 10/12/2025 11:58 AM 3,600,008 validated_bk.head 10/12/2025 11:58 AM 10 validated_tx.head 18 File(s) 14,691,246,937 bytes 2 Dir(s) 1,942,879,830,016 bytes free DU/STAT ++++++++++++++++++++ ls -l doesn't ensure we are seeing actually allocated space, but these do evoskuil@Big-Mac bitcoin % du -h archive_input.data 86G archive_input.data evoskuil@Big-Mac bitcoin % du -h archive_output.data 24G archive_output.data evoskuil@Big-Mac bitcoin % du -h archive_point.data 24G archive_point.data evoskuil@Big-Mac bitcoin % stat -f "%z %b %B" archive_input.data 92500000000 180664072 1760283584 evoskuil@Big-Mac bitcoin % stat -f "%z %b %B" archive_output.data 25300000000 49414072 1760283584 evoskuil@Big-Mac bitcoin % stat -f "%z %b %B" archive_point.data 25700000000 50195328 1760283584 evoskuil@Big-Mac bitcoin %