From nobody Fri Apr 5 05:43:13 2024 X-Original-To: freebsd-hackers@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 4V9nTQ50Xhz5Fgfs for ; Fri, 5 Apr 2024 05:43:22 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) (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 mx1.freebsd.org (Postfix) with ESMTPS id 4V9nTQ2YWDz4HJs; Fri, 5 Apr 2024 05:43:21 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Authentication-Results: mx1.freebsd.org; none Received: from critter.freebsd.dk (unknown [192.168.55.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by phk.freebsd.dk (Postfix) with ESMTPS id CE0F489293; Fri, 5 Apr 2024 05:43:13 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.18.1/8.16.1) with ESMTPS id 4355hDMC009861 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Fri, 5 Apr 2024 05:43:13 GMT (envelope-from phk@critter.freebsd.dk) Received: (from phk@localhost) by critter.freebsd.dk (8.18.1/8.16.1/Submit) id 4355hDcS009860; Fri, 5 Apr 2024 05:43:13 GMT (envelope-from phk) Message-Id: <202404050543.4355hDcS009860@critter.freebsd.dk> To: Alan Somers cc: FreeBSD Hackers Subject: Re: SEEK_HOLE at EOF In-reply-to: From: "Poul-Henning Kamp" References: List-Id: Technical discussions relating to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-hackers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-hackers@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <9858.1712295793.1@critter.freebsd.dk> Date: Fri, 05 Apr 2024 05:43:13 +0000 X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:1835, ipnet:130.225.0.0/16, country:EU] X-Rspamd-Queue-Id: 4V9nTQ2YWDz4HJs -------- Alan Somers writes: > Linux's man page is clear: "whence is SEEK_DATA or SEEK_HOLE, and > offset is beyond the end of the file". >[...] > Contrary to its man page, Linux behaves mostly like FreeBSD. SEEK_HOLE > returns ENXIO at EOF on most file systems. Just two minor quibbles: If the file position is EOF, then you /are/ "beyond the end of the file" because a read(2) would not be able to return any data. And returning ENXIO is more informative than returning the size of the file, since it atomically tells you that there are no more holes. If it returned the size of the file, you would have to make another syscall (opening a race) to check if what you got was EOF or a hole. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.