HomeFreeBSD

Linux 3.11 compat: fops->iterate()

Description

Linux 3.11 compat: fops->iterate()

Commit torvalds/linux@2233f31aade393641f0eaed43a71110e629bb900
replaced ->readdir() with ->iterate() in struct file_operations.
All filesystems must now use the new ->iterate method.

To handle this the code was reworked to use the new ->iterate
interface. Care was taken to keep the majority of changes
confined to the ZPL layer which is already Linux specific.
However, minor changes were required to the common zfs_readdir()
function.

Compatibility with older kernels was accomplished by adding
versions of the trivial dir_emit* helper functions. Also the
various *_readdir() functions were reworked in to wrappers
which create a dir_context structure to pass to the new
*_iterate() functions.

Unfortunately, the new dir_emit* functions prevent us from
passing a private pointer to the filldir function. The xattr
directory code leveraged this ability through zfs_readdir()
to generate the list of xattr names. Since we can no longer
use zfs_readdir() a simplified zpl_xattr_readdir() function
was added to perform the same task.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #1653
Issue #1591

Details

Provenance
Richard Yao <ryao@gentoo.org>Authored on Aug 7 2013, 12:53 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Aug 15 2013, 11:19 PM
Parents
rG34e143323e35: Fix z_wr_iss_h zio_execute() import hang
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rG0f37d0c8bed4: Linux 3.11 compat: fops->iterate() (authored by Richard Yao <ryao@gentoo.org>).Aug 15 2013, 11:19 PM