diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-11-25 00:22:05 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-01-03 22:57:08 -0500 |
commit | 6776db3d32b2a59198ec7ac6d32be0b9fdbd8a68 (patch) | |
tree | d293d993f41bdea79eaeb51f404e9837a49cb039 /fs/pnode.c | |
parent | 32301920f44a9334f57dd94bebfc6e593b99ad47 (diff) |
vfs: take mnt_share/mnt_slave/mnt_slave_list and mnt_expire to struct mount
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/pnode.c')
-rw-r--r-- | fs/pnode.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/fs/pnode.c b/fs/pnode.c index 9bf22b61f8f..12cc1518e0c 100644 --- a/fs/pnode.c +++ b/fs/pnode.c | |||
@@ -15,17 +15,17 @@ | |||
15 | /* return the next shared peer mount of @p */ | 15 | /* return the next shared peer mount of @p */ |
16 | static inline struct mount *next_peer(struct mount *p) | 16 | static inline struct mount *next_peer(struct mount *p) |
17 | { | 17 | { |
18 | return list_entry(p->mnt.mnt_share.next, struct mount, mnt.mnt_share); | 18 | return list_entry(p->mnt_share.next, struct mount, mnt_share); |
19 | } | 19 | } |
20 | 20 | ||
21 | static inline struct mount *first_slave(struct mount *p) | 21 | static inline struct mount *first_slave(struct mount *p) |
22 | { | 22 | { |
23 | return list_entry(p->mnt.mnt_slave_list.next, struct mount, mnt.mnt_slave); | 23 | return list_entry(p->mnt_slave_list.next, struct mount, mnt_slave); |
24 | } | 24 | } |
25 | 25 | ||
26 | static inline struct mount *next_slave(struct mount *p) | 26 | static inline struct mount *next_slave(struct mount *p) |
27 | { | 27 | { |
28 | return list_entry(p->mnt.mnt_slave.next, struct mount, mnt.mnt_slave); | 28 | return list_entry(p->mnt_slave.next, struct mount, mnt_slave); |
29 | } | 29 | } |
30 | 30 | ||
31 | static struct mount *get_peer_under_root(struct mount *mnt, | 31 | static struct mount *get_peer_under_root(struct mount *mnt, |
@@ -82,27 +82,27 @@ static int do_make_slave(struct mount *mnt) | |||
82 | if (peer_mnt == mnt) | 82 | if (peer_mnt == mnt) |
83 | peer_mnt = NULL; | 83 | peer_mnt = NULL; |
84 | } | 84 | } |
85 | if (IS_MNT_SHARED(&mnt->mnt) && list_empty(&mnt->mnt.mnt_share)) | 85 | if (IS_MNT_SHARED(&mnt->mnt) && list_empty(&mnt->mnt_share)) |
86 | mnt_release_group_id(mnt); | 86 | mnt_release_group_id(mnt); |
87 | 87 | ||
88 | list_del_init(&mnt->mnt.mnt_share); | 88 | list_del_init(&mnt->mnt_share); |
89 | mnt->mnt.mnt_group_id = 0; | 89 | mnt->mnt.mnt_group_id = 0; |
90 | 90 | ||
91 | if (peer_mnt) | 91 | if (peer_mnt) |
92 | master = peer_mnt; | 92 | master = peer_mnt; |
93 | 93 | ||
94 | if (master) { | 94 | if (master) { |
95 | list_for_each_entry(slave_mnt, &mnt->mnt.mnt_slave_list, mnt.mnt_slave) | 95 | list_for_each_entry(slave_mnt, &mnt->mnt_slave_list, mnt_slave) |
96 | slave_mnt->mnt_master = master; | 96 | slave_mnt->mnt_master = master; |
97 | list_move(&mnt->mnt.mnt_slave, &master->mnt.mnt_slave_list); | 97 | list_move(&mnt->mnt_slave, &master->mnt_slave_list); |
98 | list_splice(&mnt->mnt.mnt_slave_list, master->mnt.mnt_slave_list.prev); | 98 | list_splice(&mnt->mnt_slave_list, master->mnt_slave_list.prev); |
99 | INIT_LIST_HEAD(&mnt->mnt.mnt_slave_list); | 99 | INIT_LIST_HEAD(&mnt->mnt_slave_list); |
100 | } else { | 100 | } else { |
101 | struct list_head *p = &mnt->mnt.mnt_slave_list; | 101 | struct list_head *p = &mnt->mnt_slave_list; |
102 | while (!list_empty(p)) { | 102 | while (!list_empty(p)) { |
103 | slave_mnt = list_first_entry(p, | 103 | slave_mnt = list_first_entry(p, |
104 | struct mount, mnt.mnt_slave); | 104 | struct mount, mnt_slave); |
105 | list_del_init(&slave_mnt->mnt.mnt_slave); | 105 | list_del_init(&slave_mnt->mnt_slave); |
106 | slave_mnt->mnt_master = NULL; | 106 | slave_mnt->mnt_master = NULL; |
107 | } | 107 | } |
108 | } | 108 | } |
@@ -122,7 +122,7 @@ void change_mnt_propagation(struct mount *mnt, int type) | |||
122 | } | 122 | } |
123 | do_make_slave(mnt); | 123 | do_make_slave(mnt); |
124 | if (type != MS_SLAVE) { | 124 | if (type != MS_SLAVE) { |
125 | list_del_init(&mnt->mnt.mnt_slave); | 125 | list_del_init(&mnt->mnt_slave); |
126 | mnt->mnt_master = NULL; | 126 | mnt->mnt_master = NULL; |
127 | if (type == MS_UNBINDABLE) | 127 | if (type == MS_UNBINDABLE) |
128 | mnt->mnt.mnt_flags |= MNT_UNBINDABLE; | 128 | mnt->mnt.mnt_flags |= MNT_UNBINDABLE; |
@@ -145,7 +145,7 @@ static struct mount *propagation_next(struct mount *m, | |||
145 | struct mount *origin) | 145 | struct mount *origin) |
146 | { | 146 | { |
147 | /* are there any slaves of this mount? */ | 147 | /* are there any slaves of this mount? */ |
148 | if (!IS_MNT_NEW(&m->mnt) && !list_empty(&m->mnt.mnt_slave_list)) | 148 | if (!IS_MNT_NEW(&m->mnt) && !list_empty(&m->mnt_slave_list)) |
149 | return first_slave(m); | 149 | return first_slave(m); |
150 | 150 | ||
151 | while (1) { | 151 | while (1) { |
@@ -154,7 +154,7 @@ static struct mount *propagation_next(struct mount *m, | |||
154 | if (master == origin->mnt_master) { | 154 | if (master == origin->mnt_master) { |
155 | struct mount *next = next_peer(m); | 155 | struct mount *next = next_peer(m); |
156 | return (next == origin) ? NULL : next; | 156 | return (next == origin) ? NULL : next; |
157 | } else if (m->mnt.mnt_slave.next != &master->mnt.mnt_slave_list) | 157 | } else if (m->mnt_slave.next != &master->mnt_slave_list) |
158 | return next_slave(m); | 158 | return next_slave(m); |
159 | 159 | ||
160 | /* back at master */ | 160 | /* back at master */ |