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
a5166169
Commit
a5166169
authored
Dec 12, 2011
by
Al Viro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vfs: convert fs_supers to hlist
Signed-off-by:
Al Viro
<
viro@zeniv.linux.org.uk
>
parent
5352d3b6
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
15 deletions
+16
-15
fs/filesystems.c
fs/filesystems.c
+0
-1
fs/super.c
fs/super.c
+14
-12
include/linux/fs.h
include/linux/fs.h
+2
-2
No files found.
fs/filesystems.c
View file @
a5166169
...
...
@@ -74,7 +74,6 @@ int register_filesystem(struct file_system_type * fs)
BUG_ON
(
strchr
(
fs
->
name
,
'.'
));
if
(
fs
->
next
)
return
-
EBUSY
;
INIT_LIST_HEAD
(
&
fs
->
fs_supers
);
write_lock
(
&
file_systems_lock
);
p
=
find_filesystem
(
fs
->
name
,
strlen
(
fs
->
name
));
if
(
*
p
)
...
...
fs/super.c
View file @
a5166169
...
...
@@ -136,7 +136,7 @@ static struct super_block *alloc_super(struct file_system_type *type)
INIT_LIST_HEAD
(
&
s
->
s_files
);
#endif
s
->
s_bdi
=
&
default_backing_dev_info
;
INIT_
LIST_HEAD
(
&
s
->
s_instances
);
INIT_
HLIST_NODE
(
&
s
->
s_instances
);
INIT_HLIST_BL_HEAD
(
&
s
->
s_anon
);
INIT_LIST_HEAD
(
&
s
->
s_inodes
);
INIT_LIST_HEAD
(
&
s
->
s_dentry_lru
);
...
...
@@ -328,7 +328,7 @@ static int grab_super(struct super_block *s) __releases(sb_lock)
bool
grab_super_passive
(
struct
super_block
*
sb
)
{
spin_lock
(
&
sb_lock
);
if
(
list_empty
(
&
sb
->
s_instances
))
{
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
{
spin_unlock
(
&
sb_lock
);
return
false
;
}
...
...
@@ -400,7 +400,7 @@ void generic_shutdown_super(struct super_block *sb)
}
spin_lock
(
&
sb_lock
);
/* should be initialized for __put_super_and_need_restart() */
list_del_init
(
&
sb
->
s_instances
);
h
list_del_init
(
&
sb
->
s_instances
);
spin_unlock
(
&
sb_lock
);
up_write
(
&
sb
->
s_umount
);
}
...
...
@@ -420,13 +420,14 @@ struct super_block *sget(struct file_system_type *type,
void
*
data
)
{
struct
super_block
*
s
=
NULL
;
struct
hlist_node
*
node
;
struct
super_block
*
old
;
int
err
;
retry:
spin_lock
(
&
sb_lock
);
if
(
test
)
{
list_for_each_entry
(
old
,
&
type
->
fs_supers
,
s_instances
)
{
hlist_for_each_entry
(
old
,
node
,
&
type
->
fs_supers
,
s_instances
)
{
if
(
!
test
(
old
,
data
))
continue
;
if
(
!
grab_super
(
old
))
...
...
@@ -462,7 +463,7 @@ struct super_block *sget(struct file_system_type *type,
s
->
s_type
=
type
;
strlcpy
(
s
->
s_id
,
type
->
name
,
sizeof
(
s
->
s_id
));
list_add_tail
(
&
s
->
s_list
,
&
super_blocks
);
list_ad
d
(
&
s
->
s_instances
,
&
type
->
fs_supers
);
hlist_add_hea
d
(
&
s
->
s_instances
,
&
type
->
fs_supers
);
spin_unlock
(
&
sb_lock
);
get_filesystem
(
type
);
register_shrinker
(
&
s
->
s_shrink
);
...
...
@@ -497,7 +498,7 @@ void sync_supers(void)
spin_lock
(
&
sb_lock
);
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
if
(
sb
->
s_op
->
write_super
&&
sb
->
s_dirt
)
{
sb
->
s_count
++
;
...
...
@@ -533,7 +534,7 @@ void iterate_supers(void (*f)(struct super_block *, void *), void *arg)
spin_lock
(
&
sb_lock
);
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
sb
->
s_count
++
;
spin_unlock
(
&
sb_lock
);
...
...
@@ -566,9 +567,10 @@ void iterate_supers_type(struct file_system_type *type,
void
(
*
f
)(
struct
super_block
*
,
void
*
),
void
*
arg
)
{
struct
super_block
*
sb
,
*
p
=
NULL
;
struct
hlist_node
*
node
;
spin_lock
(
&
sb_lock
);
list_for_each_entry
(
sb
,
&
type
->
fs_supers
,
s_instances
)
{
hlist_for_each_entry
(
sb
,
node
,
&
type
->
fs_supers
,
s_instances
)
{
sb
->
s_count
++
;
spin_unlock
(
&
sb_lock
);
...
...
@@ -607,7 +609,7 @@ struct super_block *get_super(struct block_device *bdev)
spin_lock
(
&
sb_lock
);
rescan:
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
if
(
sb
->
s_bdev
==
bdev
)
{
sb
->
s_count
++
;
...
...
@@ -647,7 +649,7 @@ struct super_block *get_active_super(struct block_device *bdev)
restart:
spin_lock
(
&
sb_lock
);
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
if
(
sb
->
s_bdev
==
bdev
)
{
if
(
grab_super
(
sb
))
/* drops sb_lock */
...
...
@@ -667,7 +669,7 @@ struct super_block *user_get_super(dev_t dev)
spin_lock
(
&
sb_lock
);
rescan:
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
if
(
sb
->
s_dev
==
dev
)
{
sb
->
s_count
++
;
...
...
@@ -756,7 +758,7 @@ static void do_emergency_remount(struct work_struct *work)
spin_lock
(
&
sb_lock
);
list_for_each_entry
(
sb
,
&
super_blocks
,
s_list
)
{
if
(
list_empty
(
&
sb
->
s_instances
))
if
(
hlist_unhashed
(
&
sb
->
s_instances
))
continue
;
sb
->
s_count
++
;
spin_unlock
(
&
sb_lock
);
...
...
include/linux/fs.h
View file @
a5166169
...
...
@@ -1440,7 +1440,7 @@ struct super_block {
struct
block_device
*
s_bdev
;
struct
backing_dev_info
*
s_bdi
;
struct
mtd_info
*
s_mtd
;
struct
list_head
s_instances
;
struct
hlist_node
s_instances
;
struct
quota_info
s_dquot
;
/* Diskquota specific options */
int
s_frozen
;
...
...
@@ -1864,7 +1864,7 @@ struct file_system_type {
void
(
*
kill_sb
)
(
struct
super_block
*
);
struct
module
*
owner
;
struct
file_system_type
*
next
;
struct
list_head
fs_supers
;
struct
h
list_head
fs_supers
;
struct
lock_class_key
s_lock_key
;
struct
lock_class_key
s_umount_key
;
...
...
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