Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Large File Support (>2GB)

[es] :: Kernel i OS programiranje :: Large File Support (>2GB)

[ Pregleda: 3224 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

amavisto
Nis

Član broj: 4256
Poruke: 18
*.ptt.yu.

Jabber: amavisto@elitesecurity.org
ICQ: 85132898


Profil

icon Large File Support (>2GB)16.03.2006. u 17:17 - pre 220 meseci
pozdrav ljudi,

pokusavam da izvucem zadnjih par megabajta iz jednog velikog fajla (>2GB).

OS je RedHat, kernel 2.4.21-32.0.1.ELsmp (viseprocesorska masina, Intel Xeoni na 3.6GHz).

fajl sistem na toj particiji je ext3 (kazu da uredno podrzava LFS). glibc > 2.3.2.

svi fajlovi u tom diru imaju -rw-r--r-- dozvole.
probam kao root da otvorim file i dobijem permission denied za fajl veci od 2GB
(manji od 2GB se uredno otvori).

u cemu je caka? tj. kako da otkrijem u cemu je caka :)

evo kako izgleda deo koda (varijanta sa fopen/fopen64 isto ne radi):

Code:


#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define BUF_SIZE 8192

int main(int argc, char * argv[])
{
    int log, extract;
   
...

    if ((log = open(argv[1], O_RDONLY | O_LARGEFILE)) == -1) {
    perror("open");
    return -1;
    }

...

    return 0;
}



milan
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: Large File Support (>2GB)16.03.2006. u 21:20 - pre 220 meseci
Necu puno ulaziti u tvoj problem, ali evo ti cinjenica:
Ako je najveci moguci broj na tvom kompajleru 32-bitni onda je najveca vrijednost int-a 2 GB. Onda je nemoguce indexirati povise ta dva GB.
 
Odgovor na temu

amavisto
Nis

Član broj: 4256
Poruke: 18
*.ptt.yu.

Jabber: amavisto@elitesecurity.org
ICQ: 85132898


Profil

icon Re: Large File Support (>2GB)16.03.2006. u 22:29 - pre 220 meseci
Citat:
NrmMyth: Necu puno ulaziti u tvoj problem, ali evo ti cinjenica:
Ako je najveci moguci broj na tvom kompajleru 32-bitni onda je najveca vrijednost int-a 2 GB.
Onda je nemoguce indexirati povise ta dva GB.


da, da, znam da je 2^32 = 2GB... ali svuda pricaju kako je i na 32bitnim platofmama
moguce citati i pisati fajlove vece od 2GB (kako bi onda mysql imala tabele velicine 4GB...)

evo gde sam gledao (izmedju ostalog):

http://www.uwsg.iu.edu/hypermail/linux/kernel/0011.2/0042.html (linux kernel arhiva)

http://www.suse.de/~aj/linux_lfs.html

http://linuxgazette.net/issue67/tag/13.html

http://dev.mysql.com/doc/refman/5.0/en/table-size.html

itd.


 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Large File Support (>2GB)17.03.2006. u 03:58 - pre 220 meseci
Ja ti ne mogu puno ulaziti u tu temu, jer ne znam puno o tome.

Unsigned int = 2^32 = 4 GB

Po meni ovisi sve o tipu "size_t" ako govorimo o standardnom C/C++.
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: Large File Support (>2GB)

[ Pregleda: 3224 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.