Re: Inotify problem [was Re: 2.6.13-rc6-mm1]

From: Johannes Berg
Date: Thu Aug 25 2005 - 07:20:09 EST


Hi,

> I have also observed another problem with inotify with dovecot - so I spoke
> with Johannes Berg who wrote the inotify code in dovecot. He suggested I post
> here to LKML since his opinion is that this to be a kernel bug.

Allow me to jump in at this point. The small tool below triggers this
problem for Reuben (confirmed via private mail) but works fine for me on
2.6.13-rc6.

johannes

--begin test program--
/* Author: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
*
* This is a small inotify test program that simply
* repeatedly adds and removes watches.
*/

#include <stdio.h>
#include <linux/inotify.h>
#include <linux/inotify-syscalls.h>

int main()
{
int fd;
int wd1, wd2;
int ret;

fd = inotify_init();

if (fd < 0)
perror("inotify_init");

printf("inotify_init returned fd %d\n", fd);

while (1) {
wd1 = inotify_add_watch(fd, "/tmp", IN_ALL_EVENTS);

if (wd1 < 0) {
perror("inotify_add_watch");
break;
}
printf("inotify_add_watch returned wd1 %d\n", wd1);

wd2 = inotify_add_watch(fd, "/", IN_ALL_EVENTS);

if (wd2 < 0) {
perror("inotify_add_watch");
break;
}
printf("inotify_add_watch returned wd2 %d\n", wd2);

ret = inotify_rm_watch(fd, wd1);
if (ret < 0) {
perror("inotify_rm_watch wd1");
break;
}
ret = inotify_rm_watch(fd, wd2);
if (ret < 0) {
perror("inotify_rm_watch wd2");
break;
}
}
}

Attachment: signature.asc
Description: This is a digitally signed message part