vfs: change d_canonical_path to take two paths
bug: 23904372 Change-Id: I4a686d64b6de37decf60019be1718e1d820193e6 Signed-off-by: Daniel Rosenberg <drosen@google.com>
This commit is contained in:
parent
aaed164e81
commit
6fa18ffc71
3 changed files with 7 additions and 3 deletions
|
@ -746,7 +746,7 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname,
|
||||||
/* support stacked filesystems */
|
/* support stacked filesystems */
|
||||||
if(path.dentry && path.dentry->d_op) {
|
if(path.dentry && path.dentry->d_op) {
|
||||||
if (path.dentry->d_op->d_canonical_path) {
|
if (path.dentry->d_op->d_canonical_path) {
|
||||||
path.dentry->d_op->d_canonical_path(path.dentry, &alteredpath);
|
path.dentry->d_op->d_canonical_path(&path, &alteredpath);
|
||||||
canonical_path = &alteredpath;
|
canonical_path = &alteredpath;
|
||||||
path_put(&path);
|
path_put(&path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,11 +172,15 @@ static int sdcardfs_cmp_ci(const struct dentry *parent,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sdcardfs_canonical_path(const struct path *path, struct path *actual_path) {
|
||||||
|
sdcardfs_get_real_lower(path->dentry, actual_path);
|
||||||
|
}
|
||||||
|
|
||||||
const struct dentry_operations sdcardfs_ci_dops = {
|
const struct dentry_operations sdcardfs_ci_dops = {
|
||||||
.d_revalidate = sdcardfs_d_revalidate,
|
.d_revalidate = sdcardfs_d_revalidate,
|
||||||
.d_release = sdcardfs_d_release,
|
.d_release = sdcardfs_d_release,
|
||||||
.d_hash = sdcardfs_hash_ci,
|
.d_hash = sdcardfs_hash_ci,
|
||||||
.d_compare = sdcardfs_cmp_ci,
|
.d_compare = sdcardfs_cmp_ci,
|
||||||
.d_canonical_path = sdcardfs_get_real_lower,
|
.d_canonical_path = sdcardfs_canonical_path,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@ struct dentry_operations {
|
||||||
struct vfsmount *(*d_automount)(struct path *);
|
struct vfsmount *(*d_automount)(struct path *);
|
||||||
int (*d_manage)(struct dentry *, bool);
|
int (*d_manage)(struct dentry *, bool);
|
||||||
struct inode *(*d_select_inode)(struct dentry *, unsigned);
|
struct inode *(*d_select_inode)(struct dentry *, unsigned);
|
||||||
void (*d_canonical_path)(const struct dentry *, struct path *);
|
void (*d_canonical_path)(const struct path *, struct path *);
|
||||||
struct dentry *(*d_real)(struct dentry *, struct inode *);
|
struct dentry *(*d_real)(struct dentry *, struct inode *);
|
||||||
} ____cacheline_aligned;
|
} ____cacheline_aligned;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue