mirror of https://gitee.com/openkylin/linux.git
per-superblock default ->d_op
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
4162cf6497
commit
c8aebb0c9f
|
@ -1320,6 +1320,7 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
|
||||||
__dget_dlock(parent);
|
__dget_dlock(parent);
|
||||||
dentry->d_parent = parent;
|
dentry->d_parent = parent;
|
||||||
dentry->d_sb = parent->d_sb;
|
dentry->d_sb = parent->d_sb;
|
||||||
|
d_set_d_op(dentry, dentry->d_sb->s_d_op);
|
||||||
list_add(&dentry->d_u.d_child, &parent->d_subdirs);
|
list_add(&dentry->d_u.d_child, &parent->d_subdirs);
|
||||||
spin_unlock(&parent->d_lock);
|
spin_unlock(&parent->d_lock);
|
||||||
}
|
}
|
||||||
|
@ -1335,6 +1336,7 @@ struct dentry *d_alloc_pseudo(struct super_block *sb, const struct qstr *name)
|
||||||
struct dentry *dentry = d_alloc(NULL, name);
|
struct dentry *dentry = d_alloc(NULL, name);
|
||||||
if (dentry) {
|
if (dentry) {
|
||||||
dentry->d_sb = sb;
|
dentry->d_sb = sb;
|
||||||
|
d_set_d_op(dentry, dentry->d_sb->s_d_op);
|
||||||
dentry->d_parent = dentry;
|
dentry->d_parent = dentry;
|
||||||
dentry->d_flags |= DCACHE_DISCONNECTED;
|
dentry->d_flags |= DCACHE_DISCONNECTED;
|
||||||
}
|
}
|
||||||
|
@ -1507,6 +1509,7 @@ struct dentry * d_alloc_root(struct inode * root_inode)
|
||||||
res = d_alloc(NULL, &name);
|
res = d_alloc(NULL, &name);
|
||||||
if (res) {
|
if (res) {
|
||||||
res->d_sb = root_inode->i_sb;
|
res->d_sb = root_inode->i_sb;
|
||||||
|
d_set_d_op(res, res->d_sb->s_d_op);
|
||||||
res->d_parent = res;
|
res->d_parent = res;
|
||||||
d_instantiate(res, root_inode);
|
d_instantiate(res, root_inode);
|
||||||
}
|
}
|
||||||
|
@ -1567,6 +1570,7 @@ struct dentry *d_obtain_alias(struct inode *inode)
|
||||||
/* attach a disconnected dentry */
|
/* attach a disconnected dentry */
|
||||||
spin_lock(&tmp->d_lock);
|
spin_lock(&tmp->d_lock);
|
||||||
tmp->d_sb = inode->i_sb;
|
tmp->d_sb = inode->i_sb;
|
||||||
|
d_set_d_op(tmp, tmp->d_sb->s_d_op);
|
||||||
tmp->d_inode = inode;
|
tmp->d_inode = inode;
|
||||||
tmp->d_flags |= DCACHE_DISCONNECTED;
|
tmp->d_flags |= DCACHE_DISCONNECTED;
|
||||||
list_add(&tmp->d_alias, &inode->i_dentry);
|
list_add(&tmp->d_alias, &inode->i_dentry);
|
||||||
|
|
|
@ -1423,6 +1423,7 @@ struct super_block {
|
||||||
* generic_show_options()
|
* generic_show_options()
|
||||||
*/
|
*/
|
||||||
char __rcu *s_options;
|
char __rcu *s_options;
|
||||||
|
const struct dentry_operations *s_d_op; /* default d_op for dentries */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct timespec current_fs_time(struct super_block *sb);
|
extern struct timespec current_fs_time(struct super_block *sb);
|
||||||
|
|
Loading…
Reference in New Issue