Lines Matching refs:vnode
61 static void afs_unlock_for_io(struct afs_vnode *vnode) in afs_unlock_for_io() argument
65 spin_lock(&vnode->lock); in afs_unlock_for_io()
66 locker = list_first_entry_or_null(&vnode->io_lock_waiters, in afs_unlock_for_io()
74 clear_bit(AFS_VNODE_IO_LOCK, &vnode->flags); in afs_unlock_for_io()
76 spin_unlock(&vnode->lock); in afs_unlock_for_io()
83 static void afs_lock_for_io(struct afs_vnode *vnode) in afs_lock_for_io() argument
87 spin_lock(&vnode->lock); in afs_lock_for_io()
89 if (!test_and_set_bit(AFS_VNODE_IO_LOCK, &vnode->flags)) { in afs_lock_for_io()
90 spin_unlock(&vnode->lock); in afs_lock_for_io()
94 list_add_tail(&myself.link, &vnode->io_lock_waiters); in afs_lock_for_io()
95 spin_unlock(&vnode->lock); in afs_lock_for_io()
110 static int afs_lock_for_io_interruptible(struct afs_vnode *vnode) in afs_lock_for_io_interruptible() argument
115 spin_lock(&vnode->lock); in afs_lock_for_io_interruptible()
117 if (!test_and_set_bit(AFS_VNODE_IO_LOCK, &vnode->flags)) { in afs_lock_for_io_interruptible()
118 spin_unlock(&vnode->lock); in afs_lock_for_io_interruptible()
122 list_add_tail(&myself.link, &vnode->io_lock_waiters); in afs_lock_for_io_interruptible()
123 spin_unlock(&vnode->lock); in afs_lock_for_io_interruptible()
138 spin_lock(&vnode->lock); in afs_lock_for_io_interruptible()
140 spin_unlock(&vnode->lock); in afs_lock_for_io_interruptible()
141 afs_unlock_for_io(vnode); in afs_lock_for_io_interruptible()
144 spin_unlock(&vnode->lock); in afs_lock_for_io_interruptible()
156 struct afs_vnode *vnode = op->file[0].vnode; in afs_get_io_locks() local
157 struct afs_vnode *vnode2 = op->file[1].vnode; in afs_get_io_locks()
162 afs_lock_for_io(vnode); in afs_get_io_locks()
168 if (!vnode2 || !op->file[1].need_io_lock || vnode == vnode2) in afs_get_io_locks()
171 if (vnode2 > vnode) in afs_get_io_locks()
172 swap(vnode, vnode2); in afs_get_io_locks()
174 if (afs_lock_for_io_interruptible(vnode) < 0) { in afs_get_io_locks()
186 afs_unlock_for_io(vnode); in afs_get_io_locks()
200 struct afs_vnode *vnode = op->file[0].vnode; in afs_drop_io_locks() local
201 struct afs_vnode *vnode2 = op->file[1].vnode; in afs_drop_io_locks()
208 afs_unlock_for_io(vnode); in afs_drop_io_locks()
214 struct afs_vnode *vnode = vp->vnode; in afs_prepare_vnode() local
216 if (vnode) { in afs_prepare_vnode()
217 vp->fid = vnode->fid; in afs_prepare_vnode()
218 vp->dv_before = vnode->status.data_version; in afs_prepare_vnode()
219 vp->cb_break_before = afs_calc_vnode_cb_break(vnode); in afs_prepare_vnode()
220 if (vnode->lock_state != AFS_VNODE_LOCK_NONE) in afs_prepare_vnode()
223 set_bit(AFS_VNODE_MODIFYING, &vnode->flags); in afs_prepare_vnode()
226 if (vp->fid.vnode) in afs_prepare_vnode()
228 index, vp->fid.vid, vp->fid.vnode, vp->fid.unique); in afs_prepare_vnode()
239 struct afs_vnode *vnode = op->file[0].vnode; in afs_begin_vnode_operation() local
241 ASSERT(vnode); in afs_begin_vnode_operation()
339 clear_bit(AFS_VNODE_MODIFYING, &op->file[0].vnode->flags); in afs_put_operation()
340 if (op->file[1].modification && op->file[1].vnode != op->file[0].vnode) in afs_put_operation()
341 clear_bit(AFS_VNODE_MODIFYING, &op->file[1].vnode->flags); in afs_put_operation()
343 iput(&op->file[0].vnode->netfs.inode); in afs_put_operation()
345 iput(&op->file[1].vnode->netfs.inode); in afs_put_operation()
350 iput(&op->more_files[i].vnode->netfs.inode); in afs_put_operation()