based on commit b3b42c0deaa1
("fs/affs: make export work with cold dcache")
This adds get_parent function so that nfs client can still work after
cache drop (Tested on NFS v4 with echo 3 > /proc/sys/vm/drop_caches)
Signed-off-by: Fabian Frederick <[email protected]>
---
fs/befs/linuxvfs.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c
index c500e95..63e7c47 100644
--- a/fs/befs/linuxvfs.c
+++ b/fs/befs/linuxvfs.c
@@ -58,6 +58,7 @@ static struct dentry *befs_fh_to_dentry(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type);
static struct dentry *befs_fh_to_parent(struct super_block *sb,
struct fid *fid, int fh_len, int fh_type);
+static struct dentry *befs_get_parent(struct dentry *child);
static const struct super_operations befs_sops = {
.alloc_inode = befs_alloc_inode, /* allocate a new inode */
@@ -93,6 +94,7 @@ static const struct address_space_operations befs_symlink_aops = {
static const struct export_operations befs_export_operations = {
.fh_to_dentry = befs_fh_to_dentry,
.fh_to_parent = befs_fh_to_parent,
+ .get_parent = befs_get_parent,
};
/*
@@ -667,6 +669,19 @@ static struct dentry *befs_fh_to_parent(struct super_block *sb,
befs_nfs_get_inode);
}
+static struct dentry *befs_get_parent(struct dentry *child)
+{
+ struct inode *parent;
+ struct befs_inode_info *befs_ino = BEFS_I(d_inode(child));
+
+ parent = befs_iget(child->d_sb,
+ (unsigned long)befs_ino->i_parent.start);
+ if (IS_ERR(parent))
+ return ERR_CAST(parent);
+
+ return d_obtain_alias(parent);
+}
+
enum {
Opt_uid, Opt_gid, Opt_charset, Opt_debug, Opt_err,
};
--
2.9.3
On 28/03/17 19:16, Fabian Frederick wrote:
> based on commit b3b42c0deaa1
> ("fs/affs: make export work with cold dcache")
>
> This adds get_parent function so that nfs client can still work after
> cache drop (Tested on NFS v4 with echo 3 > /proc/sys/vm/drop_caches)
>
> Signed-off-by: Fabian Frederick <[email protected]>
> ---
Cool!
I wrote something similar to this and then didn't got around to do
proper testing of it.
Will test your patch tomorrow and merge it if it is all good.
Thanks Fabian,
Luis
On 28/03/17 19:16, Fabian Frederick wrote:
> based on commit b3b42c0deaa1
> ("fs/affs: make export work with cold dcache")
>
> This adds get_parent function so that nfs client can still work after
> cache drop (Tested on NFS v4 with echo 3 > /proc/sys/vm/drop_caches)
>
> Signed-off-by: Fabian Frederick <[email protected]>
>
Signed-off-by: Luis de Bethencourt <[email protected]>
Hi Fabian,
I tested this and it looks to work well.
Merged it into my for-next branch [0].
Thanks,
Luis
[0] https://github.com/luisbg/linux-befs/commits/for-next