Lines Matching refs:volume

36 static void afs_volume_init_callback(struct afs_volume *volume)
40 down_read(&volume->open_mmaps_lock);
42 list_for_each_entry(vnode, &volume->open_mmaps, cb_mmap_link) {
43 if (vnode->cb_v_check != atomic_read(&volume->cb_v_break)) {
49 up_read(&volume->open_mmaps_lock);
64 se->volume->cb_expires_at = AFS_NO_CB_PROMISE;
65 trace_afs_cb_v_break(se->volume->vid, atomic_read(&se->volume->cb_v_break),
67 if (!list_empty(&se->volume->open_mmaps))
68 afs_volume_init_callback(se->volume);
84 vnode->cb_v_check = atomic_read(&vnode->volume->cb_v_break);
109 * Look up a volume by volume ID under RCU conditions.
114 struct afs_volume *volume = NULL;
128 volume = rb_entry(p, struct afs_volume, cell_node);
130 if (volume->vid < vid)
132 else if (volume->vid > vid)
136 volume = NULL;
139 if (volume && afs_try_get_volume(volume, afs_volume_trace_get_callback))
147 return volume;
151 * Allow the fileserver to break callbacks at the volume-level. This is
152 * typically done when, for example, a R/W volume is snapshotted to a R/O
153 * volume (the only way to change an R/O volume). It may also, however, happen
154 * when a volserver takes control of a volume (offlining it, moving it, etc.).
156 * Every file in that volume will need to be reevaluated.
159 struct afs_volume *volume)
162 struct afs_server_list *slist = rcu_dereference(volume->servers);
165 write_lock(&volume->cb_v_break_lock);
170 volume->cb_expires_at = AFS_NO_CB_PROMISE;
172 cb_v_break = atomic_inc_return_release(&volume->cb_v_break);
173 trace_afs_cb_v_break(volume->vid, cb_v_break, afs_cb_break_for_volume_callback);
175 write_unlock(&volume->cb_v_break_lock);
178 if (!list_empty(&volume->open_mmaps))
179 afs_volume_init_callback(volume);
189 struct afs_volume *volume,
200 sb = rcu_dereference(volume->sb);
218 struct afs_volume *volume;
223 volume = afs_lookup_volume_rcu(server->cell, vid);
225 afs_break_volume_callback(server, volume);
241 if (volume)
242 afs_break_one_callback(server, volume, &cbb->fid);
250 afs_put_volume(volume, afs_volume_trace_put_callback);