Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
L
Linux
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
E-EXK4 - Operating System Group
projects
Linux
Commits
1aed3e42
Commit
1aed3e42
authored
14 years ago
by
Al Viro
Browse files
Options
Downloads
Patches
Plain Diff
lose 'mounting_here' argument in ->d_manage()
it's always false... Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
7cc90cc3
Loading
Loading
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Documentation/filesystems/vfs.txt
+1
-5
1 addition, 5 deletions
Documentation/filesystems/vfs.txt
fs/autofs4/root.c
+3
-3
3 additions, 3 deletions
fs/autofs4/root.c
fs/namei.c
+3
-4
3 additions, 4 deletions
fs/namei.c
include/linux/dcache.h
+1
-1
1 addition, 1 deletion
include/linux/dcache.h
with
8 additions
and
13 deletions
Documentation/filesystems/vfs.txt
+
1
−
5
View file @
1aed3e42
...
...
@@ -873,7 +873,7 @@ struct dentry_operations {
void (*d_iput)(struct dentry *, struct inode *);
char *(*d_dname)(struct dentry *, char *, int);
struct vfsmount *(*d_automount)(struct path *);
int (*d_manage)(struct dentry *,
bool,
bool);
int (*d_manage)(struct dentry *, bool);
};
d_revalidate: called when the VFS needs to revalidate a dentry. This
...
...
@@ -969,10 +969,6 @@ struct dentry_operations {
mounted on it and not to check the automount flag. Any other error
code will abort pathwalk completely.
If the 'mounting_here' parameter is true, then namespace_sem is being
held by the caller and the function should not initiate any mounts or
unmounts that it will then wait for.
If the 'rcu_walk' parameter is true, then the caller is doing a
pathwalk in RCU-walk mode. Sleeping is not permitted in this mode,
and the caller can be asked to leave it and call again by returing
...
...
This diff is collapsed.
Click to expand it.
fs/autofs4/root.c
+
3
−
3
View file @
1aed3e42
...
...
@@ -36,7 +36,7 @@ static long autofs4_root_compat_ioctl(struct file *,unsigned int,unsigned long);
static
int
autofs4_dir_open
(
struct
inode
*
inode
,
struct
file
*
file
);
static
struct
dentry
*
autofs4_lookup
(
struct
inode
*
,
struct
dentry
*
,
struct
nameidata
*
);
static
struct
vfsmount
*
autofs4_d_automount
(
struct
path
*
);
static
int
autofs4_d_manage
(
struct
dentry
*
,
bool
,
bool
);
static
int
autofs4_d_manage
(
struct
dentry
*
,
bool
);
static
void
autofs4_dentry_release
(
struct
dentry
*
);
const
struct
file_operations
autofs4_root_operations
=
{
...
...
@@ -446,7 +446,7 @@ static struct vfsmount *autofs4_d_automount(struct path *path)
return
NULL
;
}
int
autofs4_d_manage
(
struct
dentry
*
dentry
,
bool
mounting_here
,
bool
rcu_walk
)
int
autofs4_d_manage
(
struct
dentry
*
dentry
,
bool
rcu_walk
)
{
struct
autofs_sb_info
*
sbi
=
autofs4_sbi
(
dentry
->
d_sb
);
...
...
@@ -454,7 +454,7 @@ int autofs4_d_manage(struct dentry *dentry, bool mounting_here, bool rcu_walk)
dentry
,
dentry
->
d_name
.
len
,
dentry
->
d_name
.
name
);
/* The daemon never waits. */
if
(
autofs4_oz_mode
(
sbi
)
||
mounting_here
)
{
if
(
autofs4_oz_mode
(
sbi
))
{
if
(
!
d_mountpoint
(
dentry
))
return
-
EISDIR
;
return
0
;
...
...
This diff is collapsed.
Click to expand it.
fs/namei.c
+
3
−
4
View file @
1aed3e42
...
...
@@ -933,8 +933,7 @@ static int follow_managed(struct path *path, unsigned flags)
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
,
false
);
ret
=
path
->
dentry
->
d_op
->
d_manage
(
path
->
dentry
,
false
);
if
(
ret
<
0
)
return
ret
==
-
EISDIR
?
0
:
ret
;
}
...
...
@@ -999,7 +998,7 @@ static bool __follow_mount_rcu(struct nameidata *nd, struct path *path,
struct
vfsmount
*
mounted
;
if
(
unlikely
(
path
->
dentry
->
d_flags
&
DCACHE_MANAGE_TRANSIT
)
&&
!
reverse_transit
&&
path
->
dentry
->
d_op
->
d_manage
(
path
->
dentry
,
false
,
true
)
<
0
)
path
->
dentry
->
d_op
->
d_manage
(
path
->
dentry
,
true
)
<
0
)
return
false
;
mounted
=
__lookup_mnt
(
path
->
mnt
,
path
->
dentry
,
1
);
if
(
!
mounted
)
...
...
@@ -1086,7 +1085,7 @@ int follow_down(struct path *path)
BUG_ON
(
!
path
->
dentry
->
d_op
);
BUG_ON
(
!
path
->
dentry
->
d_op
->
d_manage
);
ret
=
path
->
dentry
->
d_op
->
d_manage
(
path
->
dentry
,
false
,
false
);
path
->
dentry
,
false
);
if
(
ret
<
0
)
return
ret
==
-
EISDIR
?
0
:
ret
;
}
...
...
This diff is collapsed.
Click to expand it.
include/linux/dcache.h
+
1
−
1
View file @
1aed3e42
...
...
@@ -168,7 +168,7 @@ struct dentry_operations {
void
(
*
d_iput
)(
struct
dentry
*
,
struct
inode
*
);
char
*
(
*
d_dname
)(
struct
dentry
*
,
char
*
,
int
);
struct
vfsmount
*
(
*
d_automount
)(
struct
path
*
);
int
(
*
d_manage
)(
struct
dentry
*
,
bool
,
bool
);
int
(
*
d_manage
)(
struct
dentry
*
,
bool
);
}
____cacheline_aligned
;
/*
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment