From nobody Fri May 3 14:45:23 2024 X-Original-To: dev-commits-src-all@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 4VWD9v2n0sz5K7Zg; Fri, 3 May 2024 14:45: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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VWD9v29c4z4wRY; Fri, 3 May 2024 14:45:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1714747523; 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=gbjTh34ainkA3WnqIsBGYAWmv/mGg1dbt0H4J2BOBdI=; b=R14XH98WQH2jy5ReCPaCJWii/t1vzFXj5ONrDTdCp4DoKzwYgByrOaHda7Qxa6Pv/diWq2 ZPXkDn6+V5IvjE1UlCWYPKxIyjzit6iCdtehvWAxZXg5Th2lKKFh7blhVGkuo/TyFui+Mp 3eT0N39NJSu6818hFMfhagbEdTVNibXNUkdRwRUUWOFmEDi/jQvHRWtZ2sziQdkGhbz1RC MJU+t+UMsw7Gy8Lty2SPYLINORXA78i4Pb+JSPOAZO971MRLbHix5NhAtRzGgs8AAjQ+Yz EzxUM9q9xRK5liPnFqKxIQhjYYeTrYmbWO2LCGo035cTMnuPpSdKmSpsqFqkSA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1714747523; a=rsa-sha256; cv=none; b=rQ9PSa767YuKtJlIsHGuZti5/XY1SZ6mg+ZJRZP7kj0qw/TbMGaw8lEJucSlEHsRuU7x13 j4pvbDwFaSFRIs7Bz7Di+ywJ8+lgLQ66CfhCDMJZJLiQhvyQ8Tm7sK97Rtu1ltMA8pGDus pGjgCf/fhO+vGThbpW0KIxlb79vcXcGVc8QjRJad9D+PdVwY3b+7iGxmpo88ab64X8WEqr YHSCWGyvuhDWiKm62Dn0rdi3TExcASrpzITs2i4vE4p2QMh8shk5knLDBt//wb2c+JZJVh YPXol/XW7KfdCnedFvT9GsaDFJLUxbZpUEK1n2012mqgypac9yqbbVYqwAS++w== 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=1714747523; 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=gbjTh34ainkA3WnqIsBGYAWmv/mGg1dbt0H4J2BOBdI=; b=GpudKWj7XsQBe9s86wqPt0H+1ZwKxRRkVo5Cq32W8LYOQRSlc/s03qKQHbH+ZjcBrfRa1Z qTmaTYsWmOnkIXQZtx6u6zk13B7FTK+PFQTywjCW+3mPFQYwEXQQ2QgNJxGwtYtZbkf7+E 020g0AufpIby6hcKB+E8BSpL2FNdncDqI9zOaiAtmoP0SwuvW12rnyODwbCtNg6ctmK9VA zh6+HdbwRVCye4eb3PZJONFhWS0zNbgDyGXjKqdB3RGkyuNbtjl30Fp2T9tQAXvzB6Q5TQ 4eH+YigIvf7txFjzixUoUG1Wa9mUvfdtsiJRLouitY5hTkjucjdPTPLQnOrAQQ== 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 4VWD9v1mGBzqYG; Fri, 3 May 2024 14:45:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 443EjN5u050778; Fri, 3 May 2024 14:45:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 443EjNkR050775; Fri, 3 May 2024 14:45:23 GMT (envelope-from git) Date: Fri, 3 May 2024 14:45:23 GMT Message-Id: <202405031445.443EjNkR050775@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 0c0146c30904 - main - tests/sendfile: test operation on unix/stream socket List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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: 0c0146c30904c1766695b141222542ea50608363 Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=0c0146c30904c1766695b141222542ea50608363 commit 0c0146c30904c1766695b141222542ea50608363 Author: Gleb Smirnoff AuthorDate: 2024-05-03 14:45:07 +0000 Commit: Gleb Smirnoff CommitDate: 2024-05-03 14:45:07 +0000 tests/sendfile: test operation on unix/stream socket Although there are already multiple tests in the tests collection that utilize sendfile(2) support over unix/stream socket, they all don't exercise the asynchronous part of the operation. This test framework, however, uses a trick to toggle true async operation and guarantee that pr_ready method of unix/stream is also tested. Reviewed by: chs Differential Revision: https://reviews.freebsd.org/D45055 --- tests/sys/kern/sendfile_helper.c | 39 ++++++++++++++++++++++++++++++--------- tests/sys/kern/sendfile_test.sh | 24 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/tests/sys/kern/sendfile_helper.c b/tests/sys/kern/sendfile_helper.c index 6a3b4a1ac880..703b04fdea6c 100644 --- a/tests/sys/kern/sendfile_helper.c +++ b/tests/sys/kern/sendfile_helper.c @@ -121,26 +121,47 @@ receiver(void *arg) return NULL; } +static void +usage(void) +{ + errx(1, "usage: %s [-u] ", getprogname()); +} + int main(int argc, char **argv) { pthread_t pt; off_t start; - int fd, ss[2], flags, error; + int ch, fd, ss[2], flags, error; + bool pf_unix = false; + + while ((ch = getopt(argc, argv, "u")) != -1) + switch (ch) { + case 'u': + pf_unix = true; + break; + default: + usage(); + } + argc -= optind; + argv += optind; - if (argc != 5) - errx(1, "usage: %s ", - getprogname()); + if (argc != 4) + usage(); - start = strtoull(argv[2], NULL, 0); - readlen = strtoull(argv[3], NULL, 0); - flags = strtoul(argv[4], NULL, 0); + start = strtoull(argv[1], NULL, 0); + readlen = strtoull(argv[2], NULL, 0); + flags = strtoul(argv[3], NULL, 0); - fd = open(argv[1], O_RDONLY); + fd = open(argv[0], O_RDONLY); if (fd < 0) err(1, "open"); - tcp_socketpair(ss); + if (pf_unix) { + if (socketpair(PF_LOCAL, SOCK_STREAM, 0, ss) != 0) + err(1, "socketpair"); + } else + tcp_socketpair(ss); error = pthread_create(&pt, NULL, receiver, &ss[1]); if (error) diff --git a/tests/sys/kern/sendfile_test.sh b/tests/sys/kern/sendfile_test.sh index 03d87292f3a3..7e549eec610a 100755 --- a/tests/sys/kern/sendfile_test.sh +++ b/tests/sys/kern/sendfile_test.sh @@ -112,12 +112,36 @@ io_fail_async_cleanup() common_cleanup } +atf_test_case unix_success cleanup +unix_success_head() +{ + atf_set "descr" "sendfile via unix(4) where all disk I/O succeeds" + atf_set "require.user" "root" + atf_set "timeout" 15 +} +unix_success_body() +{ + if [ "$(atf_config_get qemu false)" = "true" ]; then + atf_skip "Sendfile(4) unimplemented. https://github.com/qemu-bsd-user/qemu-bsd-user/issues/25" + fi + + alloc_md md + common_body_setup $md + + atf_check $HELPER -u $FILE 0 0x10000 0x10000 +} +unix_success_cleanup() +{ + common_cleanup +} + atf_init_test_cases() { atf_add_test_case io_success atf_add_test_case io_fail_sync atf_add_test_case io_fail_async + atf_add_test_case unix_success } alloc_md()