From nobody Thu Dec 4 16:44:52 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 4dMgN43CrZz6Jc2Z for ; Thu, 04 Dec 2025 16:44:52 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dMgN4215wz3MkZ for ; Thu, 04 Dec 2025 16:44:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764866692; 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=omHjsj2VI0L/Nr1Hkb8nNPGgIbzhMhaMRlg552WOJ3k=; b=UqnpJRQooU+WNnIPurluBnbpV4DG+2nupxiv6zgiHbxOeRC3cO8JZZ3Ubwtc93Gqg/pO8e jkhdw695248W6w4590SBtIkEwOvLc+KnslKtuwEngeD0D5uByrBtt8OCmdsfXy/YQ+nE8p EqHmb/+cI+Y5zGGY4JPM9ovnX2MX5z60iMJ6wvuj2bsjc9RaqyGAWHq0Qoqa5nj0EFtBpT h+VrPXI7t1rl4r/LWAVVqb427DgTZbPOEQ6n3SsQ6znpBDK+d1Uw23phBF+1GtRIIKa6iO iUAylWBWxOx0iXL8Le6dxGpgVHDB/BZqkwwcUpfnNEqaBYmsIt7m7LYQgUbWyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764866692; 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=omHjsj2VI0L/Nr1Hkb8nNPGgIbzhMhaMRlg552WOJ3k=; b=W621sHPEnpvoQufMZIiH/7y1LR9rqqN2nYtDZKyPRa7sMWfaSqZZAOeDRYX/wdifS8mXUo k7OlzaXl7adu/Oz4Twnb+wRM3vBkhnFsNi+Osm3StfcorwhFXSZcLoOw34gf29kH7KBFQ6 9EWyxlnrXWeXhLbtIWc6l8EmZ2DM5bskWJsUp2fmtpjbFxZ8o/QJtSyKmSX4H0Rd6t39J6 19N3cPTWq9ZJG3vpxmYcgwV+PbDh1F+gD9BG1EXgiYbrIsInjXUsHFeD+Mhim0uo0mfouu 5VbW816gSXyv+1LNM4F6QAuTeY1NFGhqJB6XTo4UO75h8XRaJp4qQCk078+CrQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764866692; a=rsa-sha256; cv=none; b=YbgLUlh5yI6ZPz3+nEHD6oRsmuiH2NPI+Ktta1yIT9+nMHYKZdNRuiqqFKJQY/M5xrKpu/ moR50qqOA861Act6ZMHF5PiOdcuJuGgSplYPgXLYgt9aUc0eKaDM4hXCFyb5vxdHBvHpt5 4eMQB8IpG27wtFZRH1hYaycyzF+d8HaptbQW1jLJgioUFW1NXHTQZYgEJXsw7RO4Z+sBYZ J7XK5RqBzj9IJpSo1nv8dwM2JUB33dMRjBxNYJaoFrkAY1yG4+vu10I7lrTanPEDCPSEgR CJdza0Ftstf4XuljocVaq4xtSdHgHUe5FSkJ6wWZReWnTMtbmMHu+gn+gQSWxQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4dMgN41P5JzY6x for ; Thu, 04 Dec 2025 16:44:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a188 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 04 Dec 2025 16:44:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 575efcfff22f - main - sendfile: remove SF_SYNC in FreeBSD 16.0 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: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 575efcfff22f5d75fc3ac6201f11e5eae46ec9ce Auto-Submitted: auto-generated Date: Thu, 04 Dec 2025 16:44:52 +0000 Message-Id: <6931ba84.3a188.2d5227ac@gitrepo.freebsd.org> The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=575efcfff22f5d75fc3ac6201f11e5eae46ec9ce commit 575efcfff22f5d75fc3ac6201f11e5eae46ec9ce Author: Gleb Smirnoff AuthorDate: 2025-12-04 16:37:10 +0000 Commit: Gleb Smirnoff CommitDate: 2025-12-04 16:44:21 +0000 sendfile: remove SF_SYNC in FreeBSD 16.0 See d17cbe46983c for details. PR: 287348 --- sys/kern/kern_sendfile.c | 88 ------------------------------------------------ sys/sys/socket.h | 2 +- 2 files changed, 1 insertion(+), 89 deletions(-) diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c index 8438298afc0e..7ffb09c58b9c 100644 --- a/sys/kern/kern_sendfile.c +++ b/sys/kern/kern_sendfile.c @@ -68,7 +68,6 @@ static MALLOC_DEFINE(M_SENDFILE, "sendfile", "sendfile dynamic memory"); -#define EXT_FLAG_SYNC EXT_FLAG_VENDOR1 #define EXT_FLAG_NOCACHE EXT_FLAG_VENDOR2 #define EXT_FLAG_CACHE_LAST EXT_FLAG_VENDOR3 @@ -100,43 +99,6 @@ struct sf_io { vm_page_t pa[]; }; -/* - * Structure used to track requests with SF_SYNC flag. - */ -struct sendfile_sync { - struct mtx mtx; - struct cv cv; - unsigned count; - bool waiting; -}; - -static void -sendfile_sync_destroy(struct sendfile_sync *sfs) -{ - KASSERT(sfs->count == 0, ("sendfile sync %p still busy", sfs)); - - cv_destroy(&sfs->cv); - mtx_destroy(&sfs->mtx); - free(sfs, M_SENDFILE); -} - -static void -sendfile_sync_signal(struct sendfile_sync *sfs) -{ - mtx_lock(&sfs->mtx); - KASSERT(sfs->count > 0, ("sendfile sync %p not busy", sfs)); - if (--sfs->count == 0) { - if (!sfs->waiting) { - /* The sendfile() waiter was interrupted by a signal. */ - sendfile_sync_destroy(sfs); - return; - } else { - cv_signal(&sfs->cv); - } - } - mtx_unlock(&sfs->mtx); -} - counter_u64_t sfstat[sizeof(struct sfstat) / sizeof(uint64_t)]; static void @@ -179,11 +141,6 @@ sendfile_free_mext(struct mbuf *m) sf_buf_free(sf); vm_page_release(pg, flags); - - if (m->m_ext.ext_flags & EXT_FLAG_SYNC) { - struct sendfile_sync *sfs = m->m_ext.ext_arg2; - sendfile_sync_signal(sfs); - } } static void @@ -204,11 +161,6 @@ sendfile_free_mext_pg(struct mbuf *m) pg = PHYS_TO_VM_PAGE(m->m_epg_pa[i]); vm_page_release(pg, flags); } - - if (m->m_ext.ext_flags & EXT_FLAG_SYNC) { - struct sendfile_sync *sfs = m->m_ext.ext_arg1; - sendfile_sync_signal(sfs); - } } /* @@ -763,7 +715,6 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, struct mbuf *m, *mh, *mhtail; struct sf_buf *sf; struct shmfd *shmfd; - struct sendfile_sync *sfs; struct vattr va; off_t off, sbytes, rem, obj_size, nobj_size; int bsize, error, ext_pgs_idx, hdrlen, max_pgs, softerr; @@ -775,7 +726,6 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, obj = NULL; so = NULL; m = mh = NULL; - sfs = NULL; #ifdef KERN_TLS tls = NULL; #endif @@ -801,17 +751,6 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, SFSTAT_INC(sf_syscalls); SFSTAT_ADD(sf_rhpages_requested, SF_READAHEAD(flags)); - if (__predict_false(flags & SF_SYNC)) { - gone_in(16, "Warning! %s[%u] uses SF_SYNC sendfile(2) flag. " - "Please follow up to https://bugs.freebsd.org/" - "bugzilla/show_bug.cgi?id=287348. ", - td->td_proc->p_comm, td->td_proc->p_pid); - sfs = malloc(sizeof(*sfs), M_SENDFILE, M_WAITOK | M_ZERO); - mtx_init(&sfs->mtx, "sendfile", NULL, MTX_DEF); - cv_init(&sfs->cv, "sendfile"); - sfs->waiting = true; - } - rem = nbytes ? omin(nbytes, obj_size - offset) : obj_size - offset; /* @@ -1042,14 +981,6 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, m0->m_ext.ext_flags |= EXT_FLAG_CACHE_LAST; } - if (sfs != NULL) { - m0->m_ext.ext_flags |= - EXT_FLAG_SYNC; - m0->m_ext.ext_arg1 = sfs; - mtx_lock(&sfs->mtx); - sfs->count++; - mtx_unlock(&sfs->mtx); - } ext_pgs_idx = 0; /* Append to mbuf chain. */ @@ -1120,13 +1051,6 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, !((off + space) & PAGE_MASK) || !(rem > space || rhpages > 0))) m0->m_ext.ext_flags |= EXT_FLAG_NOCACHE; - if (sfs != NULL) { - m0->m_ext.ext_flags |= EXT_FLAG_SYNC; - m0->m_ext.ext_arg2 = sfs; - mtx_lock(&sfs->mtx); - sfs->count++; - mtx_unlock(&sfs->mtx); - } m0->m_ext.ext_count = 1; m0->m_flags |= (M_EXT | M_RDONLY); if (nios) @@ -1263,18 +1187,6 @@ out: m_freem(m); if (mh) m_freem(mh); - - if (sfs != NULL) { - mtx_lock(&sfs->mtx); - if (sfs->count != 0) - error = cv_wait_sig(&sfs->cv, &sfs->mtx); - if (sfs->count == 0) { - sendfile_sync_destroy(sfs); - } else { - sfs->waiting = false; - mtx_unlock(&sfs->mtx); - } - } #ifdef KERN_TLS if (tls != NULL) ktls_free(tls); diff --git a/sys/sys/socket.h b/sys/sys/socket.h index cf1d95da6168..76a1652644bd 100644 --- a/sys/sys/socket.h +++ b/sys/sys/socket.h @@ -662,7 +662,7 @@ struct sf_hdtr { */ #define SF_NODISKIO 0x00000001 #define SF_MNOWAIT 0x00000002 /* obsolete */ -#define SF_SYNC 0x00000004 +/* was SF_SYNC 0x00000004 */ #define SF_USER_READAHEAD 0x00000008 #define SF_NOCACHE 0x00000010 #define SF_FLAGS(rh, flags) (((rh) << 16) | (flags))