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:
parent
0fb1dbe7fa
commit
a4ba9bb939
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user