Hello Samba Hackers! I am debugging a performance problem associated with backing samba with a distributed filesystem. On this filesystem, querying whether a file is locked may involve a network roundtrip. Locking a file is substantially less likely to involve a roundtrip, at least if the file is locked and unlocked repeatedly.
I'd like to ask a question about the following code in read_and_reply_X: if(is_locked(fsp,conn,(SMB_BIG_UINT)smb_maxcnt,(SMB_BIG_UINT)startpos,READ_LOCK,False)) { END_PROFILE(SMBreadX); return ERROR_DOS(ERRDOS,ERRlock); } So if I understand this correctly, we wish to fail the request if someone has an exclusive lock on this region of the file (please correct me if I'm wrong). However, this seems wrong, in that there is a race here. Why is it in this case that for the duration of the read we don't acquire a read lock on this region of the file? Or do we? Maybe I'm missing something here (?) :) Cheers, Peter Godman