Mam na zacatek takovy trivialni dotaz: k cemu slouzi procfs a fdescfs napriklad pro Bash a OpenJDK? Oboje maji v pkg-message napsano, ze se ma primountovat fdescfs a u OpenJDK je navic i procfs.

Nikde na serverech jsem nikdy nemountoval ani procfs ani fdescfs a jak java, tak bash se tam pouziva.

V manualu k procfs se dokonce pise:
It is normally mounted on /proc, and is required for the complete operation of programs such as ps(1) and w(1).

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

Co si tak z davne minulosti okolo FreeBSD 4.x pamatuju, tak prave v procfs bylo nekolik zavaznych bezpecnostnich chyb.

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.


A ted ta slozitejsi otazka. Cele tohle jsem zacal resit proto, ze jsem si zacal pohravat se sysutils/zrep (napsano v ksh93) a ten prave vyzaduje /proc.

https://github.com/bolthole/zrep/blob/master/zrep_vars#L261

Je tam tahle funkce, ktere asi uplne nerozumim

#Note: it is an ERROR to call this if you already have lock
#It is binary, not recursive ownership.
zrep_get_global_lock(){
        typeset retry_count=$Z_LOCK_RETRY
        typeset lockpid


        [[ -d /proc/$$ ]] || zrep_errquit "/proc fs must be functional to use 
zrep"

        ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0

        while (( retry_count > 0 )); do
                sleep 1
                ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0
                retry_count=$((retry_count-1))
                lockpid=`zrep_global_lock_pid`
                if ! -d /proc/$lockpid ; then
                        _errprint ERROR: stale global lock file
                        _errprint ERROR: shut down ALL zrep instances, then 
manually remove
                        _errprint $Z_GLOBAL_LOCKFILE
                fi

        done

        print Failed to acquire global lock
        return 1
}


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.

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

https://github.com/bolthole/zrep/commit/2e1f06362a692e68e72d2fb104625f46513c8c58

ale taky ze ho kvuli nejakemu bugu odstranili

https://github.com/bolthole/zrep/commit/bae9a5fb6f2a14a1765d5675879d7171ad805c7f

Poradi nekdo?

Mirek
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem