NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/57145: gmake: *** INTERNAL: readdir: Operation not supported. Stop.
This is after a reboot, /source and /testing are automounted.
[root@netbsd ~]# cd /source
[root@netbsd source]# df
Filesystem 512-blocks Used Avail %Cap Mounted on
/dev/wd0a 20643484 4176144 15435168 21% /
kernfs 2 2 0 100% /kern
ptyfs 2 2 0 100% /dev/pts
procfs 8 8 0 100% /proc
tmpfs 1048312 0 1048312 0% /var/shm
tmpfs 3897616 8 3897608 0% /tmp
map -noauto 0 0 0 100% /source
map -noauto 0 0 0 100% /testing
[root@netbsd source]# mount
/dev/wd0a on / type ffs (noatime, local)
kernfs on /kern type kernfs (local)
ptyfs on /dev/pts type ptyfs (local)
procfs on /proc type procfs (local)
tmpfs on /var/shm type tmpfs (local)
tmpfs on /tmp type tmpfs (local)
map -noauto on /source type autofs
map -noauto on /testing type autofs
Note that the mount of /source hasn't yet triggered. Now what I
believe is the test case:
[root@netbsd source]# cc open-lseek.c
[root@netbsd source]# ./a.out
missing mount-point[root@netbsd source 1]# ./a.out /testing
chdir(/testing)
flags 600004 vs 600004
mode f0 vs f0
open(.,600004,f0)
lseek(3, 0, SEEK_CUR)
lseek: Operation not supported
for comparison:
[root@freebsd source]# cc open-lseek.c
[root@freebsd source]# ./a.out
missing mount-point[root@freebsd source 1]# ./a.out /testing
chdir(/testing)
flags 120004 vs 120004
mode f0 vs f0
open(.,120004,f0)
lseek(3, 0, SEEK_CUR)
[root@freebsd source]# df
Filesystem 1K-blocks Used
Avail Capacity Mounted on
/dev/vtbd0s1a 9638812 5610152
3257556 63% /
devfs 1 0
1 0% /dev
map -noauto 0 0
0 100% /source
map -noauto 0 0
0 100% /testing
192.168.234.1:/home/libreswan/mainline 960302096 886320800
25126872 97% /source
192.168.234.1:/home/libreswan/mainline/testing 960302096 886320800
25126872 97% /testing
and the code:
#include <stdio.h>
#include <stdlib.h> /* for exit() */
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/mount.h>
static void barf(const char *what)
{
perror(what);
exit(1);
}
static unsigned flags(const char *what, unsigned actual, unsigned expected)
{
printf("%s %x vs %x\n", what, actual, expected);
return expected;
}
int main(int argc, char *argv[])
{
if (argc < 2) {
fprintf(stderr, "missing mount-point");
exit(1);
}
const char *mount = argv[1];
printf("chdir(%s)\n", mount);
chdir(mount);
if (errno > 0) {
barf("chdir");
}
unsigned open_flags = flags("flags", O_DIRECTORY|O_CLOEXEC|O_NONBLOCK,
O_DIRECTORY|O_CLOEXEC|O_NONBLOCK);
unsigned open_mode = flags("mode", S_IWUSR|S_IXUSR|S_IRGRP|S_IWGRP, 0xf0);
printf("open(%s,%x,%x)\n", ".", open_flags, open_mode);
int fd = open(".", open_flags, open_mode);
if (errno > 0) {
barf("open");
}
printf("lseek(%d, 0, SEEK_CUR)\n", fd);
lseek(fd, /*offset*/0, /*wence*/SEEK_CUR);
if (errno > 0) {
barf("lseek");
}
exit(0);
}
Home |
Main Index |
Thread Index |
Old Index