• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/fs/afs/

Lines Matching refs:wb

19 static int afs_write_back_from_locked_page(struct afs_writeback *wb,
33 * - must be called with the wb->vnode->writeback_lock held
35 static void afs_unlink_writeback(struct afs_writeback *wb)
38 struct afs_vnode *vnode = wb->vnode;
40 list_del_init(&wb->link);
57 static void afs_free_writeback(struct afs_writeback *wb)
60 key_put(wb->key);
61 kfree(wb);
67 void afs_put_writeback(struct afs_writeback *wb)
69 struct afs_vnode *vnode = wb->vnode;
71 _enter("{%d}", wb->usage);
74 if (--wb->usage == 0)
75 afs_unlink_writeback(wb);
77 wb = NULL;
79 if (wb)
80 afs_free_writeback(wb);
181 struct afs_writeback *candidate, *wb;
217 wb = (struct afs_writeback *) page_private(page);
218 if (wb) {
219 if (wb->key == key && wb->state == AFS_WBACK_PENDING)
227 list_for_each_entry(wb, &vnode->writebacks, link) {
228 if (wb->last == index - 1 && wb->key == key &&
229 wb->state == AFS_WBACK_PENDING)
244 ASSERTRANGE(wb->first, <=, index, <=, wb->last);
245 if (index == wb->first && offset < wb->offset_first)
246 wb->offset_first = offset;
247 if (index == wb->last && to > wb->to_last)
248 wb->to_last = to;
255 _debug("append into %lx-%lx", wb->first, wb->last);
256 wb->usage++;
257 wb->last++;
258 wb->to_last = to;
261 set_page_private(page, (unsigned long) wb);
270 if (wb->state == AFS_WBACK_PENDING)
271 wb->state = AFS_WBACK_CONFLICTING;
274 ret = afs_write_back_from_locked_page(wb, page);
283 afs_put_writeback(wb);
362 static int afs_write_back_from_locked_page(struct afs_writeback *wb,
383 if (start >= wb->last)
388 n = wb->last - start + 1;
391 n = find_get_pages_contig(wb->vnode->vfs_inode.i_mapping,
405 if (page->index > wb->last)
410 page_private(page) != (unsigned long) wb) {
429 } while (start <= wb->last && count < 65536);
438 offset = (first == wb->first) ? wb->offset_first : 0;
439 to = (last == wb->last) ? wb->to_last : PAGE_SIZE;
443 ret = afs_vnode_store_data(wb, first, last, offset, to);
449 &wb->vnode->vfs_inode.i_mapping->flags);
458 afs_kill_pages(wb->vnode, true, first, last);
459 set_bit(AS_EIO, &wb->vnode->vfs_inode.i_mapping->flags);
467 afs_kill_pages(wb->vnode, false, first, last);
487 struct afs_writeback *wb;
492 wb = (struct afs_writeback *) page_private(page);
493 ASSERT(wb != NULL);
495 ret = afs_write_back_from_locked_page(wb, page);
518 struct afs_writeback *wb;
560 wb = (struct afs_writeback *) page_private(page);
561 ASSERT(wb != NULL);
563 spin_lock(&wb->vnode->writeback_lock);
564 wb->state = AFS_WBACK_WRITING;
565 spin_unlock(&wb->vnode->writeback_lock);
567 ret = afs_write_back_from_locked_page(wb, page);
658 struct afs_writeback *wb = call->wb;
667 ASSERT(wb != NULL);
685 if (page_private(page) == (unsigned long) wb) {
688 wb->usage--;
692 if (wb->usage == 0) {
693 afs_unlink_writeback(wb);
699 afs_free_writeback(wb);
700 wb = NULL;
781 struct afs_writeback *wb, *xwb;
792 wb = kzalloc(sizeof(*wb), GFP_KERNEL);
793 if (!wb)
795 wb->vnode = vnode;
796 wb->first = 0;
797 wb->last = -1;
798 wb->offset_first = 0;
799 wb->to_last = PAGE_SIZE;
800 wb->usage = 1;
801 wb->state = AFS_WBACK_SYNCING;
802 init_waitqueue_head(&wb->waitq);
809 list_add_tail(&wb->link, &vnode->writebacks);
815 afs_put_writeback(wb);
816 _leave(" = %d [wb]", ret);
821 ret = wait_event_interruptible(wb->waitq,
822 wb->state == AFS_WBACK_COMPLETE ||
823 vnode->writebacks.next == &wb->link);
824 afs_put_writeback(wb);