Hi again Johannes,
On 25/07/2005 7:37 p.m., Johannes Berg wrote:> Hi,
>
>> I note that dovecot supported inotify from -test77, and now the Linux
kernel
>> supports it starting from linux-2.6.13-rc3. So in theory I should be
set to
>> go. I'm using an -mm kernel, and it was built with inotify, on
FC4/devel.
>
> I suppose I'll reply since I wrote the code ;)
>
>> checking for poll... yes
>> configure: error: inotify requested but not available, check for
existence of
>> <linux/inotify.h>
>> /bin/sh ./config.status --recheck
>
> Makes sense, you need the inotify userspace header.
>
>> What is required for inotify to be recognised and built into dovecot?
I've
>> tried copying the header from linux-2.6/include/linux/inotify.h to the
>> /usr/include/linux directory, but that didn't help - and seems
wrong to do anyway.
>
> Sounds about right -- that particular header is safe for userspace. But
> if that didn't help then I don't know what's going wrong. Check
> config.log please.
| #define IOLOOP_POLL
| /* end confdefs.h. */
|
| #define _GNU_SOURCE
| #include <sys/ioctl.h>
| #include <fcntl.h>
| #include <linux/inotify.h>
|
| int
| main ()
| {
|
| struct inotify_watch_request req;
| int wd, dev_fd;
| char * fn = "/tmp";
| dev_fd = open ("/dev/inotify", O_RDONLY);
| req.fd = open (fn, O_RDONLY);
| if (req.fd < 0) return -1;
| req.mask = IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO |
IN_MODIFY | IN_ACCESS;
| wd = ioctl (dev_fd, INOTIFY_WATCH, &req);
| close(req.fd);
| ioctl (dev_fd, INOTIFY_IGNORE, &wd);
|
| ;
| return 0;
| }
configure:23296: error: inotify requested but not available, check for
existence of <linux/inotify.h>
> Also, please try the header from
> http://www.kernel.org/pub/linux/kernel/people/rml/inotify/headers/
It's bit-for-bit identical with the one in the kernel - tested with both and
diffed :)
inotify is definitely there and built into the kernel:
[root at tornado ~]# cat /proc/sys/fs/inotify/max_
max_queued_events max_user_instances max_user_watches
[root at tornado ~]#
and here:
[root at tornado tmp]# ls -la /usr/include/linux/inotify.h
-rw-r--r-- 1 root root 3386 Jul 20 01:29 /usr/include/linux/inotify.h
[root at tornado tmp]#
and here:
[root at tornado tmp]# ls -la /dev/inotify
crw-r--r-- 1 root root 10, 63 Jul 25 20:03 /dev/inotify
[root at tornado tmp]#
I tried with latest -mm kernel, as well as latest Fedora devel kernel - all
are supposed to have inotify support, but both have the same problem.
Not sure what else I can really try :( Have you got any other ideas?
Reuben