[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