Bug#272683: dnotify doesn't work correctly on sparc64 with 32 bit
programs
Sjoerd Simons
sjoerd@spring.luon.net (Sjoerd Simons), 272683@bugs.debian.org
Sat, 22 Jan 2005 19:37:18 +0100
--liOOAslEiF7prFVr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
reassign 272683 kernel-image-2.6.8-sparc
retittle 272683 dnotify doesn't work correctly on sparc64 with 32 bit programs
thanks,
Hi,
It seems that dnotify doesn't work correctly on sparc64 for 32 bit programs.
Causing filemonitoring libraries/programs like fam and gamin to fail
Attached is a little testprogram, which is just the example given in the
kernel source with some extra debug info.
When compiled as a 32bit program and changing something in the current
dir (which is being watched):
$ ./test
Opened current dir as fd: 3
Got event on fd=0
Which is incorrect as it should have indicated that something changed at fd
3.. When compiled as a 64bit program it works fine:
$ ./test64
Opened current dir as fd: 3
Got event on fd=3
Sjoerd
--
"Our vision is to speed up time, eventually eliminating it."
-- Alex Schure
--liOOAslEiF7prFVr
Content-Type: text/x-csrc; charset=us-ascii
Content-Disposition: attachment; filename="test.c"
#define _GNU_SOURCE /* needed to get the defines */
#include <fcntl.h> /* in glibc 2.2 this has the needed
values defined */
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
static volatile int event_fd;
static void handler(int sig, siginfo_t *si, void *data) {
event_fd = si->si_fd;
}
int main(void) {
struct sigaction act;
int fd;
act.sa_sigaction = handler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
sigaction(SIGRTMIN + 1, &act, NULL);
fd = open(".", O_RDONLY);
printf("Opened current dir as fd: %d\n", fd);
fcntl(fd, F_SETSIG, SIGRTMIN + 1);
fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT);
/* we will now be notified if any of the files
in "." is modified or new files are created */
while (1) {
pause();
printf("Got event on fd=%d\n", event_fd);
}
}
--liOOAslEiF7prFVr--