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 | c3c5e13f85c97939746070132dad941e79c546fb (patch) | |
tree | 60e58ab8689187e33a09d36ab0d5dc851e1a196d /source/smbd/files.c | |
parent | 24b8a757ae2899d54dd2b2f091a3c0de6de84dbb (diff) | |
download | samba-c3c5e13f85c97939746070132dad941e79c546fb.tar.gz samba-c3c5e13f85c97939746070132dad941e79c546fb.tar.xz samba-c3c5e13f85c97939746070132dad941e79c546fb.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.
Diffstat (limited to 'source/smbd/files.c')
-rw-r--r-- | source/smbd/files.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/source/smbd/files.c b/source/smbd/files.c index c1bb3df57c6..e8b391d1175 100644 --- a/source/smbd/files.c +++ b/source/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); } |