return err;
}
+static struct dentry *subset_lookup(struct inode *dir, struct dentry *dentry,
+ struct nameidata *nd)
+{
+ d_add(dentry, NULL);
+ return NULL;
+}
+
+static int subset_readdir(struct file *filp, void *dirent, filldir_t filldir)
+{
+ struct dentry *dentry = filp->f_dentry;
+ //struct lafs_inodee *lai = LAFSI(dentry->d_inode);
+ ino_t ino;
+ loff_t i = filp->f_pos;
+
+ switch (i) {
+ case 0:
+ ino = dentry->d_inode->i_ino;
+ if (filldir(dirent, ".", 1, i, ino, DT_DIR) < 0)
+ break;
+ filp->f_pos ++;
+ i++;
+ /* fallthrough */
+ case 1:
+ ino = 2; /* FIXME need parent for subset! */
+ if (filldir(dirent, "..", 2, i, ino, DT_DIR) < 0)
+ break;
+ filp->f_pos++;
+ i++;
+ /* fallthrough */
+ default:
+ break;
+ }
+ return 0;
+}
+
const struct file_operations lafs_subset_file_operations = {
+ .readdir = subset_readdir,
};
const struct inode_operations lafs_subset_ino_operations = {
+ .lookup = subset_lookup,
};