Lines Matching +full:cell +full:- +full:count

26  * ->fault() or ->page_mkwrite() - at which point we can handle invalidation
33 unmap_mapping_pages(vnode->netfs.inode.i_mapping, 0, 0, false); in afs_invalidate_mmap_work()
40 struct afs_cell *cell = server->cell; in afs_server_init_callback_work() local
42 down_read(&cell->fs_open_mmaps_lock); in afs_server_init_callback_work()
44 list_for_each_entry(vnode, &cell->fs_open_mmaps, cb_mmap_link) { in afs_server_init_callback_work()
45 if (vnode->cb_server == server) { in afs_server_init_callback_work()
46 clear_bit(AFS_VNODE_CB_PROMISED, &vnode->flags); in afs_server_init_callback_work()
47 queue_work(system_unbound_wq, &vnode->cb_work); in afs_server_init_callback_work()
51 up_read(&cell->fs_open_mmaps_lock); in afs_server_init_callback_work()
55 * Allow the fileserver to request callback state (re-)initialisation.
62 server->cb_s_break++; in afs_init_callback_state()
63 atomic_inc(&server->cell->fs_s_break); in afs_init_callback_state()
64 if (!list_empty(&server->cell->fs_open_mmaps)) in afs_init_callback_state()
65 queue_work(system_unbound_wq, &server->initcb_work); in afs_init_callback_state()
67 } while ((server = rcu_dereference(server->uuid_next))); in afs_init_callback_state()
78 clear_bit(AFS_VNODE_NEW_CONTENT, &vnode->flags); in __afs_break_callback()
79 if (test_and_clear_bit(AFS_VNODE_CB_PROMISED, &vnode->flags)) { in __afs_break_callback()
80 vnode->cb_break++; in __afs_break_callback()
81 vnode->cb_v_break = vnode->volume->cb_v_break; in __afs_break_callback()
84 if (vnode->lock_state == AFS_VNODE_LOCK_WAITING_FOR_CB) in __afs_break_callback()
88 vnode->status.type == AFS_FTYPE_FILE && in __afs_break_callback()
89 atomic_read(&vnode->cb_nr_mmap)) in __afs_break_callback()
90 queue_work(system_unbound_wq, &vnode->cb_work); in __afs_break_callback()
92 trace_afs_cb_break(&vnode->fid, vnode->cb_break, reason, true); in __afs_break_callback()
94 trace_afs_cb_break(&vnode->fid, vnode->cb_break, reason, false); in __afs_break_callback()
100 write_seqlock(&vnode->cb_lock); in afs_break_callback()
102 write_sequnlock(&vnode->cb_lock); in afs_break_callback()
108 static struct afs_volume *afs_lookup_volume_rcu(struct afs_cell *cell, in afs_lookup_volume_rcu() argument
120 read_seqbegin_or_lock(&cell->volume_lock, &seq); in afs_lookup_volume_rcu()
122 p = rcu_dereference_raw(cell->volumes.rb_node); in afs_lookup_volume_rcu()
126 if (volume->vid < vid) in afs_lookup_volume_rcu()
127 p = rcu_dereference_raw(p->rb_left); in afs_lookup_volume_rcu()
128 else if (volume->vid > vid) in afs_lookup_volume_rcu()
129 p = rcu_dereference_raw(p->rb_right); in afs_lookup_volume_rcu()
135 } while (need_seqretry(&cell->volume_lock, seq)); in afs_lookup_volume_rcu()
137 done_seqretry(&cell->volume_lock, seq); in afs_lookup_volume_rcu()
143 * - happens when
144 * - the backing file is changed
145 * - a lock is released
154 if (fid->vnode == 0 && fid->unique == 0) { in afs_break_one_callback()
156 write_lock(&volume->cb_v_break_lock); in afs_break_one_callback()
157 volume->cb_v_break++; in afs_break_one_callback()
158 trace_afs_cb_break(fid, volume->cb_v_break, in afs_break_one_callback()
160 write_unlock(&volume->cb_v_break_lock); in afs_break_one_callback()
164 /* See if we can find a matching inode - even an I_NEW inode needs to in afs_break_one_callback()
168 sb = rcu_dereference(volume->sb); in afs_break_one_callback()
172 inode = find_inode_rcu(sb, fid->vnode, afs_ilookup5_test_by_fid, fid); in afs_break_one_callback()
187 afs_volid_t vid = cbb->fid.vid; in afs_break_some_callbacks()
190 volume = afs_lookup_volume_rcu(server->cell, vid); in afs_break_some_callbacks()
196 for (i = *_count; i > 0; cbb++, i--) { in afs_break_some_callbacks()
197 if (cbb->fid.vid == vid) { in afs_break_some_callbacks()
198 _debug("- Fid { vl=%08llx n=%llu u=%u }", in afs_break_some_callbacks()
199 cbb->fid.vid, in afs_break_some_callbacks()
200 cbb->fid.vnode, in afs_break_some_callbacks()
201 cbb->fid.unique); in afs_break_some_callbacks()
202 --*_count; in afs_break_some_callbacks()
204 afs_break_one_callback(volume, &cbb->fid); in afs_break_some_callbacks()
214 void afs_break_callbacks(struct afs_server *server, size_t count, in afs_break_callbacks() argument
217 _enter("%p,%zu,", server, count); in afs_break_callbacks()
223 while (count > 0) in afs_break_callbacks()
224 afs_break_some_callbacks(server, callbacks, &count); in afs_break_callbacks()