Lines Matching refs:req
39 static void nfs_redirty_request(struct nfs_page *req);
111 struct nfs_page *req = NULL; in nfs_page_find_request_locked() local
114 req = (struct nfs_page *)page_private(page); in nfs_page_find_request_locked()
115 if (req != NULL) in nfs_page_find_request_locked()
116 kref_get(&req->wb_kref); in nfs_page_find_request_locked()
118 return req; in nfs_page_find_request_locked()
124 struct nfs_page *req = NULL; in nfs_page_find_request() local
127 req = nfs_page_find_request_locked(page); in nfs_page_find_request()
129 return req; in nfs_page_find_request()
226 struct nfs_page *req; in nfs_page_async_flush() local
231 req = nfs_page_find_request_locked(page); in nfs_page_async_flush()
232 if (req == NULL) { in nfs_page_async_flush()
236 if (nfs_set_page_tag_locked(req)) in nfs_page_async_flush()
244 ret = nfs_wait_on_request(req); in nfs_page_async_flush()
245 nfs_release_request(req); in nfs_page_async_flush()
250 if (test_bit(PG_CLEAN, &req->wb_flags)) { in nfs_page_async_flush()
259 if (!nfs_pageio_add_request(pgio, req)) { in nfs_page_async_flush()
260 nfs_redirty_request(req); in nfs_page_async_flush()
334 static int nfs_inode_add_request(struct inode *inode, struct nfs_page *req) in nfs_inode_add_request() argument
344 nfs_lock_request_dontget(req); in nfs_inode_add_request()
347 error = radix_tree_insert(&nfsi->nfs_page_tree, req->wb_index, req); in nfs_inode_add_request()
354 SetPagePrivate(req->wb_page); in nfs_inode_add_request()
355 set_page_private(req->wb_page, (unsigned long)req); in nfs_inode_add_request()
357 kref_get(&req->wb_kref); in nfs_inode_add_request()
358 radix_tree_tag_set(&nfsi->nfs_page_tree, req->wb_index, in nfs_inode_add_request()
369 static void nfs_inode_remove_request(struct nfs_page *req) in nfs_inode_remove_request() argument
371 struct inode *inode = req->wb_context->path.dentry->d_inode; in nfs_inode_remove_request()
374 BUG_ON (!NFS_WBACK_BUSY(req)); in nfs_inode_remove_request()
377 set_page_private(req->wb_page, 0); in nfs_inode_remove_request()
378 ClearPagePrivate(req->wb_page); in nfs_inode_remove_request()
379 radix_tree_delete(&nfsi->nfs_page_tree, req->wb_index); in nfs_inode_remove_request()
386 nfs_clear_request(req); in nfs_inode_remove_request()
387 nfs_release_request(req); in nfs_inode_remove_request()
391 nfs_mark_request_dirty(struct nfs_page *req) in nfs_mark_request_dirty() argument
393 __set_page_dirty_nobuffers(req->wb_page); in nfs_mark_request_dirty()
401 nfs_mark_request_commit(struct nfs_page *req) in nfs_mark_request_commit() argument
403 struct inode *inode = req->wb_context->path.dentry->d_inode; in nfs_mark_request_commit()
408 set_bit(PG_CLEAN, &(req)->wb_flags); in nfs_mark_request_commit()
410 req->wb_index, in nfs_mark_request_commit()
413 inc_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); in nfs_mark_request_commit()
414 inc_bdi_stat(req->wb_page->mapping->backing_dev_info, BDI_RECLAIMABLE); in nfs_mark_request_commit()
419 nfs_clear_request_commit(struct nfs_page *req) in nfs_clear_request_commit() argument
421 struct page *page = req->wb_page; in nfs_clear_request_commit()
423 if (test_and_clear_bit(PG_CLEAN, &(req)->wb_flags)) { in nfs_clear_request_commit()
438 int nfs_reschedule_unstable_write(struct nfs_page *req) in nfs_reschedule_unstable_write() argument
440 if (test_and_clear_bit(PG_NEED_COMMIT, &req->wb_flags)) { in nfs_reschedule_unstable_write()
441 nfs_mark_request_commit(req); in nfs_reschedule_unstable_write()
444 if (test_and_clear_bit(PG_NEED_RESCHED, &req->wb_flags)) { in nfs_reschedule_unstable_write()
445 nfs_mark_request_dirty(req); in nfs_reschedule_unstable_write()
452 nfs_mark_request_commit(struct nfs_page *req) in nfs_mark_request_commit() argument
457 nfs_clear_request_commit(struct nfs_page *req) in nfs_clear_request_commit() argument
469 int nfs_reschedule_unstable_write(struct nfs_page *req) in nfs_reschedule_unstable_write() argument
483 struct nfs_page *req; in nfs_wait_on_requests_locked() local
494 …while (radix_tree_gang_lookup_tag(&nfsi->nfs_page_tree, (void **)&req, next, 1, NFS_PAGE_TAG_LOCKE… in nfs_wait_on_requests_locked()
495 if (req->wb_index > idx_end) in nfs_wait_on_requests_locked()
498 next = req->wb_index + 1; in nfs_wait_on_requests_locked()
499 BUG_ON(!NFS_WBACK_BUSY(req)); in nfs_wait_on_requests_locked()
501 kref_get(&req->wb_kref); in nfs_wait_on_requests_locked()
503 error = nfs_wait_on_request(req); in nfs_wait_on_requests_locked()
504 nfs_release_request(req); in nfs_wait_on_requests_locked()
515 struct nfs_page *req; in nfs_cancel_commit_list() local
518 req = nfs_list_entry(head->next); in nfs_cancel_commit_list()
519 nfs_list_remove_request(req); in nfs_cancel_commit_list()
520 nfs_clear_request_commit(req); in nfs_cancel_commit_list()
521 nfs_inode_remove_request(req); in nfs_cancel_commit_list()
522 nfs_unlock_request(req); in nfs_cancel_commit_list()
569 struct nfs_page *req; in nfs_try_to_update_request() local
581 req = nfs_page_find_request_locked(page); in nfs_try_to_update_request()
582 if (req == NULL) in nfs_try_to_update_request()
585 rqend = req->wb_offset + req->wb_bytes; in nfs_try_to_update_request()
593 || end < req->wb_offset) in nfs_try_to_update_request()
596 if (nfs_set_page_tag_locked(req)) in nfs_try_to_update_request()
601 error = nfs_wait_on_request(req); in nfs_try_to_update_request()
602 nfs_release_request(req); in nfs_try_to_update_request()
608 if (nfs_clear_request_commit(req)) in nfs_try_to_update_request()
610 req->wb_index, NFS_PAGE_TAG_COMMIT); in nfs_try_to_update_request()
613 if (offset < req->wb_offset) { in nfs_try_to_update_request()
614 req->wb_offset = offset; in nfs_try_to_update_request()
615 req->wb_pgbase = offset; in nfs_try_to_update_request()
618 req->wb_bytes = end - req->wb_offset; in nfs_try_to_update_request()
620 req->wb_bytes = rqend - req->wb_offset; in nfs_try_to_update_request()
623 return req; in nfs_try_to_update_request()
626 nfs_release_request(req); in nfs_try_to_update_request()
643 struct nfs_page *req; in nfs_setup_write_request() local
646 req = nfs_try_to_update_request(inode, page, offset, bytes); in nfs_setup_write_request()
647 if (req != NULL) in nfs_setup_write_request()
649 req = nfs_create_request(ctx, inode, page, offset, bytes); in nfs_setup_write_request()
650 if (IS_ERR(req)) in nfs_setup_write_request()
652 error = nfs_inode_add_request(inode, req); in nfs_setup_write_request()
654 nfs_release_request(req); in nfs_setup_write_request()
655 req = ERR_PTR(error); in nfs_setup_write_request()
658 return req; in nfs_setup_write_request()
664 struct nfs_page *req; in nfs_writepage_setup() local
666 req = nfs_setup_write_request(ctx, page, offset, count); in nfs_writepage_setup()
667 if (IS_ERR(req)) in nfs_writepage_setup()
668 return PTR_ERR(req); in nfs_writepage_setup()
671 nfs_mark_uptodate(page, req->wb_pgbase, req->wb_bytes); in nfs_writepage_setup()
672 nfs_clear_page_tag_locked(req); in nfs_writepage_setup()
679 struct nfs_page *req; in nfs_flush_incompatible() local
690 req = nfs_page_find_request(page); in nfs_flush_incompatible()
691 if (req == NULL) in nfs_flush_incompatible()
693 do_flush = req->wb_page != page || req->wb_context != ctx; in nfs_flush_incompatible()
694 nfs_release_request(req); in nfs_flush_incompatible()
756 static void nfs_writepage_release(struct nfs_page *req) in nfs_writepage_release() argument
759 if (PageError(req->wb_page) || !nfs_reschedule_unstable_write(req)) { in nfs_writepage_release()
760 nfs_end_page_writeback(req->wb_page); in nfs_writepage_release()
761 nfs_inode_remove_request(req); in nfs_writepage_release()
763 nfs_end_page_writeback(req->wb_page); in nfs_writepage_release()
764 nfs_clear_page_tag_locked(req); in nfs_writepage_release()
781 static int nfs_write_rpcsetup(struct nfs_page *req, in nfs_write_rpcsetup() argument
787 struct inode *inode = req->wb_context->path.dentry->d_inode; in nfs_write_rpcsetup()
794 .rpc_cred = req->wb_context->cred, in nfs_write_rpcsetup()
810 data->req = req; in nfs_write_rpcsetup()
811 data->inode = inode = req->wb_context->path.dentry->d_inode; in nfs_write_rpcsetup()
815 data->args.offset = req_offset(req) + offset; in nfs_write_rpcsetup()
816 data->args.pgbase = req->wb_pgbase + offset; in nfs_write_rpcsetup()
819 data->args.context = get_nfs_open_context(req->wb_context); in nfs_write_rpcsetup()
854 static void nfs_redirty_request(struct nfs_page *req) in nfs_redirty_request() argument
856 nfs_mark_request_dirty(req); in nfs_redirty_request()
857 nfs_end_page_writeback(req->wb_page); in nfs_redirty_request()
858 nfs_clear_page_tag_locked(req); in nfs_redirty_request()
867 struct nfs_page *req = nfs_list_entry(head->next); in nfs_flush_multi() local
868 struct page *page = req->wb_page; in nfs_flush_multi()
876 nfs_list_remove_request(req); in nfs_flush_multi()
889 atomic_set(&req->wb_complete, requests); in nfs_flush_multi()
904 ret2 = nfs_write_rpcsetup(req, data, &nfs_write_partial_ops, in nfs_flush_multi()
920 nfs_redirty_request(req); in nfs_flush_multi()
934 struct nfs_page *req; in nfs_flush_one() local
944 req = nfs_list_entry(head->next); in nfs_flush_one()
945 nfs_list_remove_request(req); in nfs_flush_one()
946 nfs_list_add_request(req, &data->pages); in nfs_flush_one()
947 ClearPageError(req->wb_page); in nfs_flush_one()
948 *pages++ = req->wb_page; in nfs_flush_one()
950 req = nfs_list_entry(data->pages.next); in nfs_flush_one()
953 return nfs_write_rpcsetup(req, data, &nfs_write_full_ops, count, 0, how); in nfs_flush_one()
956 req = nfs_list_entry(head->next); in nfs_flush_one()
957 nfs_list_remove_request(req); in nfs_flush_one()
958 nfs_redirty_request(req); in nfs_flush_one()
983 data->req->wb_context->path.dentry->d_inode->i_sb->s_id, in nfs_writeback_done_partial()
985 NFS_FILEID(data->req->wb_context->path.dentry->d_inode), in nfs_writeback_done_partial()
986 data->req->wb_bytes, (long long)req_offset(data->req)); in nfs_writeback_done_partial()
994 struct nfs_page *req = data->req; in nfs_writeback_release_partial() local
995 struct page *page = req->wb_page; in nfs_writeback_release_partial()
1000 nfs_context_set_write_error(req->wb_context, status); in nfs_writeback_release_partial()
1009 if (test_bit(PG_NEED_RESCHED, &req->wb_flags)) { in nfs_writeback_release_partial()
1011 } else if (!test_and_set_bit(PG_NEED_COMMIT, &req->wb_flags)) { in nfs_writeback_release_partial()
1012 memcpy(&req->wb_verf, &data->verf, sizeof(req->wb_verf)); in nfs_writeback_release_partial()
1014 } else if (memcmp(&req->wb_verf, &data->verf, sizeof(req->wb_verf))) { in nfs_writeback_release_partial()
1015 set_bit(PG_NEED_RESCHED, &req->wb_flags); in nfs_writeback_release_partial()
1016 clear_bit(PG_NEED_COMMIT, &req->wb_flags); in nfs_writeback_release_partial()
1024 if (atomic_dec_and_test(&req->wb_complete)) in nfs_writeback_release_partial()
1025 nfs_writepage_release(req); in nfs_writeback_release_partial()
1055 struct nfs_page *req = nfs_list_entry(data->pages.next); in nfs_writeback_release_full() local
1056 struct page *page = req->wb_page; in nfs_writeback_release_full()
1058 nfs_list_remove_request(req); in nfs_writeback_release_full()
1062 req->wb_context->path.dentry->d_inode->i_sb->s_id, in nfs_writeback_release_full()
1063 (long long)NFS_FILEID(req->wb_context->path.dentry->d_inode), in nfs_writeback_release_full()
1064 req->wb_bytes, in nfs_writeback_release_full()
1065 (long long)req_offset(req)); in nfs_writeback_release_full()
1069 nfs_context_set_write_error(req->wb_context, status); in nfs_writeback_release_full()
1075 memcpy(&req->wb_verf, &data->verf, sizeof(req->wb_verf)); in nfs_writeback_release_full()
1076 nfs_mark_request_commit(req); in nfs_writeback_release_full()
1084 nfs_inode_remove_request(req); in nfs_writeback_release_full()
1086 nfs_clear_page_tag_locked(req); in nfs_writeback_release_full()
1252 struct nfs_page *req; in nfs_commit_list() local
1263 req = nfs_list_entry(head->next); in nfs_commit_list()
1264 nfs_list_remove_request(req); in nfs_commit_list()
1265 nfs_mark_request_commit(req); in nfs_commit_list()
1266 dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS); in nfs_commit_list()
1267 dec_bdi_stat(req->wb_page->mapping->backing_dev_info, in nfs_commit_list()
1269 nfs_clear_page_tag_locked(req); in nfs_commit_list()
1292 struct nfs_page *req; in nfs_commit_release() local
1296 req = nfs_list_entry(data->pages.next); in nfs_commit_release()
1297 nfs_list_remove_request(req); in nfs_commit_release()
1298 nfs_clear_request_commit(req); in nfs_commit_release()
1301 req->wb_context->path.dentry->d_inode->i_sb->s_id, in nfs_commit_release()
1302 (long long)NFS_FILEID(req->wb_context->path.dentry->d_inode), in nfs_commit_release()
1303 req->wb_bytes, in nfs_commit_release()
1304 (long long)req_offset(req)); in nfs_commit_release()
1306 nfs_context_set_write_error(req->wb_context, status); in nfs_commit_release()
1307 nfs_inode_remove_request(req); in nfs_commit_release()
1314 if (!memcmp(req->wb_verf.verifier, data->verf.verifier, sizeof(data->verf.verifier))) { in nfs_commit_release()
1316 nfs_inode_remove_request(req); in nfs_commit_release()
1322 nfs_mark_request_dirty(req); in nfs_commit_release()
1324 nfs_clear_page_tag_locked(req); in nfs_commit_release()
1458 struct nfs_page *req; in nfs_wb_page_cancel() local
1472 req = nfs_page_find_request(page); in nfs_wb_page_cancel()
1473 if (req == NULL) in nfs_wb_page_cancel()
1475 if (test_bit(PG_CLEAN, &req->wb_flags)) { in nfs_wb_page_cancel()
1476 nfs_release_request(req); in nfs_wb_page_cancel()
1479 if (nfs_lock_request_dontget(req)) { in nfs_wb_page_cancel()
1480 nfs_inode_remove_request(req); in nfs_wb_page_cancel()
1486 nfs_unlock_request(req); in nfs_wb_page_cancel()
1489 ret = nfs_wait_on_request(req); in nfs_wb_page_cancel()