Skip to content

Commit

Permalink
ovl: move cache and version to ovl_inode
Browse files Browse the repository at this point in the history
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
  • Loading branch information
Miklos Szeredi committed Jul 4, 2017
1 parent a015daf commit 04a01ac
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 17 deletions.
8 changes: 3 additions & 5 deletions fs/overlayfs/ovl_entry.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,8 @@ struct ovl_fs {

/* private information held for every overlayfs dentry */
struct ovl_entry {
struct ovl_dir_cache *cache;
union {
struct {
u64 version;
bool opaque;
};
bool opaque;
struct rcu_head rcu;
};
unsigned numlower;
Expand All @@ -50,7 +46,9 @@ struct ovl_entry {
struct ovl_entry *ovl_alloc_entry(unsigned int numlower);

struct ovl_inode {
struct ovl_dir_cache *cache;
const char *redirect;
u64 version;
unsigned long flags;
struct inode vfs_inode;
struct dentry *__upperdentry;
Expand Down
2 changes: 2 additions & 0 deletions fs/overlayfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,9 @@ static struct inode *ovl_alloc_inode(struct super_block *sb)
{
struct ovl_inode *oi = kmem_cache_alloc(ovl_inode_cachep, GFP_KERNEL);

oi->cache = NULL;
oi->redirect = NULL;
oi->version = 0;
oi->flags = 0;
oi->__upperdentry = NULL;
oi->lower = NULL;
Expand Down
20 changes: 8 additions & 12 deletions fs/overlayfs/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,16 +160,12 @@ struct inode *ovl_inode_real(struct inode *inode)

struct ovl_dir_cache *ovl_dir_cache(struct dentry *dentry)
{
struct ovl_entry *oe = dentry->d_fsdata;

return oe->cache;
return OVL_I(d_inode(dentry))->cache;
}

void ovl_set_dir_cache(struct dentry *dentry, struct ovl_dir_cache *cache)
{
struct ovl_entry *oe = dentry->d_fsdata;

oe->cache = cache;
OVL_I(d_inode(dentry))->cache = cache;
}

bool ovl_dentry_is_opaque(struct dentry *dentry)
Expand Down Expand Up @@ -242,18 +238,18 @@ void ovl_inode_update(struct inode *inode, struct dentry *upperdentry)

void ovl_dentry_version_inc(struct dentry *dentry)
{
struct ovl_entry *oe = dentry->d_fsdata;
struct inode *inode = d_inode(dentry);

WARN_ON(!inode_is_locked(dentry->d_inode));
oe->version++;
WARN_ON(!inode_is_locked(inode));
OVL_I(inode)->version++;
}

u64 ovl_dentry_version_get(struct dentry *dentry)
{
struct ovl_entry *oe = dentry->d_fsdata;
struct inode *inode = d_inode(dentry);

WARN_ON(!inode_is_locked(dentry->d_inode));
return oe->version;
WARN_ON(!inode_is_locked(inode));
return OVL_I(inode)->version;
}

bool ovl_is_whiteout(struct dentry *dentry)
Expand Down

0 comments on commit 04a01ac

Please sign in to comment.