From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 6731E1FF0C4 for ; Tue, 27 Oct 2026 10:31:01 +0100 (CET) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 0392721693; Tue, 27 Oct 2026 10:30:57 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; t=1793052765; cv=none; d=google.com; s=arc-20260327; b=EciEVawtBM7GCdfG1bf+uBz7to1zyr1y5nnIkkD64CvXlxgbq/Ltv1gGDoD9p7eU6o 9EnXUKeoEviNxiBxY4UYqbNu58bsFH/U8qDi7CcHAsCHd8LbOiVByaYdiixbY2inh2Iw VcYO/qxV0LsjKqkKxjr2lLYD55mlVEcfUADph4iVM+/ApjI6uPfTzx32VggQoeYMDNfQ isaOTrdzxKkMDrFEgswuzqSiVk0VrEMn4c38/6iXxGXl/frbpvqmg9J//DmtMBc5I3xk wtGcbKcR1wA8XQ4cfBhMqafxyI0UUO3It0ptbY89J4jLediLv4pQOZq9U6xGz+YMpjEP k9VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:to:subject:message-id:date:from :mime-version:dkim-signature; bh=JqLZJF2PhP0F6BpJN1w6vwPTiGp7nA51HgCj6l3OZvA=; fh=rno1VC7xkg3QIeBIaVkorsqTA5dtoGsBxQiNa4eEVTQ=; b=L4eNitMlFLpafme0eNRecnLy8NvGoLK2VyJA3v7z7GmMM1ITcuS3NAprpQSpPi7MjV LnIDWQZ+JweBSvPW5dxb8JBlxOEFJ2P1wDuSTM8hlqLyxuXH+SFqDh+/MTZa/5aBCnof aGPQ2T4fxW1wsf4793zScepB+XaGQvc5bHijc/66RB4er4Sz85xYOqcq1nKsrs0QkBoC Pwp02EqLD+ES8kdCx5Fa1cJmb2MrCMeX6RJaCLDF8nHYIv377BYdGgJZf7t4UEwts25N BfckEqXle9jBB7nUIUgeC+BslmzYAFMV4HJQ1Z4OU2k9H4zzvoyjIs/W9Ykm2O/bKf71 BXCg==; darn=lists.proxmox.com 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=1793052765; x=1793657565; darn=lists.proxmox.com; h=content-transfer-encoding:content-type:to:subject:message-id:date :from:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JqLZJF2PhP0F6BpJN1w6vwPTiGp7nA51HgCj6l3OZvA=; b=bYvR+vahU7DjCOCeEhr4u3/KtjkBDyWghl8MaSZYW4MMXCrI/iWONRjZaUcGpfFNhU Jrrp0UVfOSpY6B6QQzJVIWNH0+V//GIHoQYuWO89vvoJwEKtlr08+ztdlhYBjKedH7sN DcQ0Y5CiRtGYjqBq2czmj5mXtixOZ6I/M1wLPcgje6idxTN4XJQ2/zlzYXhQivELB577 9nRX39KZOqInWQsKbnYHfUlTlNxm7XzdnlMc2lrEbGhYIb58tvLPZk6kG7cYoOvdaAD8 ykNAjO0DpHDF18MXCeaFU7S2qzQuqW9XbnYhwugW3vEfDhx6EaKNiMTFWwtL0OHiCAYq bm6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793052765; x=1793657565; h=content-transfer-encoding:content-type:to:subject:message-id:date :from:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=JqLZJF2PhP0F6BpJN1w6vwPTiGp7nA51HgCj6l3OZvA=; b=MC2gO2jjmHrpuSUmjaFA04h0ADbiOzDf/+ZNqSe/30j8XiJ4tjndlg8ojWr+kFbacy z4SYcQ43g8ooRyA+3oR8m3dw/gywUMdw0mHGDWCu2kIp6nY4lUnvtg3/EgPGbVQsaucx W7wepWUaHMe13bofUzUbdDy/q1CFLv/RBB+IImRd1Hb6g34vVJqmNUha26BfhgM5I9Mt pDDmxMEicqzaGhCHTBl1ev67wFv966ENlk1iqG4a6F1bXRmsJjIIgoHBb2NbO3EjHKGg KV4E24ZClAslPwkmY5uyDiYe1mkuudcHQhXX2Y0bKPGsSi1F4joT0YRxdyAhfthNysAE frdg== X-Gm-Message-State: AFq9FYITYFjwrsKGCaQSxt+aWS+QgedWz3baeDi7zH8V9EMcTTnOM0ov BSSPvyXJK3jMAa9lcTZ5Xzt9QJ+Ug+/98mgfi0xgA9ZSRI4cGxRBfXpCYq30nxBmSTo/wp9kVcL J1Uxgg5sXpGc4dKhZfJGVt/cLfAXqi5sM5sRY X-Gm-Gg: AYBFou1d06H3SCmUDhXG/GYMbb+J/CMaOtATnCu6R9LmCEySFmpRi2u/uWG6i1m3k/c 2R0pfHzUFnFMkaSkLNSjyzxwaD5xyyO8ugRNub+bAF1LNmUhKxdPoGJUkuflxHQUTujDlTUfnAa 6GXIC408O7aNBAKEg55mLDQ7arHd3FNK9rB32EzoRMFH6XcpYF5I7tZPelhBOF3N9A1LnacR4Y9 +iVVf9guJd42S8BlRu+34+/1wHNEJR4fLZZiOpDEYoCV0yWEUFHiA1eFFPOozvzRWMIwDKP7jVb XcdrHklBgSxbHdSx11vxFm5u9II/BPcJOEgy6ptcYpcz9w+X7xdUARXb66t8O31LU/US/h4tT3L +hHIhPkMaNgNUR9cBkSoub3uEa9oNRcG1WeK8ELN97gt0CyA7XYCvPDk/L5jyko/RdDY0QPSF6/ heSpGvT2AxIU4e X-Received: by 2002:aa7:d748:0:b0:6aa:734b:1a22 with SMTP id 4fb4d7f45d1cf-6b442fe75demr6127928a12.28.1793052764956; Mon, 26 Oct 2026 15:12:44 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?Q?Adam_Oko=C5=84?= Date: Mon, 26 Oct 2026 17:12:44 -0500 X-Gm-Features: AclHuK_AeI85XxJxBYogSDqgHf1PJs6CIvs2DiPzGdAF9WU8wnzuZmUnXWmRiNI Message-ID: Subject: [RFC] Native macOS PBS client: filesystem metadata and tested prototype To: pbs-devel@lists.proxmox.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-SPAM-LEVEL: Spam detection results: 0 DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy FORGED_GMAIL_RCVD 1 'From' gmail.com does not match 'Received' headers FREEMAIL_FROM 0.001 Sender email is commonly abused enduser mail provider RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record X-MailFrom: adamokon@gmail.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation Message-ID-Hash: APMRHF77WGP5B7D32BJILIF4A25XZLX4 X-Message-ID-Hash: APMRHF77WGP5B7D32BJILIF4A25XZLX4 X-Mailman-Approved-At: Tue, 27 Oct 2026 10:30:47 +0100 X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hello, I would appreciate architectural feedback on a native macOS port of proxmox-backup-client, based on PBS v4.2.8. The prototype runs without Docker or a Linux guest and keeps the usual backup/restore CLI, PBS chunking, deduplication and client-side encryption. Source and review workspace: https://github.com/adamokon/proxmox-backup-macos/pull/1 The main design question is preservation of Darwin filesystem metadata. The prototype uses a bounded, versioned envelope in standard PXAR xattr records to describe ordered UUID ACLs, birthtime, BSD flags and native attribute content references. Attribute bytes, including large resource forks, are content-addressed regular files in an additional standard PXAR archive in the same snapshot. A manifest-listed map associates it with the primary archives. The server protocol and PXAR record format are unchanged. Temporary spooling is authenticated-encrypted with an ephemeral local key, then the ordinary PBS encryption and deduplication pipeline processes the upload stream. Native archive/restore tests cover Unicode filenames, symlinks, hardlinks, binary xattrs, FinderInfo, a resource fork larger than 1 MiB, nanosecond times and destination name alias rejection before truncation. A fresh Homebrew source installation on Apple Silicon also passed backup and restore against a dedicated PBS test namespace, both unencrypted and client-side encrypted. Repeated backups reused 100% of primary and auxiliary archive data. Linux client compilation and format regression checks accompany the port. The work also separates client formats from Linux server dependencies and fixes native fd/xattr/time/UUID APIs and mmap alignment on 16 KiB pages. The inherited endian_trait ownership issue (RUSTSEC-2021-0039) is addressed by a documented local MIT-licensed compatibility fork using panic-safe array mapping and Copy-bound slices; it is not presented as a published upstream fix. Current scope and limits: Apple Silicon is tested; Intel is not yet tested. FUSE mount/map remain Linux-only. There is no automatic iCloud placeholder download or atomic APFS snapshot. Protected system-managed xattrs can produce explicit restore warnings. This is an experimental prototype, not a claim of official support or a merge-ready packaging series. The implementation was developed with extensive AI assistance. Its provenance, source patches and actual test results are available for review. Proxmox confirmed on 26 October 2026 that my Individual CLA is on record for future contributions. No independent human code review is claimed at this stage. Before preparing a cleaned-up cross-repository patch series, would this native client scope and metadata representation fit the upstream architecture? I would welcome guidance on a preferred representation, required review and how to split the proxmox-backup/proxmox/pxar/pathpatterns changes. Best regards, Adam Oko=C5=84