Miroslav Lachman wrote:
Mam na zacatek takovy trivialni dotaz: k cemu slouzi procfs a fdescfs napriklad pro Bash a OpenJDK?

Na takovouhle otazku nelze odpovedet obecn - jen konkretne.

Bash, pokud spravne nahlednutim do zdrojaku soudim, fdescfs v zasade nepouziva. Akorat bez nej nefunguje presmerovani na /dev/fd/... - takze se da rict, ze fdescfs potrebujes k tomu, aby bash umel vsechno co je v manualu napsane, ze umi.

To Java je jinej bumbrdlicek, takze daleko slozitejsi odpoved. Ono se v kodu ne uplne lehce poznava, kdy se konkretni kod pouziva i na FreeBSD a kdy jen na nejakem jinem OS. Urcite se ale pouziva /proc/curproc/map takze bez nej nebude fungovat napriklad funkce getCommittedVirtualMemorySize(). Zda to opravdu bude necemu vadit zalezi na tom, zda ji aplikaci vubec pouziva a pokud ano, tak jak reaguje na to, ze volani selhalo. Ze by Java na FreeBSD k necemu pouzivala fdescfs v kodu nejak nevidim.

O co teda prichazim, kdyz /proc nemam a ps a w pouzivam?

Nejak nevidim, ze by soucasne ps nebo w /proc pouzivalo.

Myslim, ze na Linuxu je /proc defaultne primountovany a bez nej by tam asi spousta veci nefungovala, ale u FreeBSD mi nikdy neprislo, ze bych mel /proc mountovat.

Na Linuxu je /proc zakladnim nastrojem pro predavani nekterych informaci mezi kernelem a aplikacemi (zejmena scripty). V BSD svete ma tuhle roli sysctl strom a odkazy na procfs pochazeji predevsim z prevzateho Linuxoveho kodu. A toho by v zakladnim systemu uz melo byt pomalu, respektive, zadny.

Je tam tahle funkce, ktere asi uplne nerozumim

Ne ze bych tusil co je zrep, ale ta funkce se pokousi vyrobit zamek a to pomoci symlinku /var/run/zrep.lock smerujiciho na /proc/${OWN_PID}.

Zamek ma patrne slouzit k synchronizaci mezi hlavnim zrep procesem a z nej pripadne spoustenymi syny.

PID hlavniho procesu, ktery znaji vsichni, pouzivaji jako jedinecny identifikator zamku.

Jelikoz jsem v zrep uz delal nejake vlastni upravy, aby to fungovalo se sudo, tak bych docela rad prepsal tuhle funkci tak, aby nepotrebovala /proc, ale aby zustala zachovana funkcnost / spolehlivost toho zamku.

Ta funkce /proc vlastne az tak moc nepotrebuje. Udelat symlink na /proc/$$ muzes aniz nejakej /proc vubec existuje. Takze staci odstranit ten test na to, ze /proc existuje.

Zadrhel nastane jen se 'stale lock' detekci, kde oni zjistuji, zda proces, ktery lock drzi, stale existuje (pokud ne, je lock 'stale'). A zjistuji to testem existence /proc/$lockpid - tenhe test musis prepsat a to, zda v systemu bezi proces s $lockpid testovat jinak, bez proc.

Treba
if ps -axo pid | tr -d ' '  | grep -q "^$lockpid\$" ; then

V historii na GitHubu jsem nasel, ze se ve starsim kodu pouzival lockf

No a nebo tak. Skoro mi pouziti lockf pripada snazsi nez se patlat s vlastni obsluhou delani symlinku ...

ale taky ze ho kvuli nejakemu bugu odstranili
https://github.com/bolthole/zrep/commit/bae9a5fb6f2a14a1765d5675879d7171ad805c7f

Musel bys zjistit jaky meli doopravdy problem - ono to mohlo byt neco, co na FreeBSD problemem neni a pak to proste muzes vratit do stavu v jakem to meli pred {u|o}pravou.

Dan


--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem