Lines Matching refs:subreq

406 		struct nfs_page *subreq = destroy_list;  in nfs_destroy_unlinked_subrequests()  local
408 destroy_list = (subreq->wb_this_page == old_head) ? in nfs_destroy_unlinked_subrequests()
409 NULL : subreq->wb_this_page; in nfs_destroy_unlinked_subrequests()
411 WARN_ON_ONCE(old_head != subreq->wb_head); in nfs_destroy_unlinked_subrequests()
414 subreq->wb_this_page = subreq; in nfs_destroy_unlinked_subrequests()
416 clear_bit(PG_REMOVE, &subreq->wb_flags); in nfs_destroy_unlinked_subrequests()
419 if (!kref_read(&subreq->wb_kref)) { in nfs_destroy_unlinked_subrequests()
421 if (test_and_clear_bit(PG_TEARDOWN, &subreq->wb_flags)) in nfs_destroy_unlinked_subrequests()
422 nfs_free_request(subreq); in nfs_destroy_unlinked_subrequests()
426 subreq->wb_head = subreq; in nfs_destroy_unlinked_subrequests()
428 if (test_and_clear_bit(PG_INODE_REF, &subreq->wb_flags)) { in nfs_destroy_unlinked_subrequests()
429 nfs_release_request(subreq); in nfs_destroy_unlinked_subrequests()
435 nfs_unlock_and_release_request(subreq); in nfs_destroy_unlinked_subrequests()
461 struct nfs_page *head, *subreq; in nfs_lock_and_join_requests() local
497 for (subreq = head->wb_this_page; subreq != head; in nfs_lock_and_join_requests()
498 subreq = subreq->wb_this_page) { in nfs_lock_and_join_requests()
500 if (!kref_get_unless_zero(&subreq->wb_kref)) { in nfs_lock_and_join_requests()
501 if (subreq->wb_offset == head->wb_offset + total_bytes) in nfs_lock_and_join_requests()
502 total_bytes += subreq->wb_bytes; in nfs_lock_and_join_requests()
506 while (!nfs_lock_request(subreq)) { in nfs_lock_and_join_requests()
512 ret = nfs_wait_on_request(subreq); in nfs_lock_and_join_requests()
516 nfs_unroll_locks(inode, head, subreq); in nfs_lock_and_join_requests()
517 nfs_release_request(subreq); in nfs_lock_and_join_requests()
525 if (subreq->wb_offset == (head->wb_offset + total_bytes)) { in nfs_lock_and_join_requests()
527 total_bytes += subreq->wb_bytes; in nfs_lock_and_join_requests()
528 } else if (WARN_ON_ONCE(subreq->wb_offset < head->wb_offset || in nfs_lock_and_join_requests()
529 ((subreq->wb_offset + subreq->wb_bytes) > in nfs_lock_and_join_requests()
532 nfs_unroll_locks(inode, head, subreq); in nfs_lock_and_join_requests()
533 nfs_unlock_and_release_request(subreq); in nfs_lock_and_join_requests()
541 subreq = head; in nfs_lock_and_join_requests()
543 nfs_clear_request_commit(subreq); in nfs_lock_and_join_requests()
544 subreq = subreq->wb_this_page; in nfs_lock_and_join_requests()
545 } while (subreq != head); in nfs_lock_and_join_requests()