Povrchni mini clanek kvuli jedne okrajove vlastnosti jadra a jeste jen castecne podporovane ? Kandidat pro zpravicku, tohle je mizerie …
Btw. krome problemu se zarovnanim data versus velikost bloku filesystemu snizuje pouzitelnost obsluha zachovani konzistence formatu ulozenych dat, kterou vidim jako daleko obvyklejsi nez binarni stream.
predpokladam, ze tato okrajova vlastnost bola do jadra zanesena kvoli podpore zahadzovania alokovanych blokov v DB systemoch, ktore nezriedka maju velkost internych struktur zarovnanu na maximalne jednotky nasobkov velkosti alokacnych blokov a tam sa takato vec teoreticky za istych okolnosti moze hodit (napr. pri preriedovani TXN logovacich suborov).
pre pana autora len odkaz: kernel to nepodporuje, pretoze to nie je jeho vec. obecna implementacia na urovni kernelu by bola rovnako junky ako je kazda jedna implementacia v userspace, pretoze proste veci funguju tak, ako funguju. polepit obsah viacerych suborov to nie je len tak. (o.i. napr. z podobneho dovodu neexistuje asi na ziadnom rozumnom systeme syscall implementujuci kopirovanie obsahu suboru).
Pozor s tim kopirovanim obsahu souboru. Jsou tu volani sendfile a splice, protoze uz nekdo zjistil, ze nema smysl pri kopirovani (ze souboru do sockety a podobne) tahat ty data do userlandu.
Nektere implementace filesystemu podporuji sdileni casti souboru (treba spolu s copy-on-write)(i kdyz je to treba jen po blocich), a mam za to, ze maji nejakou utilitu, ktera to na namountovanem fs umi vyuzit (takze musi nejak jadru vysvetlit, ze nebo co tam delaj, i kdyz treba pres nejake ioctl).
Nicmene to co by se libilo mne by bylo, tady mas soubor: rozrizni ho na dva na tomhle offsetu (zarovnanem treba na bloky), nebo naopak: tady mas dva soubory, nastav tomu prvnimu velikost na offset + delka druheho (pokud je kratsi) a presun obsah druheho na ten offset. Volitelne pak data v prvnim, ktere jsou od offsetu dal posun o delku druheho (zase offset i delka musi byt zarovnana na bloky).
U vetsiny filesystemu by to byla jen nejaka rychla manipulace s tabulkou bloku nebo extentu. Jedina potiz je v tom, ze vyuziti techto funkci je docela minoritni, ja bych asi jejich zacleneni neobhajil. Stejne tak mi prekvapuje, ze v clanku zminena feature se dostala do kernelu jako obecne volani. Spis bych pochopil, kdyby to bylo nejake FS-specificke ioctl, ti co tu funkcionalitu potrebuji, si nainstaluji fs, ktery to podporuje. Zda se, ze hralo roli to, ze je to vlastne jen pridani jednoho flagu.