From nobody Tue Nov 14 18:45:55 2023 X-Original-To: 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 4SVFcR5Tpnz50XW5 for ; Tue, 14 Nov 2023 18:45:59 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) (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 "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SVFcQ5pK6z4J3N for ; Tue, 14 Nov 2023 18:45:58 +0000 (UTC) (envelope-from mavbsd@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=jubGvThe; spf=pass (mx1.freebsd.org: domain of mavbsd@gmail.com designates 2607:f8b0:4864:20::1130 as permitted sender) smtp.mailfrom=mavbsd@gmail.com; dmarc=none Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5af6c445e9eso69368847b3.0 for ; Tue, 14 Nov 2023 10:45:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699987558; x=1700592358; darn=freebsd.org; h=content-transfer-encoding:in-reply-to:subject:references:cc:to:from :content-language:user-agent:mime-version:date:message-id:sender :from:to:cc:subject:date:message-id:reply-to; bh=W/oazbLClpx202d58N+PDp7Ezl+dwm6+DPJLLyM87ME=; b=jubGvTheYhjuVQridkF/Mq59+hC9NqPnDsD7z9nMbEf+XBe7hgVzfZf92TcicNCXr7 PkM3fIiyNcCYjIVTw91dM7Umoh1TqEehh0SdBxH7XcnnWL9WUFZBxQNyEeezukMxnsjB CbQH66wnAA3ByGfmOVqtWNLYnv9VyTEHCViy1vbHo9AwzU0T0e1x9VW9r3L+f+6FDxqa MSB/oPVVLvKEG2P8MOido28gCChyWcMpvfqy7xhCU2kpXsYem1gmnwOxg62GK5Qi13Z2 kFO/9RyfZ0az/Nd+xjMNf8go6BxFoObK3Cvk2IjiF0sOJIpS+d7rffw3FVgtcYCL8Pnl b3oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699987558; x=1700592358; h=content-transfer-encoding:in-reply-to:subject:references:cc:to:from :content-language:user-agent:mime-version:date:message-id:sender :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=W/oazbLClpx202d58N+PDp7Ezl+dwm6+DPJLLyM87ME=; b=QH//HDleEey/yEqgCtRNZHECVjY2SG7Zla1lTQ/MSHa2N/wCgK8+3uW5N3A+s0i6Ko ab7atm2kqgPGzEdUxL6xAaWzu4HCzSSKdhh0FHAjwbsTUxEeoD59qdARPq3noyQEiysI Og1jEr/9uGNTqPyUdRRyMvSBhk2P5PKtbh+mefAJo0yQfPD6Y2/1oXQ6wet5M+gbTQ14 r8+mSZdoUVyWOpyQfUZzPp8AZdhwhxd9eVc3QS4QLBTLaW2sWlHn41WaSPVZcWw+4YLW nTE/CRYWjg0/xpFelUdjaa6a5dUff7p9cT9VG5qdrz1F0o1wzNO5FdsL0hvcdOK6J9QR 28Lg== X-Gm-Message-State: AOJu0Yz+htIN30p0Zc16SM58UnaKGrecFyGtiNBq3m3i6ORTndskNPbT nXm+z83YX33yxuEzcwJ+YOTOEro99vA= X-Google-Smtp-Source: AGHT+IGjefWNadU0cmKr0BfxABeFbthZeeYVF5NgYxfqzGc2sKV/zsltCVjZ4upjh8qe/uf3rE9lcg== X-Received: by 2002:a0d:d9c5:0:b0:5a7:b942:c3fe with SMTP id b188-20020a0dd9c5000000b005a7b942c3femr10524572ywe.16.1699987557792; Tue, 14 Nov 2023 10:45:57 -0800 (PST) Received: from [10.230.45.5] ([38.32.73.2]) by smtp.gmail.com with ESMTPSA id b6-20020a0dc006000000b005b37c6e01f9sm2545685ywd.90.2023.11.14.10.45.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Nov 2023 10:45:57 -0800 (PST) Message-ID: Date: Tue, 14 Nov 2023 13:45:55 -0500 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 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US From: Alexander Motin To: Mateusz Guzik , Ronald Klop Cc: Konstantin Belousov , current@freebsd.org References: <349700057.3452.1699611152405@localhost> <1900239445.5968.1699966796547@localhost> Subject: Re: crash zfs_clone_range() In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spamd-Result: default: False [-3.08 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.88)[-0.877]; FORGED_SENDER(0.30)[mav@FreeBSD.org,mavbsd@gmail.com]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36:c]; MIME_GOOD(-0.10)[text/plain]; RCPT_COUNT_THREE(0.00)[4]; FROM_HAS_DN(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[current@freebsd.org]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DMARC_NA(0.00)[freebsd.org]; MLMMJ_DEST(0.00)[current@freebsd.org]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::1130:from]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; FREEMAIL_TO(0.00)[gmail.com,klop.ws]; DKIM_TRACE(0.00)[gmail.com:+]; TO_DN_SOME(0.00)[]; FREEMAIL_CC(0.00)[gmail.com,freebsd.org]; RCVD_TLS_LAST(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; MIME_TRACE(0.00)[0:+]; FROM_NEQ_ENVFROM(0.00)[mav@FreeBSD.org,mavbsd@gmail.com]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-Rspamd-Queue-Id: 4SVFcQ5pK6z4J3N X-Spamd-Bar: --- On 14.11.2023 12:44, Alexander Motin wrote: > On 14.11.2023 12:39, Mateusz Guzik wrote: >> One of the vnodes is probably not zfs, I suspect this will do it >> (untested): >> >> diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c >> b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c >> index 107cd69c756c..e799a7091b8e 100644 >> --- a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c >> +++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c >> @@ -6270,6 +6270,11 @@ zfs_freebsd_copy_file_range(struct >> vop_copy_file_range_args *ap) >>                          goto bad_write_fallback; >>                  } >>          } >> + >> +       if (invp->v_mount->mnt_vfc != outvp->v_mount->mnt_vfc) { >> +               goto bad_write_fallback; >> +       } >> + >>          if (invp == outvp) { >>                  if (vn_lock(outvp, LK_EXCLUSIVE) != 0) { >>                          goto bad_write_fallback; >> > > vn_copy_file_range() verifies for that: > >         /* >          * If the two vnodes are for the same file system type, call >          * VOP_COPY_FILE_RANGE(), otherwise call > vn_generic_copy_file_range() >          * which can handle copies across multiple file system types. >          */ >         *lenp = len; >         if (inmp == outmp || strcmp(inmp->mnt_vfc->vfc_name, >             outmp->mnt_vfc->vfc_name) == 0) >                 error = VOP_COPY_FILE_RANGE(invp, inoffp, outvp, outoffp, >                     lenp, flags, incred, outcred, fsize_td); >         else >                 error = vn_generic_copy_file_range(invp, inoffp, outvp, >                     outoffp, lenp, flags, incred, outcred, fsize_td); Thinking again, what happen if there are two nullfs mounts on top of two different file systems, one of which is indeed not ZFS? Do we need to add those checks to all ZFS, NFS and FUSE, implementing VOP_COPY_FILE_RANGE, or it is responsibility of nullfs or VFS? -- Alexander Motin