[Cascavel-pm] NFS x flock

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quinta Fevereiro 9 06:13:51 PST 2006


Oi Ednardo,

--- Ednardo Lobo <ednardo em lobo.eti.br> escreveu:

> Alguma outra forma de implementar lock() sobre NFS
> com Perl? Necessito 
> que apenas um único processo, de vários, rodandando
> em um conjunto de 
> computadores clientes acessando arquivos num
> servidor NFS leiam 
> determinado arquivo. Caso um processo tente ler um
> arquivo já em leitura 
> por outro, ele deve abortar a operação e tentar ler
> outro.

O flock() do C não funciona em compartilhamentos NFS,
apenas a função lockf(). A implementação do flock() do
Perl usa flock(), lockf() e fcntl() da C, o que ele
achar primeiro (e pelo que entendi da documentação,
nessa ordem).

Você tem duas situações:
1 - Apenas SEUS programas em Perl acessam os arquivos
que você quer controlar o acesso.
2 - Outros programas fazem acesso à esses arquivos de
forma concorrente.

Se você estiver no primeiro caso, implemente outra
forma de lock que não flock(): você pode usar um
arquivo intermediário, como .lock ou algo assim.

Se estiver no segundo caso, você está sem sorte. Lock
em NFS é um saco, de qualquer forma. Não sei se é
possível forçar o Perl a usar lockf(), talvez exista
algo no CPAN que o faça usando código C e XS. Se não
houver isso disponível, então sugiro que você faça um
módulo desse jeito ou use outra forma de compartilhar
esses arquivos, o que lhe for mais simples.

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


		
_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
http://br.acesso.yahoo.com


Mais detalhes sobre a lista de discussão Cascavel-pm