[Samba-it] 3.0.4 - 3.0.14a

Sevastian `seva` Foglia sevastian at linuxtime.it
Tue Jun 14 15:03:01 MDT 2005


Simo Sorce wrote:
> On Mon, 2005-06-13 at 18:24 +0200, Sevastian `seva` Foglia wrote:
> 
>>Ho un problema con la gestione di fcntl all'interno di un modulo vfs.
>>Con Samba 3.0.4 tutto funziona correttamente.
>>Con Samba 3.0.14a un'applicazione chiamata MS Word non né vuole sapere 
>>di salvare e chiudere file che hanno nel path (subito dopo la share) 
>>cartelle di un solo carattere.
>>Esempio:
>>path della share "/test"
>>cartella al di sotto "a"
>>nome del file "prova.doc"
>>Il path relativo alla share sarebbe "a/prova.doc".
>>
>>Il modulo vfs che ho scritto sarebbe un po' difficile da spiegare in due 
>>righe, comunque sembra che il problema sorga quando Word (e solo Word, 
>>non Excel o Powerpoint o OpenOffice.org) crea i suoi file ~WR000x.tmp e 
>>poi cerca di rinominarli.
>>Da notare che se, ad esempio, il path del file è "ciao/prova.doc" tutto
> 
>  
> 
>>funziona correttamente.
>>Le chiamate a fcntl vengono fatte in fase di apertura di un file 
>>esistente e in fase di chiusura dello stesso (acquisisco il lock in 
>>apertura e lo rilascio in chiusura).
> 
> 
> Alt! stop! Freeeenaaaa! :-)
> 
> Usare fcntl all'interno di un modulo VFS è _molto_ delicato.
> Purtroppo le semantiche posix prevedono un comportamento bizzarro che in
> samba trattiamo in maniera delicatissima.
> Per dirla in breve se tu acquisisci un lock su un file all'interno di
> una applicazione anche su diversi file descriptor, se ne chiudi anche
> uno solo, TUTTI i lock su quel file su tutti i file descriptor verranno
> rilasciati. Infatti se guardi bene in samba troverai che la gestione dei
> locking è molto delicata.
> 
> 
> 
>>Non pretendo che qualcuno risolva il problema, ma mi basterebbe sapere i 
>>cambiamenti che sono stati fatti dalla versione 3.0.4 alla 3.0.14 nella 
>>gestione dei lock o dei moduli del vfs (ho già guardato nei changelog..
> 
> .).
> 
> Da quella versione Jeremy ha fatto numerosi modifiche e bugfix che non
> ho seguito molto da vicino. In generale dovresti proprio evitare di
> rendere le cose difficili a samba utilizzando locking "a sua insaputa".
> 
> E purtroppo non credo ci sia un modo di usare correttamente il locking
> all'interno di un modulo VFS rendendo la cosa nota a samba. Se è una
> cosa di cui non puoi fare a meno, credo che sarebbe necessario
> presentare ai moduli VFS una interfaccia per far si che il modulo possa
> parlare con il codice di locking di samba. Credo che Jeremy potrebbe
> accettare di creare tali interfacce se la cosa fosse ben giustificata. 
> 
> Ti consiglierei di scrivere a samba.technical at samba.org per discuterne
> un po' e capire qual'è il modo migliore di lavorare in questo senso.
> 
> Simo.
> 
> 

Grazie per le delucidazioni...

Abbiamo da poco scoperto che il problema non era dovuto a fcntl 
(gestiamo i lock in maniera corretta), ma ad uno strano comportamento di 
malloc e free che vengono usate per allocare stringhe all'interno del 
modulo vfs che contengono il path completo del file.
Sostituendo la specifica malloc con una realloc tutto si è sistemato 
(anche se non ho capito il perchè....)
Saluti,
Seva




More information about the samba-it mailing list