On Mon, 3 May 2010 16:12:04 -0700 Valerie Aurora <vaurora@xxxxxxxxxx> wrote: > From: Jan Blunck <jblunck@xxxxxxx> > > Userspace isn't ready for handling another file type, so silently drop > whiteout directory entries before they leave the kernel. Feels very intrusive doesn't it.... Have you considered something like the following? NeilBrown diff --git a/fs/readdir.c b/fs/readdir.c index 7723401..4c5b347 100644 --- a/fs/readdir.c +++ b/fs/readdir.c @@ -19,10 +19,26 @@ #include <asm/uaccess.h> +struct readdir_info { + filldir_t filler; + void *data; +}; + +static int white_out(void *vrdi, const char *name, int namlen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct readdir_info *rdi = vrdi; + if (d_type == DT_WHT) + return 0; + return rdi->filler(rdi->data, name, namlen, offset, info, d_type); +} + int vfs_readdir(struct file *file, filldir_t filler, void *buf) { struct inode *inode = file->f_path.dentry->d_inode; int res = -ENOTDIR; + struct readir_info rdi = { filler, buf }; + if (!file->f_op || !file->f_op->readdir) goto out; @@ -36,7 +52,7 @@ int vfs_readdir(struct file *file, filldir_t filler, void *buf) res = -ENOENT; if (!IS_DEADDIR(inode)) { - res = file->f_op->readdir(file, buf, filler); + res = file->f_op->readdir(file, &rdi, white_out); file_accessed(file); } mutex_unlock(&inode->i_mutex); -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html