summaryrefslogtreecommitdiff
path: root/source3/smbd/files.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>1998-09-23 01:48:45 +0000
committerJeremy Allison <jra@samba.org>1998-09-23 01:48:45 +0000
commitaab2fe021643417854451c65e564932f4ac25f10 (patch)
tree2377d1c7ea68759507f471beb1ab1d101a067552 /source3/smbd/files.c
parent3b7cee95ac741ee24b8edd36095cc30e3377a23c (diff)
downloadsamba-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.c28
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);
}