Lines Matching refs:wpa
414 struct fuse_writepage_args *wpa; in fuse_find_writeback() local
417 wpa = rb_entry(n, struct fuse_writepage_args, writepages_entry); in fuse_find_writeback()
418 WARN_ON(get_fuse_inode(wpa->inode) != fi); in fuse_find_writeback()
419 curr_index = wpa->ia.write.in.offset >> PAGE_SHIFT; in fuse_find_writeback()
420 if (idx_from >= curr_index + wpa->ia.ap.num_pages) in fuse_find_writeback()
425 return wpa; in fuse_find_writeback()
1700 static void fuse_writepage_free(struct fuse_writepage_args *wpa) in fuse_writepage_free() argument
1702 struct fuse_args_pages *ap = &wpa->ia.ap; in fuse_writepage_free()
1705 if (wpa->bucket) in fuse_writepage_free()
1706 fuse_sync_bucket_dec(wpa->bucket); in fuse_writepage_free()
1711 if (wpa->ia.ff) in fuse_writepage_free()
1712 fuse_file_put(wpa->ia.ff, false, false); in fuse_writepage_free()
1715 kfree(wpa); in fuse_writepage_free()
1719 struct fuse_writepage_args *wpa) in fuse_writepage_finish() argument
1721 struct fuse_args_pages *ap = &wpa->ia.ap; in fuse_writepage_finish()
1722 struct inode *inode = wpa->inode; in fuse_writepage_finish()
1737 struct fuse_writepage_args *wpa, loff_t size) in fuse_send_writepage() argument
1742 struct fuse_inode *fi = get_fuse_inode(wpa->inode); in fuse_send_writepage()
1743 struct fuse_write_in *inarg = &wpa->ia.write.in; in fuse_send_writepage()
1744 struct fuse_args *args = &wpa->ia.ap.args; in fuse_send_writepage()
1745 __u64 data_size = wpa->ia.ap.num_pages * PAGE_SIZE; in fuse_send_writepage()
1777 rb_erase(&wpa->writepages_entry, &fi->writepages); in fuse_send_writepage()
1778 fuse_writepage_finish(fm, wpa); in fuse_send_writepage()
1782 for (aux = wpa->next; aux; aux = next) { in fuse_send_writepage()
1788 fuse_writepage_free(wpa); in fuse_send_writepage()
1805 struct fuse_writepage_args *wpa; in fuse_flush_writepages() local
1808 wpa = list_entry(fi->queued_writes.next, in fuse_flush_writepages()
1810 list_del_init(&wpa->queue_entry); in fuse_flush_writepages()
1811 fuse_send_writepage(fm, wpa, crop); in fuse_flush_writepages()
1816 struct fuse_writepage_args *wpa) in fuse_insert_writeback() argument
1818 pgoff_t idx_from = wpa->ia.write.in.offset >> PAGE_SHIFT; in fuse_insert_writeback()
1819 pgoff_t idx_to = idx_from + wpa->ia.ap.num_pages - 1; in fuse_insert_writeback()
1823 WARN_ON(!wpa->ia.ap.num_pages); in fuse_insert_writeback()
1831 WARN_ON(curr->inode != wpa->inode); in fuse_insert_writeback()
1842 rb_link_node(&wpa->writepages_entry, parent, p); in fuse_insert_writeback()
1843 rb_insert_color(&wpa->writepages_entry, root); in fuse_insert_writeback()
1847 static void tree_insert(struct rb_root *root, struct fuse_writepage_args *wpa) in tree_insert() argument
1849 WARN_ON(fuse_insert_writeback(root, wpa)); in tree_insert()
1855 struct fuse_writepage_args *wpa = in fuse_writepage_end() local
1856 container_of(args, typeof(*wpa), ia.ap.args); in fuse_writepage_end()
1857 struct inode *inode = wpa->inode; in fuse_writepage_end()
1871 rb_erase(&wpa->writepages_entry, &fi->writepages); in fuse_writepage_end()
1872 while (wpa->next) { in fuse_writepage_end()
1874 struct fuse_write_in *inarg = &wpa->ia.write.in; in fuse_writepage_end()
1875 struct fuse_writepage_args *next = wpa->next; in fuse_writepage_end()
1877 wpa->next = next->next; in fuse_writepage_end()
1879 next->ia.ff = fuse_file_get(wpa->ia.ff); in fuse_writepage_end()
1908 fuse_writepage_finish(fm, wpa); in fuse_writepage_end()
1910 fuse_writepage_free(wpa); in fuse_writepage_end()
1961 struct fuse_writepage_args *wpa; in fuse_writepage_args_alloc() local
1964 wpa = kzalloc(sizeof(*wpa), GFP_NOFS); in fuse_writepage_args_alloc()
1965 if (wpa) { in fuse_writepage_args_alloc()
1966 ap = &wpa->ia.ap; in fuse_writepage_args_alloc()
1970 kfree(wpa); in fuse_writepage_args_alloc()
1971 wpa = NULL; in fuse_writepage_args_alloc()
1974 return wpa; in fuse_writepage_args_alloc()
1979 struct fuse_writepage_args *wpa) in fuse_writepage_add_to_bucket() argument
1987 wpa->bucket = rcu_dereference(fc->curr_bucket); in fuse_writepage_add_to_bucket()
1988 } while (unlikely(!atomic_inc_not_zero(&wpa->bucket->count))); in fuse_writepage_add_to_bucket()
1998 struct fuse_writepage_args *wpa; in fuse_writepage_locked() local
2005 wpa = fuse_writepage_args_alloc(); in fuse_writepage_locked()
2006 if (!wpa) in fuse_writepage_locked()
2008 ap = &wpa->ia.ap; in fuse_writepage_locked()
2015 wpa->ia.ff = fuse_write_file_get(fi); in fuse_writepage_locked()
2016 if (!wpa->ia.ff) in fuse_writepage_locked()
2019 fuse_writepage_add_to_bucket(fc, wpa); in fuse_writepage_locked()
2020 fuse_write_args_fill(&wpa->ia, wpa->ia.ff, page_offset(page), 0); in fuse_writepage_locked()
2023 wpa->ia.write.in.write_flags |= FUSE_WRITE_CACHE; in fuse_writepage_locked()
2024 wpa->next = NULL; in fuse_writepage_locked()
2031 wpa->inode = inode; in fuse_writepage_locked()
2037 tree_insert(&fi->writepages, wpa); in fuse_writepage_locked()
2038 list_add_tail(&wpa->queue_entry, &fi->queued_writes); in fuse_writepage_locked()
2049 kfree(wpa); in fuse_writepage_locked()
2085 struct fuse_writepage_args *wpa; member
2094 struct fuse_args_pages *ap = &data->wpa->ia.ap; in fuse_pages_realloc()
2120 struct fuse_writepage_args *wpa = data->wpa; in fuse_writepages_send() local
2123 int num_pages = wpa->ia.ap.num_pages; in fuse_writepages_send()
2126 wpa->ia.ff = fuse_file_get(data->ff); in fuse_writepages_send()
2128 list_add_tail(&wpa->queue_entry, &fi->queued_writes); in fuse_writepages_send()
2230 struct fuse_writepage_args *wpa = data->wpa; in fuse_writepages_fill() local
2231 struct fuse_args_pages *ap = &wpa->ia.ap; in fuse_writepages_fill()
2245 if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) { in fuse_writepages_fill()
2247 data->wpa = NULL; in fuse_writepages_fill()
2268 if (data->wpa == NULL) { in fuse_writepages_fill()
2270 wpa = fuse_writepage_args_alloc(); in fuse_writepages_fill()
2271 if (!wpa) { in fuse_writepages_fill()
2275 fuse_writepage_add_to_bucket(fc, wpa); in fuse_writepages_fill()
2279 ap = &wpa->ia.ap; in fuse_writepages_fill()
2280 fuse_write_args_fill(&wpa->ia, data->ff, folio_pos(folio), 0); in fuse_writepages_fill()
2281 wpa->ia.write.in.write_flags |= FUSE_WRITE_CACHE; in fuse_writepages_fill()
2282 wpa->next = NULL; in fuse_writepages_fill()
2286 wpa->inode = inode; in fuse_writepages_fill()
2300 if (data->wpa) { in fuse_writepages_fill()
2308 } else if (fuse_writepage_add(wpa, &folio->page)) { in fuse_writepages_fill()
2309 data->wpa = wpa; in fuse_writepages_fill()
2336 data.wpa = NULL; in fuse_writepages()
2347 if (data.wpa) { in fuse_writepages()
2348 WARN_ON(!data.wpa->ia.ap.num_pages); in fuse_writepages()