Hi! Mainline commit 44512449c0ab368889dd13ae0031fba74ee7e1d2 (jfs: fix readdir cookie incompatibility with NFSv4) does not work as expected on 3.2. Maybe on other stable kernels too. UML stumbled over it: https://bugzilla.kernel.org/show_bug.cgi?id=94741 If you run the attached readdir.c on a JFS on stable 3.2.51+ readdir() will not increment the directory offset nor return NULL, hence the caller will loop forever. It looks like if the current directory offset is > 0 and you run seekdir(telldir()) the next readdir() call will not increment it. Dave, has your fix some unnamed dependencies which need backporting too? Thanks, //richard
#include <stdio.h> #include <dirent.h> #include <assert.h> int main(int argc, char *argv[]) { DIR *dirp; struct dirent *dent; off_t dpos; if (argc < 2) { fprintf(stderr, "Usage: %s DIR\n", argv[0]); return 1; } dirp = opendir(argv[1]); assert(dirp); dpos = 0; for (;;) { seekdir(dirp, dpos); dent = readdir(dirp); if (!dent) break; assert(dpos != telldir(dirp)); dpos = telldir(dirp); } return 0; }