diff options
author | Amir Goldstein <amir73il@gmail.com> | 2023-04-27 11:21:46 +0200 |
---|---|---|
committer | Amir Goldstein <amir73il@gmail.com> | 2023-06-19 13:01:14 +0200 |
commit | 2b21da920866ad20b5e3119f3b8d2267774b7b0a (patch) | |
tree | 93b2c8fd6d67615cabfef1de618ec9bc73343c22 /fs/overlayfs/inode.c | |
parent | ovl: implement lookup in data-only layers (diff) | |
download | linux-2b21da920866ad20b5e3119f3b8d2267774b7b0a.tar.xz linux-2b21da920866ad20b5e3119f3b8d2267774b7b0a.zip |
ovl: prepare to store lowerdata redirect for lazy lowerdata lookup
Prepare to allow ovl_lookup() to leave the last entry in a non-dir
lowerstack empty to signify lazy lowerdata lookup.
In this case, ovl_lookup() stores the redirect path from metacopy to
lowerdata in ovl_inode, which is going to be used later to perform the
lazy lowerdata lookup.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/overlayfs/inode.c')
-rw-r--r-- | fs/overlayfs/inode.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 5239a5bfc6d1..552059e759b6 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -1005,6 +1005,7 @@ void ovl_inode_init(struct inode *inode, struct ovl_inode_params *oip, oi->__upperdentry = oip->upperdentry; oi->oe = oip->oe; oi->redirect = oip->redirect; + oi->lowerdata_redirect = oip->lowerdata_redirect; realinode = ovl_inode_real(inode); ovl_copyattr(inode); @@ -1365,6 +1366,7 @@ struct inode *ovl_get_inode(struct super_block *sb, dput(upperdentry); ovl_free_entry(oip->oe); kfree(oip->redirect); + kfree(oip->lowerdata_redirect); goto out; } |