From nobody Thu May 14 03:00:17 2026 X-Original-To: freebsd-current@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 4gGFSh0nxdz6dVtX for ; Thu, 14 May 2026 03:00:36 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gGFSg60p6z3CSt for ; Thu, 14 May 2026 03:00:35 +0000 (UTC) (envelope-from rick.macklem@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-670ab084a39so12862855a12.3 for ; Wed, 13 May 2026 20:00:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778727629; cv=none; d=google.com; s=arc-20240605; b=WRsaCdLA+xygBV9pFki7gz4otumZ+iA9jMkQi16T+uGcAdFbb/IORs1OOFZcNbk1zS T9GnEile03CL+/L/XrwE8rFNEAt2wGi97/QKAUbGrKRzpKtPh3Tj2kafpaCbW6d55sbs gX7JjeUnGt8zpHFS/dH+stH0OwbiBoS96dT4eXdpW/Utv/BnQ48bT4zJACWOrN0xz1Uj AUSKbX2gSwH/mpX/A2bA5EWmICvav7rryPTDTHD7KaOPprPPhq32sDELIX66cTTPxClZ Rk7F3WD/muCNknc5yQH486MiOHy5MZnyFrs9MFULqSSmLvZhEdnKmThZeOfuRzhB3apX D6Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=Ch1SKTce93LS36CQfSzRZSbOpNnpzbc5RF7fhZ4OmeU=; fh=R/9ZFS88T9Ilg7CXfcQUPsl+3liCW5x8o4EJiR/GBkg=; b=bHzeT+ua9c4I+WCBJbQk6PXW7K9awJEhXRWqpUJbtAE15KYLAx4VEoBwrJI+Y8xzOh NDbOEOizkcgI5eBA1sU7Qu9O5MJ6gBz2PXuySqEx5GNs/Ceh8PYaDY3lULpTrUKEjRtF GkFfM62Imlhfmaf/1RK6jZ0ptw0J22RHNMJGvHQtQcIPs5PU3bbU+SgT3t+EaXsOCf6D iYKIZYWTsxWvw0V9x4MK/H3tE0OgHB+vsmK5nnGSl2W3d9ts8SlbWKEchF45/31SNE1p dMCswDpT1zcJLNW0wWpI82OSxR3LYUqPDiIqWHWYSWfp4z79Tsqf4GBYr4bCeGYEyUUX tDsw==; darn=freebsd.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778727629; x=1779332429; darn=freebsd.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Ch1SKTce93LS36CQfSzRZSbOpNnpzbc5RF7fhZ4OmeU=; b=Q1tbuVMWl6gEfTKTvaTGQDckOKmR7vf96xUyWE87BGilUAY0z+GON0zvHBIZhUzGO2 z01iX5vNBXCwF9+DrDuBl6NQ9Myc1CGWtum5Mx+gTCV7gMJnZ3Penukii59rcm4enxHk zvt5CBCUTwGumihM1vg79p8BTn21bMgaGhAdo1EcNdpIS7ZNjJj+8/ZuepwN2Y8R5rVH uIdcypfsWxp2cuY/lG3FBH/54YQSaR0TV7Wofdr+vusImQam8TQLUmCtmLbhq93n7miS BF7OCp2zcRuFT6yoe367JpJrHtgQWEipjHghh9wY6EXOeDzMnGYDbXkdmSSjJVomiSqg 8P3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778727629; x=1779332429; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ch1SKTce93LS36CQfSzRZSbOpNnpzbc5RF7fhZ4OmeU=; b=lF9WQuZLoOL9bGtknJ4i1H1ou0Em7O53WN+R+PEP32OhBjg+Src+uksySF0lT1aWyE aQKtK4F0wzCsxr8h6cTQ5vvQdvSAYTL5BLnWQ/nw4JTIK0WkFIwAziwkZn9Te1DD8B85 93ixylLG9m5aRCXmS3cX1p8sM5ilM0dpSGvsR2xa0VAwLRXtBk8ZDdDqB8GU9d8FF1Zv C9b298Fs5EDSItkH7zZem24BpliJbfgjGU3TwJlb0dBSx+DlQbgQrMb6nMVOxT/saT0Z Ljb8zGdJWbwiWyHngoV3wnpLNx9IHJgY6j31wlvw5TghiKKJjJXFUV40e21IL+bjPJRp esNg== X-Gm-Message-State: AOJu0Yz+GIj9pdydEJJiQG20qDXY0b4l+ULUsX7/SiaYhIDxtlMoDkCD Z/QomozUtgENxhmk2zPDq4y7leHkJtW+vyTAMJ4R8pHDfkmmxDWwSjsIZpJ8Tk9Zg2XWhjvyMnj UP4SInNZ0OHqFR7IZ1A1Odod80hBcGAiR X-Gm-Gg: Acq92OG7OD36iURiOWRO4Z/LSvEW0VC5KV3TSHdYGXkl+5hvd1873vq2XmfO4jJouAc mUUGOzHAvFd+BzHMWQvL+zjRV3mVjhH1Yd6Xt7RfTiiHP2P2eunH02GJo+xgRzte2OFv0oAlTvf AbAmCLm/XDEjz95wEHfhesiY53stRvVQJWmESgoHwI2AlHoyXToCEJPV4NrsAaGNPlHXVy2j3SU 12Gm5K8nJPk8c0VRkURduMWKhjzdg4u42cdR8OjN2nXltW00J58mCp1PcKsyAdjsLuWRJhXhLCk d2ksMtbSZkc73ZqzrLfs/9PWDCfFZ9sy45lJArS/EmhN7tPgtM+U188UpAZM X-Received: by 2002:a05:6402:158b:b0:677:15b6:4d6b with SMTP id 4fb4d7f45d1cf-68257cd7056mr3511597a12.26.1778727628592; Wed, 13 May 2026 20:00:28 -0700 (PDT) List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 References: In-Reply-To: From: Rick Macklem Date: Wed, 13 May 2026 20:00:17 -0700 X-Gm-Features: AVHnY4JTJsNYo2L5YknidZ3AZrdymGuIz8xUUKZOvVeknddQ_StcyjPU1g8RrjQ Message-ID: Subject: Re: RFC: what to do about KASSERT() in allocuio()? To: Konstantin Belousov Cc: FreeBSD CURRENT Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US] X-Rspamd-Queue-Id: 4gGFSg60p6z3CSt X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated On Wed, May 13, 2026 at 7:50=E2=80=AFPM Konstantin Belousov wrote: > > On Wed, May 13, 2026 at 05:30:46PM -0700, Rick Macklem wrote: > > Hi, > > > > The following KASSERT() is at the beginning of allocuio(): > > KASSERT(iovcnt <=3D UIO_MAXIOV, > > ("Requested %u iovecs exceed UIO_MAXIOV", iovcnt)); > > > > This fails for the NFS server if it is configured for > 1Mbyte I/O > > size, since the number of elements (mbufs) for the VOP_READ() > > exceeds UIO_MAXIOV (1024). This shows up because ZFS > > does a cloneuio() call which calls allocuio(). > > > > Since UIO_MAXIOV is used is several places, including setting > > the limit for copyinuio() and freebsd32_copyinuio(), I don't think > > changing the value of UIO_MAXIOV is an appropriate fix. > > (ie. This changes the APIs, etc.) > > > > Now, since all that the above check does it set a sanity limit > > on how big the allocated uio can be, do you think it is > > reasonable to change the above KASSERT() to: > > KASSERT(iovcnt <=3D 4096, > > ("Requested %u iovecs exceed 4096", iovcnt)); > > which would allow a 4Mbyte NFS I/O to work. > > > > Note that copyinuio() and freebsd32_copyinuio() check the > > iov length for < UIO_MAXIOV before calling allocuio(), so > > those interfaces are not broken by this. > > I do not quite understand how changing the assert in allocuio() would > change anything? All callers of the function (copyinuio, cloneuio, > and freebsd32_copyinuio) check iovcnt, and I do not see a call to > allocuio() from the NFS server. > > Where specifically does the NFS server fail with too long iovec? zfs_freebsd_write()->zfs_write()->zfs_uiocopy()->cloneuio()->allocuio() (and zfs_freebsd_write() is ZFS's VOP_WRITE()) rick >