LINUX: fix RedHat 7.5 ENOTDIR issues 35/12935/6
authorMark Vitale <mvitale@sinenomine.net>
Fri, 2 Mar 2018 04:16:56 +0000 (23:16 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 9 Mar 2018 02:25:38 +0000 (21:25 -0500)
commitc818f86b79a636532d396887d4f22cc196c86288
tree81aa1ee7c12f69e27259f6357fdc5b89f8c2b8d2
parent79f33b859aeb3c91f2cce7597fdc138978c4e1d9
LINUX: fix RedHat 7.5 ENOTDIR issues

Red Hat Linux 7.5 beta introduces a new file->f_mode flag
FMODE_KABI_ITERATE as a means for certain in-tree filesystems to
indicate that they have implemented file operation iterate() instead of
readdir().  The kernel routine iterate_dir() tests this flag to decide
whether to invoke the file operation iterate() or readdir().

The OpenAFS configure script detects that the file operation iterate()
is available under RH7.5 and so implements iterate() as
afs_linux_readdir().  However, since OpenAFS does not set
FMODE_KABI_ITERATE on any of its files, the kernel's iterate_dir() will
not invoke iterate() for any OpenAFS files.  OpenAFS has also not
implemented readdir(), so iterate_dir() must return -ENOTDIR.

Instead, modify OpenAFS to fall back to readdir() in this case.

Change-Id: I242276150ab2a506e1e9c5c752e3f17d36c98935
Reviewed-on: https://gerrit.openafs.org/12935
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
src/afs/LINUX/osi_vnodeops.c