sendfile a _FILE_OFFSET_BITS=64

Jirka Kosina jikos na jikos.cz
Sobota Prosinec 20 01:04:26 CET 2003


On Sat, 20 Dec 2003, Honza Houstek wrote:

> Nejak se mi nedari s glibc 2.2.5 nic zkompilovat se sendfile pro velke
> soubory (konkretne se jedna o proftpd). Na testovacim stroji s glibc 2.3.2
> se mi to podarilo. Nemuzu si dovolit upgrade glibc, ale bohuzel se mi
> nepodarilo zjistit, kde konkretne je problem (a google vysypal plno
> zmatenych odkazu, asi jsem se spatne ptal).
> Budu vdecny za jakakoliv nasmerovani.

Myslim ze zadnym trivialnim ani mene trivialnim zpusobem to moc resitelne 
neni, z toho duvodu, ze pokud si nemuzes dovolit upgrade glibc, tak se 
proste nevyhnes tomu, ze nekde v binarkach glibc mas zkompilovany tenhle 
kod (viz sys/sendfile.h na glibc 2.2.x):

#ifdef __USE_FILE_OFFSET64
# error "<sendfile.h> cannot be used with _FILE_OFFSET_BITS=64"
#endif

Jeden z obskurnejsich zpusobu jak to obejit, ktery mne napada, je napsat 
si nejaky wrapper, ktery bude volat prislusne 64bitove syscally primo (nez 
pres vadnou glibc), a tento wrapper tomu proftpd preloadovat. Ale je dost 
mozne ze v tom budou skryty problemy ktere ted z fleku nevidim a nikde uz 
nemam system s bezici glibc 2.2.x, abych to vyzkousel.

Nevim presne od jake verze glibc to funguje, mozna uz od nejake 
pozdejsi 2.2.x, ale je fakt, ze 2.3.x uz v sendfile() pro velke soubory 
podporu ma.

-- 
JiKos.


Další informace o konferenci Linux