Lines Matching refs:wpa
413 struct fuse_writepage_args *wpa;
416 wpa = rb_entry(n, struct fuse_writepage_args, writepages_entry);
417 WARN_ON(get_fuse_inode(wpa->inode) != fi);
418 curr_index = wpa->ia.write.in.offset >> PAGE_SHIFT;
419 if (idx_from >= curr_index + wpa->ia.ap.num_pages)
424 return wpa;
1657 static void fuse_writepage_free(struct fuse_writepage_args *wpa)
1659 struct fuse_args_pages *ap = &wpa->ia.ap;
1662 if (wpa->bucket)
1663 fuse_sync_bucket_dec(wpa->bucket);
1668 if (wpa->ia.ff)
1669 fuse_file_put(wpa->ia.ff, false, false);
1672 kfree(wpa);
1676 struct fuse_writepage_args *wpa)
1678 struct fuse_args_pages *ap = &wpa->ia.ap;
1679 struct inode *inode = wpa->inode;
1694 struct fuse_writepage_args *wpa, loff_t size)
1699 struct fuse_inode *fi = get_fuse_inode(wpa->inode);
1700 struct fuse_write_in *inarg = &wpa->ia.write.in;
1701 struct fuse_args *args = &wpa->ia.ap.args;
1702 __u64 data_size = wpa->ia.ap.num_pages * PAGE_SIZE;
1734 rb_erase(&wpa->writepages_entry, &fi->writepages);
1735 fuse_writepage_finish(fm, wpa);
1739 for (aux = wpa->next; aux; aux = next) {
1745 fuse_writepage_free(wpa);
1762 struct fuse_writepage_args *wpa;
1765 wpa = list_entry(fi->queued_writes.next,
1767 list_del_init(&wpa->queue_entry);
1768 fuse_send_writepage(fm, wpa, crop);
1773 struct fuse_writepage_args *wpa)
1775 pgoff_t idx_from = wpa->ia.write.in.offset >> PAGE_SHIFT;
1776 pgoff_t idx_to = idx_from + wpa->ia.ap.num_pages - 1;
1780 WARN_ON(!wpa->ia.ap.num_pages);
1788 WARN_ON(curr->inode != wpa->inode);
1799 rb_link_node(&wpa->writepages_entry, parent, p);
1800 rb_insert_color(&wpa->writepages_entry, root);
1804 static void tree_insert(struct rb_root *root, struct fuse_writepage_args *wpa)
1806 WARN_ON(fuse_insert_writeback(root, wpa));
1812 struct fuse_writepage_args *wpa =
1813 container_of(args, typeof(*wpa), ia.ap.args);
1814 struct inode *inode = wpa->inode;
1828 rb_erase(&wpa->writepages_entry, &fi->writepages);
1829 while (wpa->next) {
1831 struct fuse_write_in *inarg = &wpa->ia.write.in;
1832 struct fuse_writepage_args *next = wpa->next;
1834 wpa->next = next->next;
1836 next->ia.ff = fuse_file_get(wpa->ia.ff);
1865 fuse_writepage_finish(fm, wpa);
1867 fuse_writepage_free(wpa);
1918 struct fuse_writepage_args *wpa;
1921 wpa = kzalloc(sizeof(*wpa), GFP_NOFS);
1922 if (wpa) {
1923 ap = &wpa->ia.ap;
1927 kfree(wpa);
1928 wpa = NULL;
1931 return wpa;
1936 struct fuse_writepage_args *wpa)
1944 wpa->bucket = rcu_dereference(fc->curr_bucket);
1945 } while (unlikely(!atomic_inc_not_zero(&wpa->bucket->count)));
1955 struct fuse_writepage_args *wpa;
1962 wpa = fuse_writepage_args_alloc();
1963 if (!wpa)
1965 ap = &wpa->ia.ap;
1972 wpa->ia.ff = fuse_write_file_get(fi);
1973 if (!wpa->ia.ff)
1976 fuse_writepage_add_to_bucket(fc, wpa);
1977 fuse_write_args_fill(&wpa->ia, wpa->ia.ff, page_offset(page), 0);
1980 wpa->ia.write.in.write_flags |= FUSE_WRITE_CACHE;
1981 wpa->next = NULL;
1988 wpa->inode = inode;
1994 tree_insert(&fi->writepages, wpa);
1995 list_add_tail(&wpa->queue_entry, &fi->queued_writes);
2006 kfree(wpa);
2042 struct fuse_writepage_args *wpa;
2051 struct fuse_args_pages *ap = &data->wpa->ia.ap;
2077 struct fuse_writepage_args *wpa = data->wpa;
2080 int num_pages = wpa->ia.ap.num_pages;
2083 wpa->ia.ff = fuse_file_get(data->ff);
2085 list_add_tail(&wpa->queue_entry, &fi->queued_writes);
2187 struct fuse_writepage_args *wpa = data->wpa;
2188 struct fuse_args_pages *ap = &wpa->ia.ap;
2202 if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) {
2204 data->wpa = NULL;
2225 if (data->wpa == NULL) {
2227 wpa = fuse_writepage_args_alloc();
2228 if (!wpa) {
2232 fuse_writepage_add_to_bucket(fc, wpa);
2236 ap = &wpa->ia.ap;
2237 fuse_write_args_fill(&wpa->ia, data->ff, folio_pos(folio), 0);
2238 wpa->ia.write.in.write_flags |= FUSE_WRITE_CACHE;
2239 wpa->next = NULL;
2243 wpa->inode = inode;
2257 if (data->wpa) {
2265 } else if (fuse_writepage_add(wpa, &folio->page)) {
2266 data->wpa = wpa;
2293 data.wpa = NULL;
2304 if (data.wpa) {
2305 WARN_ON(!data.wpa->ia.ap.num_pages);