sdcardfs: fix space leak

Don't keep looked up dentries around because there's no notification
when the lowerfs unlinks an inode, to collect the upper dentry cache so
the lower inode reference can be released and the storage space
released.

This effectively disables the dcache lookups but it should still be much
faster than fuse sdcardfs.

The alternative is to add a notification mechanism to keep two separate
dcache layers in sync which isn't trivial, or stop ever touching the
lower fs and remove that path.replace from VolumeInfo.java.

Change-Id: I211bd676834126f6f65b3d09ebe951d0375d7985
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
This commit is contained in:
Andrea Arcangeli 2017-10-10 23:47:52 +02:00 committed by syphyr
parent 9e99285904
commit c8b22c6ee0
1 changed files with 6 additions and 0 deletions

View File

@ -181,7 +181,13 @@ static void sdcardfs_canonical_path(const struct path *path,
sdcardfs_get_real_lower(path->dentry, actual_path);
}
static int sdcardfs_d_delete(const struct dentry * dentry)
{
return dentry->d_inode && !S_ISDIR(dentry->d_inode->i_mode);
}
const struct dentry_operations sdcardfs_ci_dops = {
.d_delete = sdcardfs_d_delete,
.d_revalidate = sdcardfs_d_revalidate,
.d_release = sdcardfs_d_release,
.d_hash = sdcardfs_hash_ci,