Portál AbcLinuxu, 12. května 2025 01:25

Dotaz: lseek64 a 13TB

vlk avatar 26.2.2009 19:58 vlk | skóre: 23 | blog: u_vlka
lseek64 a 13TB
Přečteno: 287×
Odpovědět | Admin
Ak sa snazim spravit seek na disku ktory ma 13TB, tak to vrati vzdy chybu podla errno "ESPIPE", teda ze fd ukazuje na nieco, v com sa seekovat neda... nevie niekto ako sa to da obist ? dik.

PS: kompilujem to s _LARGEFILE64_SOURCE a na 64bitovom OS
You don't exist, Go away !
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

vlk avatar 26.2.2009 19:58 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
Odpovědět | | Sbalit | Link | Blokovat | Admin
este som zabudol napisat ze seekujem pomocou lseek64()
You don't exist, Go away !
26.2.2009 20:10 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: lseek64 a 13TB
A ešte si zabudol napísať, na čom tú funkciu lseek64 používaš (a teda, či ide o súbor, alebo niečo iné) a prípadne, o aký súborový systém ide. :)
vlk avatar 26.2.2009 20:18 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
mh, no to som zabudol :)

otvaram cez open() a otvaram priamo blokove zariadenie (napriklad /dev/sda)

ak je disk mensi (skusal som najvacsi z mensich 640GB) tak to ide v pohode, ale na 13T uz to nejde :(

v open() som skusal otvarat aj s O_LARGEFILE a tiez nic nepomohlo :(
You don't exist, Go away !
27.2.2009 08:53 frr | skóre: 34
Rozbalit Rozbalit vše Re: lseek64 a 13TB
Odpovědět | | Sbalit | Link | Blokovat | Admin

Mě to funguje. FC5 32b user space, různé vanilkové kernely (reálně zkoušeno od 2.6.22.6 výš), 32b i 64b kernely (64b se zapnutou kompatibilitou pro 32b user space). Podmínkou je, že v kernelu musí být zapnuto CONFIG_LBD (CONFIG_LSF zatím zapnuto nemám). Testuju s tím RAIDy.

Ve svém programu mám někde na začátku

#define __USE_LARGEFILE64

a device pak otvírám s flagem O_LARGEFILE . 

Co přesně dělá _LARGEFILE64_SOURCE, to z hlavy netuším - tipuju že totéž, co __USE_LARGEFILE64.

Co je zač ten 13TB disk? Jasně, nějaký RAID - přes jaký HBA je připojen? Nemůže to být chyba HBA nebo firmwaru? (Nějaký historický Qlogic? Ale i s ním jsem měl problém až nad 16 TB - řeší to aktualizace firmwaru.)

Zkoušel jste na tom 13TB disku hledat půlením intervalu přesnou hranici, odkud začne lseek64 vracet chybu?

[:wq]
vlk avatar 27.2.2009 10:21 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
no radic je ARECA, a 16x1TB v RAID6

na radici su vytvorene dva volumy 20GB (sda) a cca 13TB (sdb)

ja to tiez pouzivam na testovanie a ak som skusal sda, tak to ide v pohode, ale na tom 13TB nic ... potom som to skusal na inom serveri kde je 8TB v RAID6 + ARECA a tam to tiez nechcelo fungovat.

tak neviem...

_LARGEFILE64_SOURCE je popisane v man-u pri lseek64

skusil som aj __USE_LARGEFILE64 a tiez nepomohlo

a pokial viem, tak 64bitovy kernel ma tieto vlastnosti implicitne a davaju sa len ak sa podobna vec pouziva na 32bit OS.

v kerneli CONFIG_LBD zapnute nieje... ale podla mna ak by to nefungovalo, tak by tie disky nemountilo vobec... aspon myslim, neviem, ale je tam distribucne jadro od debianu 2.6.26.
You don't exist, Go away !
27.2.2009 12:19 frr | skóre: 34
Rozbalit Rozbalit vše Re: lseek64 a 13TB

Ano, nejčastěji s tím trápím právě RAIDy Areca v různých provedeních.

Používáte

fd = open(filename, O_LARGEFILE | ...);

?

[:wq]
27.2.2009 12:31 frr | skóre: 34
Rozbalit Rozbalit vše Re: lseek64 a 13TB

Aha, už vidím, O_LARGEFILE používáte.

Jak velký disk vidí/hlásí kernel? To se dá zjistit z dmesg, nebo přes BLKGETSIZE64 ioctl() - mimochodem na to mám utilitku:

http://www.fccps.cz/download/adv/frr/geom.c

Možná by to šlo vysekat i odněkud ze /sys/class/scsi_device/...

Ten Debian, to je v zásadě originální instalace, nebo to distro prošlo několika upgrady zaživa?

[:wq]
vlk avatar 27.2.2009 12:41 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
je to nova instalacia ... ale vravim ze to nefunguje nikde nad urcitu (neviem aku) hranicu 1TB este ide a 8TB uz nie...

kernel disky vidi v pohode, ale prave teraz to netestnem, pretoze mi menia firmware v diskoch (su tam snimi nejake problemy - ktore s tymto ale nesuvisia, takze si pockam chvilu nez to testnem)

mozno je problem v tom testovacom programe ..
You don't exist, Go away !
vlk avatar 27.2.2009 12:34 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
ano, to tam mam tiez, tu je cely kod:

http://www.pastebin.cz/15674
You don't exist, Go away !
27.2.2009 15:22 tom
Rozbalit Rozbalit vše Re: lseek64 a 13TB
perror() muze IMHO zmenit errno, protoze zapisuje na stderr. Odpovida vypis z perror() tomu, co chytnete ve switchi?
vlk avatar 27.2.2009 16:31 vlk | skóre: 23 | blog: u_vlka
Rozbalit Rozbalit vše Re: lseek64 a 13TB
no to teda, sorry, .... wrr, jasne, som si to vobec neuvedomil, ja som sa pozeral len na to cislo a ono ho zmenil perror :(

takze zmena, chyba je "lseek64: Invalid argument" a vracia to EINVAL. uz som to opravil, pretekalo mi tam to 64bitove cislo pre adresu v lseek64.

dakujem vsetkym za pomoc...

tu je opravena verzia ak by to niekoho zaujimalo http://www.pastebin.cz/15692 je to dobre na meranie pristupovej doby diskov..
You don't exist, Go away !

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.