Lines Matching refs:subreq

415 		struct nfs_page *subreq = destroy_list;  in nfs_destroy_unlinked_subrequests()  local
417 destroy_list = (subreq->wb_this_page == old_head) ? in nfs_destroy_unlinked_subrequests()
418 NULL : subreq->wb_this_page; in nfs_destroy_unlinked_subrequests()
420 WARN_ON_ONCE(old_head != subreq->wb_head); in nfs_destroy_unlinked_subrequests()
423 subreq->wb_this_page = subreq; in nfs_destroy_unlinked_subrequests()
425 clear_bit(PG_REMOVE, &subreq->wb_flags); in nfs_destroy_unlinked_subrequests()
428 if (!kref_read(&subreq->wb_kref)) { in nfs_destroy_unlinked_subrequests()
430 if (test_and_clear_bit(PG_TEARDOWN, &subreq->wb_flags)) in nfs_destroy_unlinked_subrequests()
431 nfs_free_request(subreq); in nfs_destroy_unlinked_subrequests()
435 subreq->wb_head = subreq; in nfs_destroy_unlinked_subrequests()
437 if (test_and_clear_bit(PG_INODE_REF, &subreq->wb_flags)) { in nfs_destroy_unlinked_subrequests()
438 nfs_release_request(subreq); in nfs_destroy_unlinked_subrequests()
444 nfs_unlock_and_release_request(subreq); in nfs_destroy_unlinked_subrequests()
470 struct nfs_page *head, *subreq; in nfs_lock_and_join_requests() local
506 for (subreq = head->wb_this_page; subreq != head; in nfs_lock_and_join_requests()
507 subreq = subreq->wb_this_page) { in nfs_lock_and_join_requests()
509 if (!kref_get_unless_zero(&subreq->wb_kref)) { in nfs_lock_and_join_requests()
510 if (subreq->wb_offset == head->wb_offset + total_bytes) in nfs_lock_and_join_requests()
511 total_bytes += subreq->wb_bytes; in nfs_lock_and_join_requests()
515 while (!nfs_lock_request(subreq)) { in nfs_lock_and_join_requests()
521 ret = nfs_wait_on_request(subreq); in nfs_lock_and_join_requests()
525 nfs_unroll_locks(inode, head, subreq); in nfs_lock_and_join_requests()
526 nfs_release_request(subreq); in nfs_lock_and_join_requests()
534 if (subreq->wb_offset == (head->wb_offset + total_bytes)) { in nfs_lock_and_join_requests()
536 total_bytes += subreq->wb_bytes; in nfs_lock_and_join_requests()
537 } else if (WARN_ON_ONCE(subreq->wb_offset < head->wb_offset || in nfs_lock_and_join_requests()
538 ((subreq->wb_offset + subreq->wb_bytes) > in nfs_lock_and_join_requests()
541 nfs_unroll_locks(inode, head, subreq); in nfs_lock_and_join_requests()
542 nfs_unlock_and_release_request(subreq); in nfs_lock_and_join_requests()
550 subreq = head; in nfs_lock_and_join_requests()
552 nfs_clear_request_commit(subreq); in nfs_lock_and_join_requests()
553 subreq = subreq->wb_this_page; in nfs_lock_and_join_requests()
554 } while (subreq != head); in nfs_lock_and_join_requests()