ceph: enable/disable dentry complete flags via mount option
Enable/disable use of the dentry dir 'complete' flag via a mount option. This lets the admin control whether ceph uses the dcache to satisfy negative lookups or readdir when it has the entire directory contents in its cache. This is purely a performance optimization; correctness is guaranteed whether it is enabled or not. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -1094,17 +1094,36 @@ static int ceph_snapdir_d_revalidate(struct dentry *dentry,
|
||||
*/
|
||||
void ceph_dir_set_complete(struct inode *inode)
|
||||
{
|
||||
/* not yet implemented */
|
||||
struct dentry *dentry = d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry) &&
|
||||
ceph_test_mount_opt(ceph_sb_to_client(dentry->d_sb), DCACHE)) {
|
||||
dout(" marking %p (%p) complete\n", inode, dentry);
|
||||
set_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
}
|
||||
dput(dentry);
|
||||
}
|
||||
|
||||
void ceph_dir_clear_complete(struct inode *inode)
|
||||
{
|
||||
/* not yet implemented */
|
||||
struct dentry *dentry = d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry)) {
|
||||
dout(" marking %p (%p) complete\n", inode, dentry);
|
||||
set_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
}
|
||||
dput(dentry);
|
||||
}
|
||||
|
||||
bool ceph_dir_test_complete(struct inode *inode)
|
||||
{
|
||||
/* not yet implemented */
|
||||
struct dentry *dentry = d_find_any_alias(inode);
|
||||
|
||||
if (dentry && ceph_dentry(dentry)) {
|
||||
dout(" marking %p (%p) NOT complete\n", inode, dentry);
|
||||
clear_bit(CEPH_D_COMPLETE, &ceph_dentry(dentry)->flags);
|
||||
}
|
||||
dput(dentry);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user