1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-23 09:57:40 +03:00

a better test for oplocks being enabled in this kernel

(This used to be commit cc0e919fdcb116c8f9688a4f5d7803fc8d7f9588)
This commit is contained in:
Andrew Tridgell 2000-06-11 06:46:05 +00:00
parent 0fb1dbe7fa
commit a4ba9bb939

View File

@ -31,7 +31,6 @@ static unsigned signals_received;
static unsigned signals_processed;
static int fd_pending; /* the fd of the current pending SIGIO */
#ifndef F_SETLEASE
#define F_SETLEASE 1024
#endif
@ -237,6 +236,19 @@ static BOOL linux_oplock_msg_waiting(fd_set *fds)
return signals_processed != signals_received;
}
/****************************************************************************
see if the kernel supports oplocks
****************************************************************************/
static BOOL linux_oplocks_available(void)
{
int fd, ret;
fd = open("/dev/null", O_RDONLY);
if (fd == -1) return False; /* uggh! */
ret = fcntl(fd, F_GETLEASE, 0);
close(fd);
return ret == F_UNLCK;
}
/****************************************************************************
setup kernel oplocks
@ -246,6 +258,11 @@ struct kernel_oplocks *linux_init_kernel_oplocks(void)
static struct kernel_oplocks koplocks;
struct sigaction act;
if (!linux_oplocks_available()) {
DEBUG(3,("Linux kernel oplocks not available\n"));
return NULL;
}
act.sa_handler = NULL;
act.sa_sigaction = sigio_handler;
act.sa_flags = SA_SIGINFO;