Linuxtrent: Re: TAR da 12 GB!!

  • From: ianezz@xxxxxxxxxx
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Tue, 6 Nov 2001 15:26:55 +0100

Il clone di Lele Gaifax ha segretamente scritto:

 > La limitazione non è del filesystem in senso stretto, ma del sistema
 > operativo in generale: 

Precisazione: vado a memoria, per cui non e` da prendere come oro
colato.

Internamente al kernel gli offset sono tenuti come interi a 64 bit
anche su piattaforme a 32 (il tipo e` kloff_t, se non erro: a suo
tempo ero andato a vedere come funzionava il VFS, e parlo di qualche
anno fa).

Se poi ext2 su piattaforme a 32 bit tronca (a suo tempo troncava -
adesso non credo), e` un problema di ext2.

Riguardo a lseek() con un off_t da 32 bit, non e` di per se` un
problema insormontabile: invece di una lseek() sola ne fai due o piu`
in fila, la prima con SEEK_SET, le successive con SEEK_CUR (per cui
gli offset si sommano). 

Funziona, posto che il filesystem (quando di file su un filesystem si
tratta - i block device non cascano in questa categoria) appunto
supporti file piu` lunghi di 2GB.

Chiaro che usare N lseek() in fila non e` il massimo della vita. 

Da qui una variante di lseek() (lseek64()? lseek_64? llseek()? non mi
ricordo piu` il nome) da usarsi con un tipo piu` grande, e che e`
stata inclusa qualche tempo fa nel kernel se non ricordo male.  

Non so che interfaccia offra la GNU libc, cmq. gia` ci dovrebbe essere
da tempo.

 > Esistono delle patch per portare a 64 bit quel tipo di dato anche
 > sulle architetture a 32 bit, ma Linus si è sempre detto contrarissimo
 > a includerle.

Infatti, mi pare che lui vada per kloff_t, da usarsi con la versione a
64 bit delle system call.

Chiaro che koff_t e kloff_t sono i tipi definiti dal kernel, e appunto
usabili solo dal codice all'interno del kernel, mentre la libc
dovrebbe avere i propri (off_t e loff_t? La mia versione non proprio
recente della GNU libc 2.x si include di straforo alcuni header del
kernel, e definisce questi ultimi in termini di koff_t e kloff_t).

-- 
UNIX diapers by Pannolini USPTO 2039887  http://www.uspto.gov
Matteo Ianeselli      ianezz AT sodalia.it  (+39) 0461 316452
Visita il LinuxTrent:            http://www.linuxtrent.it
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts: