Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
dc3f4198
Commit
dc3f4198
authored
May 18, 2015
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make simple_positive() public
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
5d754ced
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
25 additions
and
60 deletions
+25
-60
arch/powerpc/platforms/cell/spufs/inode.c
arch/powerpc/platforms/cell/spufs/inode.c
+1
-1
arch/s390/hypfs/inode.c
arch/s390/hypfs/inode.c
+1
-6
drivers/block/drbd/drbd_debugfs.c
drivers/block/drbd/drbd_debugfs.c
+1
-9
drivers/infiniband/hw/ipath/ipath_fs.c
drivers/infiniband/hw/ipath/ipath_fs.c
+1
-1
drivers/infiniband/hw/qib/qib_fs.c
drivers/infiniband/hw/qib/qib_fs.c
+1
-1
fs/autofs4/autofs_i.h
fs/autofs4/autofs_i.h
+0
-5
fs/ceph/dir.c
fs/ceph/dir.c
+1
-1
fs/configfs/inode.c
fs/configfs/inode.c
+1
-1
fs/debugfs/inode.c
fs/debugfs/inode.c
+3
-8
fs/libfs.c
fs/libfs.c
+0
-5
fs/nfs/dir.c
fs/nfs/dir.c
+1
-1
fs/tracefs/inode.c
fs/tracefs/inode.c
+3
-8
include/linux/dcache.h
include/linux/dcache.h
+5
-0
security/inode.c
security/inode.c
+6
-13
No files found.
arch/powerpc/platforms/cell/spufs/inode.c
View file @
dc3f4198
...
@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir)
...
@@ -166,7 +166,7 @@ static void spufs_prune_dir(struct dentry *dir)
mutex_lock
(
&
d_inode
(
dir
)
->
i_mutex
);
mutex_lock
(
&
d_inode
(
dir
)
->
i_mutex
);
list_for_each_entry_safe
(
dentry
,
tmp
,
&
dir
->
d_subdirs
,
d_child
)
{
list_for_each_entry_safe
(
dentry
,
tmp
,
&
dir
->
d_subdirs
,
d_child
)
{
spin_lock
(
&
dentry
->
d_lock
);
spin_lock
(
&
dentry
->
d_lock
);
if
(
!
(
d_unhashed
(
dentry
))
&&
d_really_is
_positive
(
dentry
))
{
if
(
simple
_positive
(
dentry
))
{
dget_dlock
(
dentry
);
dget_dlock
(
dentry
);
__d_drop
(
dentry
);
__d_drop
(
dentry
);
spin_unlock
(
&
dentry
->
d_lock
);
spin_unlock
(
&
dentry
->
d_lock
);
...
...
arch/s390/hypfs/inode.c
View file @
dc3f4198
...
@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry)
...
@@ -62,18 +62,13 @@ static void hypfs_add_dentry(struct dentry *dentry)
hypfs_last_dentry
=
dentry
;
hypfs_last_dentry
=
dentry
;
}
}
static
inline
int
hypfs_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
static
void
hypfs_remove
(
struct
dentry
*
dentry
)
static
void
hypfs_remove
(
struct
dentry
*
dentry
)
{
{
struct
dentry
*
parent
;
struct
dentry
*
parent
;
parent
=
dentry
->
d_parent
;
parent
=
dentry
->
d_parent
;
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
if
(
hypfs
_positive
(
dentry
))
{
if
(
simple
_positive
(
dentry
))
{
if
(
d_is_dir
(
dentry
))
if
(
d_is_dir
(
dentry
))
simple_rmdir
(
d_inode
(
parent
),
dentry
);
simple_rmdir
(
d_inode
(
parent
),
dentry
);
else
else
...
...
drivers/block/drbd/drbd_debugfs.c
View file @
dc3f4198
...
@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos)
...
@@ -419,14 +419,6 @@ static int in_flight_summary_show(struct seq_file *m, void *pos)
return
0
;
return
0
;
}
}
/* simple_positive(file->f_path.dentry) respectively debugfs_positive(),
* but neither is "reachable" from here.
* So we have our own inline version of it above. :-( */
static
inline
int
debugfs_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
/* make sure at *open* time that the respective object won't go away. */
/* make sure at *open* time that the respective object won't go away. */
static
int
drbd_single_open
(
struct
file
*
file
,
int
(
*
show
)(
struct
seq_file
*
,
void
*
),
static
int
drbd_single_open
(
struct
file
*
file
,
int
(
*
show
)(
struct
seq_file
*
,
void
*
),
void
*
data
,
struct
kref
*
kref
,
void
*
data
,
struct
kref
*
kref
,
...
@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo
...
@@ -444,7 +436,7 @@ static int drbd_single_open(struct file *file, int (*show)(struct seq_file *, vo
/* serialize with d_delete() */
/* serialize with d_delete() */
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
/* Make sure the object is still alive */
/* Make sure the object is still alive */
if
(
debugfs
_positive
(
file
->
f_path
.
dentry
)
if
(
simple
_positive
(
file
->
f_path
.
dentry
)
&&
kref_get_unless_zero
(
kref
))
&&
kref_get_unless_zero
(
kref
))
ret
=
0
;
ret
=
0
;
mutex_unlock
(
&
d_inode
(
parent
)
->
i_mutex
);
mutex_unlock
(
&
d_inode
(
parent
)
->
i_mutex
);
...
...
drivers/infiniband/hw/ipath/ipath_fs.c
View file @
dc3f4198
...
@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name)
...
@@ -277,7 +277,7 @@ static int remove_file(struct dentry *parent, char *name)
}
}
spin_lock
(
&
tmp
->
d_lock
);
spin_lock
(
&
tmp
->
d_lock
);
if
(
!
d_unhashed
(
tmp
)
&&
d_really_is
_positive
(
tmp
))
{
if
(
simple
_positive
(
tmp
))
{
dget_dlock
(
tmp
);
dget_dlock
(
tmp
);
__d_drop
(
tmp
);
__d_drop
(
tmp
);
spin_unlock
(
&
tmp
->
d_lock
);
spin_unlock
(
&
tmp
->
d_lock
);
...
...
drivers/infiniband/hw/qib/qib_fs.c
View file @
dc3f4198
...
@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name)
...
@@ -455,7 +455,7 @@ static int remove_file(struct dentry *parent, char *name)
}
}
spin_lock
(
&
tmp
->
d_lock
);
spin_lock
(
&
tmp
->
d_lock
);
if
(
!
d_unhashed
(
tmp
)
&&
d_really_is
_positive
(
tmp
))
{
if
(
simple
_positive
(
tmp
))
{
__d_drop
(
tmp
);
__d_drop
(
tmp
);
spin_unlock
(
&
tmp
->
d_lock
);
spin_unlock
(
&
tmp
->
d_lock
);
simple_unlink
(
d_inode
(
parent
),
tmp
);
simple_unlink
(
d_inode
(
parent
),
tmp
);
...
...
fs/autofs4/autofs_i.h
View file @
dc3f4198
...
@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi)
...
@@ -238,11 +238,6 @@ static inline u64 autofs4_get_ino(struct autofs_sb_info *sbi)
return
d_inode
(
sbi
->
sb
->
s_root
)
->
i_ino
;
return
d_inode
(
sbi
->
sb
->
s_root
)
->
i_ino
;
}
}
static
inline
int
simple_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
static
inline
void
__autofs4_add_expiring
(
struct
dentry
*
dentry
)
static
inline
void
__autofs4_add_expiring
(
struct
dentry
*
dentry
)
{
{
struct
autofs_sb_info
*
sbi
=
autofs4_sbi
(
dentry
->
d_sb
);
struct
autofs_sb_info
*
sbi
=
autofs4_sbi
(
dentry
->
d_sb
);
...
...
fs/ceph/dir.c
View file @
dc3f4198
...
@@ -161,7 +161,7 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
...
@@ -161,7 +161,7 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
}
}
spin_lock_nested
(
&
dentry
->
d_lock
,
DENTRY_D_LOCK_NESTED
);
spin_lock_nested
(
&
dentry
->
d_lock
,
DENTRY_D_LOCK_NESTED
);
if
(
di
->
lease_shared_gen
==
shared_gen
&&
if
(
di
->
lease_shared_gen
==
shared_gen
&&
!
d_unhashed
(
dentry
)
&&
d_really_is
_positive
(
dentry
)
&&
simple
_positive
(
dentry
)
&&
ceph_snap
(
d_inode
(
dentry
))
!=
CEPH_SNAPDIR
&&
ceph_snap
(
d_inode
(
dentry
))
!=
CEPH_SNAPDIR
&&
ceph_ino
(
d_inode
(
dentry
))
!=
CEPH_INO_CEPH
&&
ceph_ino
(
d_inode
(
dentry
))
!=
CEPH_INO_CEPH
&&
fpos_cmp
(
ctx
->
pos
,
di
->
offset
)
<=
0
)
fpos_cmp
(
ctx
->
pos
,
di
->
offset
)
<=
0
)
...
...
fs/configfs/inode.c
View file @
dc3f4198
...
@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent)
...
@@ -236,7 +236,7 @@ void configfs_drop_dentry(struct configfs_dirent * sd, struct dentry * parent)
if
(
dentry
)
{
if
(
dentry
)
{
spin_lock
(
&
dentry
->
d_lock
);
spin_lock
(
&
dentry
->
d_lock
);
if
(
!
d_unhashed
(
dentry
)
&&
d_really_is
_positive
(
dentry
))
{
if
(
simple
_positive
(
dentry
))
{
dget_dlock
(
dentry
);
dget_dlock
(
dentry
);
__d_drop
(
dentry
);
__d_drop
(
dentry
);
spin_unlock
(
&
dentry
->
d_lock
);
spin_unlock
(
&
dentry
->
d_lock
);
...
...
fs/debugfs/inode.c
View file @
dc3f4198
...
@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb)
...
@@ -44,11 +44,6 @@ static struct inode *debugfs_get_inode(struct super_block *sb)
return
inode
;
return
inode
;
}
}
static
inline
int
debugfs_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
struct
debugfs_mount_opts
{
struct
debugfs_mount_opts
{
kuid_t
uid
;
kuid_t
uid
;
kgid_t
gid
;
kgid_t
gid
;
...
@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent)
...
@@ -522,7 +517,7 @@ static int __debugfs_remove(struct dentry *dentry, struct dentry *parent)
{
{
int
ret
=
0
;
int
ret
=
0
;
if
(
debugfs
_positive
(
dentry
))
{
if
(
simple
_positive
(
dentry
))
{
dget
(
dentry
);
dget
(
dentry
);
if
(
d_is_dir
(
dentry
))
if
(
d_is_dir
(
dentry
))
ret
=
simple_rmdir
(
d_inode
(
parent
),
dentry
);
ret
=
simple_rmdir
(
d_inode
(
parent
),
dentry
);
...
@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
...
@@ -602,7 +597,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
*/
*/
spin_lock
(
&
parent
->
d_lock
);
spin_lock
(
&
parent
->
d_lock
);
list_for_each_entry
(
child
,
&
parent
->
d_subdirs
,
d_child
)
{
list_for_each_entry
(
child
,
&
parent
->
d_subdirs
,
d_child
)
{
if
(
!
debugfs
_positive
(
child
))
if
(
!
simple
_positive
(
child
))
continue
;
continue
;
/* perhaps simple_empty(child) makes more sense */
/* perhaps simple_empty(child) makes more sense */
...
@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
...
@@ -623,7 +618,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can
* from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid.
* no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the
* Restart the loop. We'll skip this one with the
*
debugfs
_positive() check.
*
simple
_positive() check.
*/
*/
goto
loop
;
goto
loop
;
}
}
...
...
fs/libfs.c
View file @
dc3f4198
...
@@ -20,11 +20,6 @@
...
@@ -20,11 +20,6 @@
#include "internal.h"
#include "internal.h"
static
inline
int
simple_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
int
simple_getattr
(
struct
vfsmount
*
mnt
,
struct
dentry
*
dentry
,
int
simple_getattr
(
struct
vfsmount
*
mnt
,
struct
dentry
*
dentry
,
struct
kstat
*
stat
)
struct
kstat
*
stat
)
{
{
...
...
fs/nfs/dir.c
View file @
dc3f4198
...
@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir);
...
@@ -1771,7 +1771,7 @@ EXPORT_SYMBOL_GPL(nfs_mkdir);
static
void
nfs_dentry_handle_enoent
(
struct
dentry
*
dentry
)
static
void
nfs_dentry_handle_enoent
(
struct
dentry
*
dentry
)
{
{
if
(
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
))
if
(
simple_positive
(
dentry
))
d_delete
(
dentry
);
d_delete
(
dentry
);
}
}
...
...
fs/tracefs/inode.c
View file @
dc3f4198
...
@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare
...
@@ -496,16 +496,11 @@ struct dentry *tracefs_create_instance_dir(const char *name, struct dentry *pare
return
dentry
;
return
dentry
;
}
}
static
inline
int
tracefs_positive
(
struct
dentry
*
dentry
)
{
return
dentry
->
d_inode
&&
!
d_unhashed
(
dentry
);
}
static
int
__tracefs_remove
(
struct
dentry
*
dentry
,
struct
dentry
*
parent
)
static
int
__tracefs_remove
(
struct
dentry
*
dentry
,
struct
dentry
*
parent
)
{
{
int
ret
=
0
;
int
ret
=
0
;
if
(
tracefs
_positive
(
dentry
))
{
if
(
simple
_positive
(
dentry
))
{
if
(
dentry
->
d_inode
)
{
if
(
dentry
->
d_inode
)
{
dget
(
dentry
);
dget
(
dentry
);
switch
(
dentry
->
d_inode
->
i_mode
&
S_IFMT
)
{
switch
(
dentry
->
d_inode
->
i_mode
&
S_IFMT
)
{
...
@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
...
@@ -582,7 +577,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
*/
*/
spin_lock
(
&
parent
->
d_lock
);
spin_lock
(
&
parent
->
d_lock
);
list_for_each_entry
(
child
,
&
parent
->
d_subdirs
,
d_child
)
{
list_for_each_entry
(
child
,
&
parent
->
d_subdirs
,
d_child
)
{
if
(
!
tracefs
_positive
(
child
))
if
(
!
simple
_positive
(
child
))
continue
;
continue
;
/* perhaps simple_empty(child) makes more sense */
/* perhaps simple_empty(child) makes more sense */
...
@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
...
@@ -603,7 +598,7 @@ void tracefs_remove_recursive(struct dentry *dentry)
* from d_subdirs. When releasing the parent->d_lock we can
* from d_subdirs. When releasing the parent->d_lock we can
* no longer trust that the next pointer is valid.
* no longer trust that the next pointer is valid.
* Restart the loop. We'll skip this one with the
* Restart the loop. We'll skip this one with the
*
tracefs
_positive() check.
*
simple
_positive() check.
*/
*/
goto
loop
;
goto
loop
;
}
}
...
...
include/linux/dcache.h
View file @
dc3f4198
...
@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry)
...
@@ -507,6 +507,11 @@ static inline bool d_really_is_positive(const struct dentry *dentry)
return
dentry
->
d_inode
!=
NULL
;
return
dentry
->
d_inode
!=
NULL
;
}
}
static
inline
int
simple_positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
extern
void
d_set_fallthru
(
struct
dentry
*
dentry
);
extern
void
d_set_fallthru
(
struct
dentry
*
dentry
);
static
inline
bool
d_is_fallthru
(
const
struct
dentry
*
dentry
)
static
inline
bool
d_is_fallthru
(
const
struct
dentry
*
dentry
)
...
...
security/inode.c
View file @
dc3f4198
...
@@ -25,11 +25,6 @@
...
@@ -25,11 +25,6 @@
static
struct
vfsmount
*
mount
;
static
struct
vfsmount
*
mount
;
static
int
mount_count
;
static
int
mount_count
;
static
inline
int
positive
(
struct
dentry
*
dentry
)
{
return
d_really_is_positive
(
dentry
)
&&
!
d_unhashed
(
dentry
);
}
static
int
fill_super
(
struct
super_block
*
sb
,
void
*
data
,
int
silent
)
static
int
fill_super
(
struct
super_block
*
sb
,
void
*
data
,
int
silent
)
{
{
static
struct
tree_descr
files
[]
=
{{
""
}};
static
struct
tree_descr
files
[]
=
{{
""
}};
...
@@ -201,14 +196,12 @@ void securityfs_remove(struct dentry *dentry)
...
@@ -201,14 +196,12 @@ void securityfs_remove(struct dentry *dentry)
return
;
return
;
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
mutex_lock
(
&
d_inode
(
parent
)
->
i_mutex
);
if
(
positive
(
dentry
))
{
if
(
simple_positive
(
dentry
))
{
if
(
d_really_is_positive
(
dentry
))
{
if
(
d_is_dir
(
dentry
))
if
(
d_is_dir
(
dentry
))
simple_rmdir
(
d_inode
(
parent
),
dentry
);
simple_rmdir
(
d_inode
(
parent
),
dentry
);
else
else
simple_unlink
(
d_inode
(
parent
),
dentry
);
simple_unlink
(
d_inode
(
parent
),
dentry
);
dput
(
dentry
);
dput
(
dentry
);
}
}
}
mutex_unlock
(
&
d_inode
(
parent
)
->
i_mutex
);
mutex_unlock
(
&
d_inode
(
parent
)
->
i_mutex
);
simple_release_fs
(
&
mount
,
&
mount_count
);
simple_release_fs
(
&
mount
,
&
mount_count
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment