Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more vfs updates from Al Viro: "In this pile: - autofs-namespace series - dedupe stuff - more struct path constification" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (40 commits) ocfs2: implement the VFS clone_range, copy_range, and dedupe_range features ocfs2: charge quota for reflinked blocks ocfs2: fix bad pointer cast ocfs2: always unlock when completing dio writes ocfs2: don't eat io errors during _dio_end_io_write ocfs2: budget for extent tree splits when adding refcount flag ocfs2: prohibit refcounted swapfiles ocfs2: add newlines to some error messages ocfs2: convert inode refcount test to a helper simple_write_end(): don't zero in short copy into uptodate exofs: don't mess with simple_write_{begin,end} 9p: saner ->write_end() on failing copy into non-uptodate page fix gfs2_stuffed_write_end() on short copies fix ceph_write_end() nfs_write_end(): fix handling of short copies vfs: refactor clone/dedupe_file_range common functions fs: try to clone files first in vfs_copy_file_range vfs: misc struct path constification namespace.c: constify struct path passed to a bunch of primitives quota: constify struct path in quota_on ...
This commit is contained in:
17
fs/namei.c
17
fs/namei.c
@@ -1200,7 +1200,7 @@ static int follow_managed(struct path *path, struct nameidata *nd)
|
||||
if (managed & DCACHE_MANAGE_TRANSIT) {
|
||||
BUG_ON(!path->dentry->d_op);
|
||||
BUG_ON(!path->dentry->d_op->d_manage);
|
||||
ret = path->dentry->d_op->d_manage(path->dentry, false);
|
||||
ret = path->dentry->d_op->d_manage(path, false);
|
||||
if (ret < 0)
|
||||
break;
|
||||
}
|
||||
@@ -1263,10 +1263,10 @@ int follow_down_one(struct path *path)
|
||||
}
|
||||
EXPORT_SYMBOL(follow_down_one);
|
||||
|
||||
static inline int managed_dentry_rcu(struct dentry *dentry)
|
||||
static inline int managed_dentry_rcu(const struct path *path)
|
||||
{
|
||||
return (dentry->d_flags & DCACHE_MANAGE_TRANSIT) ?
|
||||
dentry->d_op->d_manage(dentry, true) : 0;
|
||||
return (path->dentry->d_flags & DCACHE_MANAGE_TRANSIT) ?
|
||||
path->dentry->d_op->d_manage(path, true) : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1282,7 +1282,7 @@ static bool __follow_mount_rcu(struct nameidata *nd, struct path *path,
|
||||
* Don't forget we might have a non-mountpoint managed dentry
|
||||
* that wants to block transit.
|
||||
*/
|
||||
switch (managed_dentry_rcu(path->dentry)) {
|
||||
switch (managed_dentry_rcu(path)) {
|
||||
case -ECHILD:
|
||||
default:
|
||||
return false;
|
||||
@@ -1392,8 +1392,7 @@ int follow_down(struct path *path)
|
||||
if (managed & DCACHE_MANAGE_TRANSIT) {
|
||||
BUG_ON(!path->dentry->d_op);
|
||||
BUG_ON(!path->dentry->d_op->d_manage);
|
||||
ret = path->dentry->d_op->d_manage(
|
||||
path->dentry, false);
|
||||
ret = path->dentry->d_op->d_manage(path, false);
|
||||
if (ret < 0)
|
||||
return ret == -EISDIR ? 0 : ret;
|
||||
}
|
||||
@@ -2863,7 +2862,7 @@ bool may_open_dev(const struct path *path)
|
||||
!(path->mnt->mnt_sb->s_iflags & SB_I_NODEV);
|
||||
}
|
||||
|
||||
static int may_open(struct path *path, int acc_mode, int flag)
|
||||
static int may_open(const struct path *path, int acc_mode, int flag)
|
||||
{
|
||||
struct dentry *dentry = path->dentry;
|
||||
struct inode *inode = dentry->d_inode;
|
||||
@@ -2913,7 +2912,7 @@ static int may_open(struct path *path, int acc_mode, int flag)
|
||||
|
||||
static int handle_truncate(struct file *filp)
|
||||
{
|
||||
struct path *path = &filp->f_path;
|
||||
const struct path *path = &filp->f_path;
|
||||
struct inode *inode = path->dentry->d_inode;
|
||||
int error = get_write_access(inode);
|
||||
if (error)
|
||||
|
Reference in New Issue
Block a user