diff options
author | Jeremy Allison <jra@samba.org> | 1998-09-23 01:48:45 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1998-09-23 01:48:45 +0000 |
commit | aab2fe021643417854451c65e564932f4ac25f10 (patch) | |
tree | 2377d1c7ea68759507f471beb1ab1d101a067552 /source3/smbd/files.c | |
parent | 3b7cee95ac741ee24b8edd36095cc30e3377a23c (diff) | |
download | samba-aab2fe021643417854451c65e564932f4ac25f10.tar.gz samba-aab2fe021643417854451c65e564932f4ac25f10.tar.bz2 samba-aab2fe021643417854451c65e564932f4ac25f10.zip |
First cut at kernel oplocks. This should have no effect unless runnin
on a machine that supports them in autoconf.
Move various functions out of lib/util.c into smbd/process.c
and smbd/oplock.c where they belong.
Jeremy.
(This used to be commit c3c5e13f85c97939746070132dad941e79c546fb)
Diffstat (limited to 'source3/smbd/files.c')
-rw-r--r-- | source3/smbd/files.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/source3/smbd/files.c b/source3/smbd/files.c index c1bb3df57c..e8b391d117 100644 --- a/source3/smbd/files.c +++ b/source3/smbd/files.c @@ -290,31 +290,33 @@ void file_close_user(int vuid) /**************************************************************************** -find a fsp given a device, inode and timevalue + Find a fsp given a device, inode and timevalue + If this is from a kernel oplock break request then tval may be NULL. ****************************************************************************/ + files_struct *file_find_dit(SMB_DEV_T dev, SMB_INO_T inode, struct timeval *tval) { int count=0; files_struct *fsp; #ifdef USE_FILES_ARRAY - for(count = 0; count < MAX_FNUMS; count++) { - if((fsp = Files[count]) == NULL) - continue; - if (fsp->open && - fsp->fd_ptr->dev == dev && - fsp->fd_ptr->inode == inode && - fsp->open_time.tv_sec == tval->tv_sec && - fsp->open_time.tv_usec == tval->tv_usec) - return fsp; - } + for(count = 0; count < MAX_FNUMS; count++) { + if((fsp = Files[count]) == NULL) + continue; + if (fsp->open && + fsp->fd_ptr->dev == dev && + fsp->fd_ptr->inode == inode && + (tval ? (fsp->open_time.tv_sec == tval->tv_sec) : True) && + (tval ? (fsp->open_time.tv_usec == tval->tv_usec) : True)) + return fsp; + } #else for (fsp=Files;fsp;fsp=fsp->next,count++) { if (fsp->open && fsp->fd_ptr->dev == dev && fsp->fd_ptr->inode == inode && - fsp->open_time.tv_sec == tval->tv_sec && - fsp->open_time.tv_usec == tval->tv_usec) { + (tval ? (fsp->open_time.tv_sec == tval->tv_sec) : True ) && + (tval ? (fsp->open_time.tv_usec == tval->tv_usec) : True )) { if (count > 10) { DLIST_PROMOTE(Files, fsp); } |