Loading fs/nfs/write.c +3 −26 Original line number Diff line number Diff line Loading @@ -347,22 +347,6 @@ static void nfs_end_page_writeback(struct nfs_page *req) clear_bdi_congested(inode_to_bdi(inode), BLK_RW_ASYNC); } /* nfs_page_group_clear_bits * @req - an nfs request * clears all page group related bits from @req */ static void nfs_page_group_clear_bits(struct nfs_page *req) { clear_bit(PG_TEARDOWN, &req->wb_flags); clear_bit(PG_UNLOCKPAGE, &req->wb_flags); clear_bit(PG_UPTODATE, &req->wb_flags); clear_bit(PG_WB_END, &req->wb_flags); clear_bit(PG_REMOVE, &req->wb_flags); } /* * nfs_unroll_locks_and_wait - unlock all newly locked reqs and wait on @req * Loading Loading @@ -417,13 +401,12 @@ nfs_destroy_unlinked_subrequests(struct nfs_page *destroy_list, /* make sure old group is not used */ subreq->wb_this_page = subreq; clear_bit(PG_REMOVE, &subreq->wb_flags); /* Note: races with nfs_page_group_destroy() */ if (!kref_read(&subreq->wb_kref)) { bool freeme = test_bit(PG_TEARDOWN, &subreq->wb_flags); nfs_page_group_clear_bits(subreq); /* Check if we raced with nfs_page_group_destroy() */ if (freeme) if (test_and_clear_bit(PG_TEARDOWN, &subreq->wb_flags)) nfs_free_request(subreq); continue; } Loading @@ -437,7 +420,6 @@ nfs_destroy_unlinked_subrequests(struct nfs_page *destroy_list, spin_unlock(&inode->i_lock); } nfs_page_group_clear_bits(subreq); /* subreq is now totally disconnected from page group or any * write / commit lists. last chance to wake any waiters */ nfs_unlock_and_release_request(subreq); Loading Loading @@ -573,11 +555,6 @@ nfs_lock_and_join_requests(struct page *page) spin_unlock(&inode->i_lock); } /* * prepare head request to be added to new pgio descriptor */ nfs_page_group_clear_bits(head); nfs_page_group_unlock(head); nfs_destroy_unlinked_subrequests(destroy_list, head, inode); Loading Loading
fs/nfs/write.c +3 −26 Original line number Diff line number Diff line Loading @@ -347,22 +347,6 @@ static void nfs_end_page_writeback(struct nfs_page *req) clear_bdi_congested(inode_to_bdi(inode), BLK_RW_ASYNC); } /* nfs_page_group_clear_bits * @req - an nfs request * clears all page group related bits from @req */ static void nfs_page_group_clear_bits(struct nfs_page *req) { clear_bit(PG_TEARDOWN, &req->wb_flags); clear_bit(PG_UNLOCKPAGE, &req->wb_flags); clear_bit(PG_UPTODATE, &req->wb_flags); clear_bit(PG_WB_END, &req->wb_flags); clear_bit(PG_REMOVE, &req->wb_flags); } /* * nfs_unroll_locks_and_wait - unlock all newly locked reqs and wait on @req * Loading Loading @@ -417,13 +401,12 @@ nfs_destroy_unlinked_subrequests(struct nfs_page *destroy_list, /* make sure old group is not used */ subreq->wb_this_page = subreq; clear_bit(PG_REMOVE, &subreq->wb_flags); /* Note: races with nfs_page_group_destroy() */ if (!kref_read(&subreq->wb_kref)) { bool freeme = test_bit(PG_TEARDOWN, &subreq->wb_flags); nfs_page_group_clear_bits(subreq); /* Check if we raced with nfs_page_group_destroy() */ if (freeme) if (test_and_clear_bit(PG_TEARDOWN, &subreq->wb_flags)) nfs_free_request(subreq); continue; } Loading @@ -437,7 +420,6 @@ nfs_destroy_unlinked_subrequests(struct nfs_page *destroy_list, spin_unlock(&inode->i_lock); } nfs_page_group_clear_bits(subreq); /* subreq is now totally disconnected from page group or any * write / commit lists. last chance to wake any waiters */ nfs_unlock_and_release_request(subreq); Loading Loading @@ -573,11 +555,6 @@ nfs_lock_and_join_requests(struct page *page) spin_unlock(&inode->i_lock); } /* * prepare head request to be added to new pgio descriptor */ nfs_page_group_clear_bits(head); nfs_page_group_unlock(head); nfs_destroy_unlinked_subrequests(destroy_list, head, inode); Loading