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.