From nobody Fri May 30 21:09:21 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4b8G830GHwz5wvdZ; Fri, 30 May 2025 21:09:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4b8G824mDxz439Y; Fri, 30 May 2025 21:09:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748639362; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iAG4uhb9myjcGxvY7dMbOS9ytPQ6wqaNZcyvuKEtd+s=; b=AV3yhMJR6zztGQ36er7La1n8cnkUKD2T3vqP0sTWy4EUe8cV/BxDkD8bquwI4z0wQRU9KQ QaQU8SK4dKogW7jU1Xq/1lBIbWinLXpLLNtBxEgwVI/yZhU7HxBXRVJFd/K+WKkLGUTCTl 4MYWSnSYVq0tkdocQBvdaJGHY8Ss68mImt2HnZR0zglGI6uT8/w78az8GApk2eOf2jY7+v Sa3D2mwzyhAwtDzH/qqLDlK/wnmtrV9zg7WBeKQtQ40hrTdoc6NtVS7mLbPbwIG4/Xs+aJ vsTKzpaFTzuE/9cw9mV/NKJ7bP5P5sIvy6d0PgZAAzSjV7ZYbft4tex1eU7cEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1748639362; a=rsa-sha256; cv=none; b=coibSq1vIHhkFL7B2RzKya9a+sukfTj3pDvxioJPT37aShjm0mbI5opdnZY+kuZcK0xtPJ 5oRZ8ueNd3tnPRrkXrxxMq3Tk/vWPS52BSdY0yQK/5y2QdBx1wIaitjpjqe4a9pMbj/StR JUi7dPsERofZY49jQ8ZROnQ4hqG/gbhssJx/abnlnz/VbhQMLVLxsTm4k99k1uB40Ck8Zd 7HUxO0xFncjo8AFVUeIoVz8ZKHX2aK/y5K8/JJFzlKMczHFxLJq5/IIrahvs+Hu3syNYXR g9SiLK9qqM0/03O61q3lbV8KaBFCY0r+NeH+WIroT5MIbF2o46qHuP17B/dlPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748639362; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=iAG4uhb9myjcGxvY7dMbOS9ytPQ6wqaNZcyvuKEtd+s=; b=rOmk+bxzgEItG3NOIKiadWPoc84Eq1B78GZycpUYs0WDagYqP9Z8N+3SZNwW4DGfr12u89 xXgPqEQeTWzmQi/hlhzCoKo2/oVf+XsqmLfWyA6Uw4K4H2MrcoIdOaX2zmwJLByxNo8YDJ uvHOwIoZ8rFAk5+WJJL35CosDFVDLyoYUaJO/E5lg1NT24UPqS4A5gmSaerdBvwLhWBYX1 WkelSxamwXuGiFMOdZVhGKYCD+zTACMJGEzb9JAMx2uMY+BBZY4BH9zO40B6a/U/knCHUr wz92e/1PRsXFmWM+sQVG1sB3CK9wJQdUV32i7/lRIyUhwcg7raUxW92hL6dlJA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4b8G815JfXz16ML; Fri, 30 May 2025 21:09:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 54UL9LWc062141; Fri, 30 May 2025 21:09:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54UL9LMO062137; Fri, 30 May 2025 21:09:21 GMT (envelope-from git) Date: Fri, 30 May 2025 21:09:21 GMT Message-Id: <202505302109.54UL9LMO062137@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: f2a193a967e3 - main - vm_pageout: reduce number of flush() params List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f2a193a967e3457e9fb5acb918106a71853b4249 Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=f2a193a967e3457e9fb5acb918106a71853b4249 commit f2a193a967e3457e9fb5acb918106a71853b4249 Author: Doug Moore AuthorDate: 2025-05-30 21:07:39 +0000 Commit: Doug Moore CommitDate: 2025-05-30 21:07:39 +0000 vm_pageout: reduce number of flush() params vm_pageout_flush is called in two places, and in both, the mreq parameter is 0. Drop that parameter, and simplify the calculations that use it. The prunlen and eio parameters are either both NULL, or neither NULL. Drop the prunlen parameter and, when eio is NULL, return the runlen value instead of the numpagedout parameter, which the caller ignores. Change a param from boolean_t* to bool*. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D50568 --- sys/vm/vm_object.c | 8 ++++---- sys/vm/vm_pageout.c | 30 ++++++++++++++---------------- sys/vm/vm_pageout.h | 2 +- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 1d372ba04488..0e429b58aa1c 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1000,7 +1000,7 @@ vm_object_page_remove_write(vm_page_t p, int flags, boolean_t *allclean) static int vm_object_page_clean_flush(struct pctrie_iter *pages, vm_page_t p, - int pagerflags, int flags, boolean_t *allclean, boolean_t *eio) + int pagerflags, int flags, boolean_t *allclean, bool *eio) { vm_page_t ma[vm_pageout_page_count]; int count, runlen; @@ -1020,8 +1020,7 @@ vm_object_page_clean_flush(struct pctrie_iter *pages, vm_page_t p, } } - vm_pageout_flush(ma, count, pagerflags, 0, &runlen, eio); - return (runlen); + return (vm_pageout_flush(ma, count, pagerflags, eio)); } /* @@ -1054,7 +1053,8 @@ vm_object_page_clean(vm_object_t object, vm_ooffset_t start, vm_ooffset_t end, vm_page_t np, p; vm_pindex_t pi, tend, tstart; int curgeneration, n, pagerflags; - boolean_t eio, res, allclean; + boolean_t res, allclean; + bool eio; VM_OBJECT_ASSERT_WLOCKED(object); diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 704f1046d727..624184d57442 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -438,7 +438,7 @@ vm_pageout_cluster(vm_page_t m) } return (vm_pageout_flush(&mc[page_base], pageout_count, - VM_PAGER_PUT_NOREUSE, 0, NULL, NULL)); + VM_PAGER_PUT_NOREUSE, NULL)); } /* @@ -450,19 +450,19 @@ vm_pageout_cluster(vm_page_t m) * the parent to do more sophisticated things we may have to change * the ordering. * - * Returned runlen is the count of pages between mreq and first - * page after mreq with status VM_PAGER_AGAIN. - * *eio is set to TRUE if pager returned VM_PAGER_ERROR or VM_PAGER_FAIL - * for any page in runlen set. + * If eio is not NULL, returns the count of pages between 0 and first page + * with status VM_PAGER_AGAIN. *eio is set to true if pager returned + * VM_PAGER_ERROR or VM_PAGER_FAIL for any page in that set. + * + * Otherwise, returns the number of paged-out pages. */ int -vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen, - boolean_t *eio) +vm_pageout_flush(vm_page_t *mc, int count, int flags, bool *eio) { vm_object_t object = mc[0]->object; int pageout_status[count]; int numpagedout = 0; - int i, runlen; + int i; VM_OBJECT_ASSERT_WLOCKED(object); @@ -488,9 +488,8 @@ vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen, vm_pager_put_pages(object, mc, count, flags, pageout_status); - runlen = count - mreq; if (eio != NULL) - *eio = FALSE; + *eio = false; for (i = 0; i < count; i++) { vm_page_t mt = mc[i]; @@ -540,12 +539,11 @@ vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen, numpagedout++; } else vm_page_activate(mt); - if (eio != NULL && i >= mreq && i - mreq < runlen) - *eio = TRUE; + if (eio != NULL) + *eio = true; break; case VM_PAGER_AGAIN: - if (i >= mreq && i - mreq < runlen) - runlen = i - mreq; + count = i; break; } @@ -560,8 +558,8 @@ vm_pageout_flush(vm_page_t *mc, int count, int flags, int mreq, int *prunlen, vm_page_sunbusy(mt); } } - if (prunlen != NULL) - *prunlen = runlen; + if (eio != NULL) + return (count); return (numpagedout); } diff --git a/sys/vm/vm_pageout.h b/sys/vm/vm_pageout.h index a6cdfafe743b..5cfb6e5ca198 100644 --- a/sys/vm/vm_pageout.h +++ b/sys/vm/vm_pageout.h @@ -100,7 +100,7 @@ void vm_wait_domain(int domain); void vm_wait_min(void); void vm_wait_severe(void); -int vm_pageout_flush(vm_page_t *, int, int, int, int *, boolean_t *); +int vm_pageout_flush(vm_page_t *mc, int count, int flags, bool *eio); void vm_pageout_oom(int shortage); #endif /* _KERNEL */