From nobody Mon Feb 9 15:46:00 2026 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 4f8pxQ0l1sz6RcYH for ; Mon, 09 Feb 2026 15:47:54 +0000 (UTC) (envelope-from lionelcons1972@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 4f8pxP4n2mz49W6 for ; Mon, 09 Feb 2026 15:47:53 +0000 (UTC) (envelope-from lionelcons1972@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20230601 header.b=IqWqsdQK; dmarc=pass (policy=none) header.from=gmail.com; arc=pass ("google.com:s=arc-20240605:i=1"); spf=pass (mx1.freebsd.org: domain of lionelcons1972@gmail.com designates 2a00:1450:4864:20::52c as permitted sender) smtp.mailfrom=lionelcons1972@gmail.com Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-6581327d6baso6784910a12.3 for ; Mon, 09 Feb 2026 07:47:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770652070; cv=none; d=google.com; s=arc-20240605; b=CuVSM2mSiPswmt5+UfpCgihFQIJDrwv0YJUw/sL6er/ArNbDkhDgINvd5huh+s0FKi rD3XiiSeWVtS8FANvN8RzPW9d42NdRHIun/7jGe8rz58WXnPFLwC89Q2FLSVI5Op1+2j Pi+vIrKV779I448HDjztbQnbomML/RjkckFMX6k18Ad6cbNh1t+dKr7gaeJ213pwqRmv zdnzIX+P4deiyI+xNjc4PpyLcIkkGPV6U8dfjClAFQZ3oT/JTn2T8tEDCVIbSgGpxqXl Tbj7eFnHjc4UsruJmytz+DzMJ/fHLoJXjU9aKV0skAvW/ic6xcRl7hm3Ni06AajsHNcw uSZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=KmvYOoQTr22nsWGhhS3aLpK5ZkdxIZvPoTkKjKXs6xI=; fh=bKeb80MuaukQVW6V1ggve8SaqSjkFHK68cQn5aYjc20=; b=euqjhJos8ryWIjaDGiSSWs+35shk+siBtnBvmvMSC3VMiCmNynJD1IfDn3MfriL3uB IBgtgQgFU3MuUtlyqVsI2cKMBsMCt9BMwD/eNq6IvGkOMZgFdcO+plRjGth8x/6sT1Ox VRCBo7DvojyWwAfGEHhOqhVSWJlQKaNVoRtq6Q8KPjCnPROFHeIptRmVYQbiz9ZPQvx5 iSgd7WbIHUCx62Z0mVCgAViEb92Sv1Y6oFtxOsYrxdpGT2LgiakGBl71uynJNgqpATUG hWqbugqhzosBTY13jCWni3M6b8GvTqgeOt4RwS6BmVOIimpC8+bF65F9Gte27cYNJQLN 5ZdA==; 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=20230601; t=1770652070; x=1771256870; darn=freebsd.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=KmvYOoQTr22nsWGhhS3aLpK5ZkdxIZvPoTkKjKXs6xI=; b=IqWqsdQKfXAs9HwU0FZ43M3UntIBb6jTcbSRvR7Y6Ire9eXOGwD+sdYnQIhMtdwdTb kQHkI5gdQL1e+Eut+SE2aXBn2e/wAsv8Rzut0jMfz3D7MDs6ZFLbWiG0aT+Nb54hId8c 3malzuNytk2fGhlgRkgq7TaN+s6PAUGhCHC8St+rYa0SJymF7anzkzR/ZS5hc9mV/mJJ myZDHctnp6DxB755ZBcCjal8IC94N6YPXsMPgFePp0oTG/dIEXNfIL00LpeDVWHXQxPD FrzzU8R1yxBVZvlZSkfDTVCntqb77+Zz8naXjCh4oZaN7KuJgPVI3dbSSXEUi8mLPOue Jc2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770652070; x=1771256870; h=content-transfer-encoding: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=KmvYOoQTr22nsWGhhS3aLpK5ZkdxIZvPoTkKjKXs6xI=; b=QjodEllafK2C7sls90ArIBP9mbfIFltsQXIyTpBkZv3AjIKpL+YfbGQUbMub+KCh1E s8ol0Uu08drP+oJdS+AHES3ME1uOlFuGaOJSVfgM91XdATG6LwaP6AOzJInHq4AoRXJ8 YfxVmSnkYJ8uowAgZHG1YTFp6a+ZYMrLIqdidXo8g3GnWy6p/rtVOtmjTtlkvZouSJXH D736rathocvzcJ8bePMJ8tjUrzeLSqda0pSdh6caaBZ1jaZeIIjFNwbcPMSrOqOSpcZ0 Z/wWwYnXqb2D2QesYYBPS/ejUVJqeRLdSlNH2caxsFdaqpomZIfEOTJ2u8r2ObEhkSlD 8ZHA== X-Gm-Message-State: AOJu0YxZlWrsOZcpuxRwMdJuljNFS8wKGAVbROnLTYiaS3D6faTYqKL5 F06hfZY90rubspJFntJKTo4Hb7V3kGEuON6UQx+J6CvEwobiKC1UWl7b/K80xgCzGBZfOBsiWpS 1FFNYrPKAnKBKKO7+i6GJM62oi/5m4XruUMepK4Q= X-Gm-Gg: AZuq6aLDCuhjo7M8Y69wNmy3NY1dP2CqmP4myyhRPtpusjxI5+K+W/DMjFADKqPvbU8 atcyw5q2xZnJz9mPifp7+OFgCWUbn/jRn9q7BIuzndnniTkiln2VKATyeUIMrk0ktOyAEi4wZbm UHlsrfaBd/9hhDATGug3BqFa0fI/vJym2bbcDtxFYBQ0RzcV1ypOxucK60YK0SWtrYB9U032x/b 2x8pLRwjuEwyShhjwoYq4R9eH8Bl11E3C2E6TfSJvuBMijJ9K7lE6szx7dxAmVOdgZ/43Y= X-Received: by 2002:a05:6402:40d6:b0:658:d18e:e6 with SMTP id 4fb4d7f45d1cf-65984132688mr5674957a12.11.1770652070261; Mon, 09 Feb 2026 07:47:50 -0800 (PST) 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 References: <86wm0oagde.fsf@ltc.des.dev> In-Reply-To: From: Lionel Cons Date: Mon, 9 Feb 2026 16:46:00 +0100 X-Gm-Features: AZwV_QhHUpsesP59bed_Dp6LCTcFvvYrQ5iU9wI6sBqSCr8IBptqLuBHHvGWMik Message-ID: Subject: Re: Implementing O_SYMLINK in FreeBSD? To: Freebsd hackers list Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [-2.92 / 15.00]; ARC_ALLOW(-1.00)[google.com:s=arc-20240605:i=1]; SUBJECT_ENDS_QUESTION(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20230601]; MIME_GOOD(-0.10)[text/plain]; NEURAL_SPAM_SHORT(0.08)[0.076]; MIME_TRACE(0.00)[0:+]; TO_DN_ALL(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; RCVD_TLS_LAST(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; FREEMAIL_ENVFROM(0.00)[gmail.com]; FROM_HAS_DN(0.00)[]; MISSING_XM_UA(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MLMMJ_DEST(0.00)[freebsd-hackers@freebsd.org]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; MID_RHS_MATCH_FROMTLD(0.00)[]; RCVD_COUNT_ONE(0.00)[1]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::52c:from] X-Rspamd-Queue-Id: 4f8pxP4n2mz49W6 X-Spamd-Bar: -- On Sat, 7 Feb 2026 at 14:50, Konstantin Belousov wrot= e: > > On Sat, Feb 07, 2026 at 01:27:09PM +0100, Dag-Erling Sm=C3=B8rgrav wrote: > > Konstantin Belousov writes: > > > Lionel Cons writes: > > > > Would it be possible to implement O_SYMLINK to open a symlink > > > > directly in FreeBSD? > > > What is the semantic, exactly? > > > > You get a file descriptor that represents the symbolic link. You canno= t > > read(2) from it or write(2) to it but you can fchflags(2), fchmod(2), > > fchown(2), f[gs]etxattr(2) (their equivalent of extattr_[gs]et_fd(2)), > > fstat(2) etc. and there is an freadlink(2). It can make it easier to > > safely copy symbolic links, or safely extract them from an archive. I > > would love to see it in FreeBSD. > > > > Note that O_SYMLINK is not like O_DIRECTORY; it is not an error to use > > O_SYMLINK when opening something that is not a symbolic link. It just > > means =E2=80=9Cif the name refers to a link, open the link, not the tar= get=E2=80=9D. > > I remember it was already mentioned O_PATH | O_NOFOLLOW as sort of > substitute for the O_SYMLINK. What is the difference with proposed > O_SYMLINK? > > We do not have freadlink(2), but I think it is possible to add the > semantic to readlinkat(2) when dirfd is a symlink opened with O_PATH, > and path is NULL. Unfortunately readlinkat() does not take flags, > with O_EMPTYPATH it would be even natural. Or I can implement > freadlink() as ioctl(2) or fcntl(2). > > Anyway, I think we are almost there with existing facilities. > We are short on bits for openat(2) flags, How many bits are left? > so there is some opposition > against adding new flags unless absolutely required. Win32 FILE_FLAG_OPEN_REPARSE_POINT has been around since over 40 years, and the original VMS flags which are the basis for FILE_FLAG_OPEN_REPARSE_POINT are now almost 50 years old. The API should be pretty simple and stable. Lionel