From unknown Sun Jun 22 00:18:13 2025 X-Loop: help-debbugs@gnu.org Subject: bug#78245: rm -d fails to remove non-empty directory Resent-From: Yannick Le Pennec Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Sun, 04 May 2025 17:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 78245 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: 78245@debbugs.gnu.org X-Debbugs-Original-To: bug-coreutils@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.174637886131102 (code B ref -1); Sun, 04 May 2025 17:15:02 +0000 Received: (at submit) by debbugs.gnu.org; 4 May 2025 17:14:21 +0000 Received: from localhost ([127.0.0.1]:58771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uBcuw-000854-IS for submit@debbugs.gnu.org; Sun, 04 May 2025 13:14:20 -0400 Received: from lists.gnu.org ([2001:470:142::17]:57422) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uBWmT-0000B0-P9 for submit@debbugs.gnu.org; Sun, 04 May 2025 06:41:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uBWmL-0002tc-FU for bug-coreutils@gnu.org; Sun, 04 May 2025 06:41:02 -0400 Received: from mail-northeuropeazolkn190110000.outbound.protection.outlook.com ([2a01:111:f403:d200::] helo=DB3PR0202CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uBWmI-0006kI-WA for bug-coreutils@gnu.org; Sun, 04 May 2025 06:41:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BXqIotpEI8UbLnbpLk0YqPuiAonqD6AK9An6G6zJT1drbg2Mj4K+JFHkr1n2Gatgcu4A4DE05v79Ye3qSTakmw/icfE+MvNxBw5gwNt+2IXDcvDsCfNNX3AXmKHL0AcwbwVHnxGBEOSc/N8q0+m5QvFBIgKaMXpkeNUzOpt09zvpxB9MfVjZH2fzKKIKyPlmcvTx7fYwqplUnY6W4+fRekeAp8fh7qjojQzgF7ynyXeUzrdKSQFDTGDGbAXYU72Oo036v5Xf11JIc3YuGygyLW6VFQ9yAz/HdhrRA+KBLDsF9EMfKMmOZ7n1qGGlwN7Cr0AKSFOpUI0JuEyjdlY41w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wVmaM/lTB2qOS5rAHSf60KxdNbft3+nBj0yyLxe7tlQ=; b=xjOerVZBxtb9bD2wJUeSPV46q2RFC/g1C3LHiRdXrv2fqe6KAcfdDXn78FjzYJBYG1VLxzs/WNHURa4qknAwlTkiIiDVXhH1jOzsMYqENJjyWsKZgYXiO1gvpohi1tsT9hp58ttcfE1osE7dHGoAcB+1BQZUf9C3K7bwK5+mfrLq05wa03trYawaf9/J/9qNRID/v2FGOJRWTP2V4URyFRgUJrahdGvX2TWVBVOmNd3Ek71KbUzr4JyOUiqP0Po/jU7k/jePSYuU66jYTWbZBsc+eb8arwJiw2XA23+btknPQhTmyzMYoNrM0ex2dZlXZ/fUukyen8e45AcqlftnBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=LIVE.FR; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wVmaM/lTB2qOS5rAHSf60KxdNbft3+nBj0yyLxe7tlQ=; b=SVklVHzqJ2ee4CeXwq8tXTBj8/5oy+5KWwEvNbCGBAyuESdu95MPzZ8ecREe9bfYXECwcnpeBpe/BgOgY1lpttGKZHM6PEcopQKizUvjdLEBjMRpvCRvVgTegn8WX97Wbs4Yf78bbQnnU4YQ+P71N3XHuNM4VnWuwJSaNHPmtjlkxKGwJuXU5RS2bgJA5RRrThejDV+yNFIPrpABCdIJKRsLZHP4RjuVjLTcxCZMnMcGK7yYem2m1o3gNlUvKlAR7OLP6QzX2JMWBkXfsHzCNvpiI4E3eIK8/BTQK/s7taTVzd7/4M0NYq3GabMW2G/H2fR4C1iYXhghnjNFXUrJrA== Received: from VI1PR02MB4829.eurprd02.prod.outlook.com (2603:10a6:803:9d::15) by AS8PR02MB10079.eurprd02.prod.outlook.com (2603:10a6:20b:638::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.12; Sun, 4 May 2025 10:35:54 +0000 Received: from VI1PR02MB4829.eurprd02.prod.outlook.com ([fe80::dc17:dd68:b745:db98]) by VI1PR02MB4829.eurprd02.prod.outlook.com ([fe80::dc17:dd68:b745:db98%6]) with mapi id 15.20.8699.012; Sun, 4 May 2025 10:35:54 +0000 Message-ID: From: Yannick Le Pennec Date: Sun, 04 May 2025 12:35:52 +0200 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.56.1-1 X-ClientProxiedBy: PR0P264CA0142.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1a::34) To VI1PR02MB4829.eurprd02.prod.outlook.com (2603:10a6:803:9d::15) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI1PR02MB4829:EE_|AS8PR02MB10079:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d08310c-e6c4-47b6-3662-08dd8af77246 X-MS-Exchange-SLBlob-MailProps: laRBL560oLR0Ybdxcp7KTbjbpYD2CblC09oRJ5hTyOq1OnP0vrHacX9myquNIyk0INgH69/QyzQ/JrwD55RHp/XJeUl1FmCBygTUA3Fp1JBlxCV8Z7KJ/RImnrIfg86vEItDA7ozQP9D/7ajWU2SOTf63wex/aiblllUm5YH73Ok69fqOXt9ACMYyQoWyWiHQIbUyjMFgHJ2QcMSmVhApyIKM6X3bttaNX983bdWZ5RtIOtzDnzVlkqjeTIg2n/kJTKvV7LihDJVy2g6QTzv2aXV3hOW36HMryAe+C6wYaEokddZpaQCVujoOYklEZ7MG1J9R+uFXIE2MDl3MAZepn/1wANMNUPtqSJCm/nGDutD2K3iBlj3MKQWzm68Gt4pbUXrB7DsMEMHYZCWa8Bnj66I2DyIZMxCUM37qSaWChUa8r8b7YH7TUHOFws8NNX2Gx9YizeQrLvr4NgJHVcLt9RVXrK7+pBzvBG5389qWoyOZN1+KPDALtJ655bhkF+3gha2JJDtq+zNqnKbxFQ4Umy0m8gLvIMUPWrY0DmZWIcKas20KfeaibYTB7iqEBadJGJoB7mzsCGzfy36FKZzDfGX6bvQ3LcppSGFBAkALaOCU3VnRPoB3G7PeOJinTdABO9rJAMepAG1XvFJR5mL5mJfC6YLBAgaEgRndUGgxTfTP1dRdD1VJCaLaHfFfMYtBT7qYF5wp2gTTxSVaduQFBb7NLRB8eF6aFPEjf8/jNyO2z9CfbQlQFHXOTNpvoAWvxkqqLmyQXttiflJND36E/bM9N3MXbi2 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|19110799003|461199028|5072599009|7092599003|6090799003|15080799006|10035399004|3412199025|440099028; X-Microsoft-Antispam-Message-Info: 8JrDmvK2MKl+cJfUEQ69c8EUOyOmyIjftWLy0q3/3GjJ0xFEvhaipxQMbk8XZjzSMTUI0HJySHLL2+SJ5KJLX4XlQQhpWYJa2O9vJ2gYbkxBeRIlLvCdfipO/rkIL0OXq1roO+q6oOD43PFNlnYQ/YNhqgZPJbWzGTtKNz4EJDD9xPqr+dKeyKY2kLU9aRQXcn4gG241mZDUOJIRvxLXDtmlWW4eC0mrOz9h0zp+P2mwfmE/+M1Zrw8Wk6Xae9C9L9df1ZwvPuJQyxxOT8wI12t/oaENKfl6FZl8+DoX1WxA2SMe1sbm83W4iTKfLlUVrLDQqR+SfYIYp63mgJtgjghuaWMccOdio2o5Za6CMVah+i+mqYm8oHrrSM33dPEYMjCSE3+xEdJHaIAYHp5jMhiCJrA3zqfw6SDoM7Uw0Xhjbljfe0CuT6YjgOVpPYrgowYMCvY5u9EtsJLEBWTx0Xkt9Nj/rPEkA2Ojj66W++QOAh0WZwl/uhcvWwWq/ByfhZBDWwvIx6zqAh/pdpVgyRkw3NVibUM4jRUFu9YvxEVb06WEwce0gYDkNib+BkuJhilSJ/U4DyfK93eaHhIr/tiBnAtFPmpNSNiPBxlolHJ0LNAeSfU6kih3nnzk6HtjyyD51QrEiBiHySWaLsbRbeNpJx8n/CAL+qmefxYyjvPQW/xtfhnDUFFa0G5Y5BgS1JXnDlHjYbmE41LBs0U0Rys/YF63QZjHcwWnC5/OZ2aOHhPYUx62W55g4/Dzd+GrAvXrkvxtqsiZQztV7cHYASw0ws/BGzkBCuxx5GlK0j7N0hVinx933CBZ0mkTAxRMc3yjy8PSMuGzhSAJZhOhRSAk1GuRyanDqTn92PVLP8E5Y6SVZijTzJCavTbwR60xk7q5xPnrSdh3WUGA+RLdeGm0JQ2zPj4RXCyS8Cri6q5VrPdOtQS28LxjNPeL6i8m9Cifh3KU8n1R1MxqSfO4I+HHf0y1HKNhaLbFyOGkljwlMcK0wX2JpRC+gsbSPxiOHgWdqlqtFa1Eos4kvYOynbd5MurlPZ17Y6doHvhNOKdPNf/sjiSjxoFfe3VsVVAmQ3UYYiSyoHf6A82IeT+JpDnJsYix8TTWBe4J2YvVlDosS1Zg2n9w/4raVH8pYoSQU1tXMmTCi+ujNNym9cP2PVDO/TMFZRA9lq9IbyWyKuWrMoNccWqHFno/bMkzQR9mm7AquT+eOgK693ZzCaqq1z1/Hp8aSPuBuywV3bwIgrjzmf/YEWn0icMthi+6qRBG X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rvG8p2A0Zd6v6bB/LDXfCrAmTV5JBuxMDxfewLD1E8CEdgGTDelCbhqg9bGQhg+GvsGEm4BquqgidWm3v+3G4+ulG26AN7IsDN/ZLww9692lC5dZ3JMq4d3EX7QFKu2DJQyf/mJ/ghz7tPt+rqRjKK385n1gejd6qBvAz24+3pJk7SMNx2Sz1teSTNgTHIZGhsUaKAb8GAk7wn6yaw0ZmwRCufzkyqDqPiO36Q+D4F58wfD+7dtTK2vOhmn29Og1Z2fLPxV2bT/KbrsAP5zPD79ExQ96tP4joKbAmBAswDEW7dK2x4vfHYtBMNyzd4kzt+wpsHm1/JYfBzlUczy3zHiarsFPmxTU+UnB2dNQEgWyLyHDUzzapau73aPixq/rDpYlQTco0ODKMojSqPDIf6xxg/eVG+R2mEDT2AkNlUH8kndQ/SuRgnNqJeVBM5ixrWks/l8Hjj/c4763fJk/671ogdFPnGgEhrziXz4+eoFDP5B0fIIU8AX22psQ6I4+At1bHvXBo0nI9RDR87/RVlAY0CQujHxgBvjG0WEEi6Ikzx1mYgfWEmPWxybOjY/uWCTMfS7w5LMJLHB3GPw4kCkNLz+4CMAKDmXdZ44kXuEA85LSIu0NPKFbM4cBKR2KY9iiX5xEX4gZt5rOrpgIU/x4B+mORBJ9qLHNrpKo8o93sUBdf42il0ol1B2jizyWuLVTGtR+7hHwa0WEBiUWIZ4RLZOuc4H/pPjP5KcdHIZgOG6HhIs+iEvICTXWDxMdWdHCClDbWq7NB2A/Mgo+zG8wuz7T7k2ofbwJY1fgnVMSZkvJd4L+07VYaOEogB97bgPAbInRK+LkQ4qDowXrKw93Onp/P2jue5swk7H7mMXa/PwGnzvOJNIHzJzohvVk1SymuEKrQvrGOd1qaTlJhZmOAwQ6l485fvJwOJFRPfAkpnGpTcd1ogCmrtfYczdUAlP0bmOV0q23syF3jnyzm+fXjoKJWHmdwmZRgTC4+9i8LfnetYM3QZq1uIMp7a3NE7XEB4DxPS0MY8VCY6pyom8FdamQpgPjmiecnhmTR6RJYk/LkEJUnneW2XB5XjXv+HXBTWJXIf7+pEwcTOkrG8Ki/xrF2Tk715IK7FOKl7exRq4cVEPaNkHXl4YWVG6IkPuT/jP/0tAuoGn8jBiFS7j+iKVDecgAYU8T2PRVMXTRuSImrNmMqkUkLHMWm71XaRffTdAkQ24uPIKM7wZFMnr0lKEg1ddPH/IFeseGgP7rm9Me1LsB1xQyWGCwqwQ+sneA2kdeR4p+CyEYjTH0rqMlQYzwV37voHJmwDS243h5zz+dOo68kisxpCBdr7SS X-OriginatorOrg: sct-15-20-7828-19-msonline-outlook-12d23.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 4d08310c-e6c4-47b6-3662-08dd8af77246 X-MS-Exchange-CrossTenant-AuthSource: VI1PR02MB4829.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2025 10:35:54.1767 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB10079 Received-SPF: pass client-ip=2a01:111:f403:d200::; envelope-from=yannick.lepennec@live.fr; helo=DB3PR0202CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Mailman-Approved-At: Sun, 04 May 2025 13:14:15 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Dear Maintainer, On CephFS, creating a snapshot is done suchly: $ mkdir .snap/snapshot-name This creates a directory which contains a view of the current directory at the time the snapshot was created, and is therefore non-empty if the current directory was non-empty at that time. Its contents are immutable. Removing a snapshot is done suchly: $ rmdir .snap/snapshot-name This works fine even if .snap/snapshot-name is non-empty, as rmdir calls rmdir(2) directly without trying to be smart, and the Ceph filesystem understands what rmdir on a snapshot directory means: remove the snapshot. One would naturally expect rm -d to behave *exactly the same* as rmdir, but this isn't the case, because rm -d first does a getdents on the directory, observes it is non-empty, and refuses to perform the removal. >From what I understand, this is non-compliant behavior per XCU rm 2.a. and = 4. and XSH remove(): https://pubs.opengroup.org/onlinepubs/9799919799/utilities/rm.html > 2. If file is of type directory, the following steps shall be taken: > a. If neither the -R option nor the -r option is specified, but -d > is specified, rm shall proceed with step 3 for the current file. > 4. rm shall perform actions equivalent to the remove() function defined > in the System Interfaces volume of POSIX.1-2024 called with a > pathname of the current file used as the path argument. https://pubs.opengroup.org/onlinepubs/9799919799/functions/remove.html > If path names a directory, remove(path) shall be equivalent to rmdir(pa= th) In short: rm -d .snap/snapshot-name shall be equivalent to: remove(".snap/snapshot-name") which in turn shall be equivalent to: rmdir(".snap/snapshot-name") Moreover other coreutils rm implementations (such as uutils or voreutils) do not exhibit this bug and correctly remove non-empty directories. Regards, Yannick Le Pennec From unknown Sun Jun 22 00:18:13 2025 X-Loop: help-debbugs@gnu.org Subject: bug#78245: rm -d fails to remove non-empty directory Resent-From: =?UTF-8?Q?P=C3=A1draig?= Brady Original-Sender: "Debbugs-submit" Resent-CC: bug-coreutils@gnu.org Resent-Date: Sun, 04 May 2025 18:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 78245 X-GNU-PR-Package: coreutils X-GNU-PR-Keywords: To: Yannick Le Pennec , 78245@debbugs.gnu.org Received: via spool by 78245-submit@debbugs.gnu.org id=B78245.174638168322914 (code B ref 78245); Sun, 04 May 2025 18:02:01 +0000 Received: (at 78245) by debbugs.gnu.org; 4 May 2025 18:01:23 +0000 Received: from localhost ([127.0.0.1]:59430 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uBdeV-0005xW-Cz for submit@debbugs.gnu.org; Sun, 04 May 2025 14:01:23 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:54392) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1uBdeT-0005xG-8G for 78245@debbugs.gnu.org; Sun, 04 May 2025 14:01:22 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-39c13fa05ebso2092856f8f.0 for <78245@debbugs.gnu.org>; Sun, 04 May 2025 11:01:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746381675; x=1746986475; darn=debbugs.gnu.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :sender:from:to:cc:subject:date:message-id:reply-to; bh=+GckYFItn9lKMKDH8GMfuOY9ZmM2AxUo5F2kZh+7Vj0=; b=gc0g/b8oE9a5GJllLkPbngI8Uj+NEK578M77q/d64/iyxNudG3prLrOuXcp7/AOL44 +va06r94ioanFfwLOE+cUMgz0C31soS7Yik8hT5KF1XUJZDjzGr/m/bZlgELNX4PfBz8 kCa3ArMHUK+k8Z7wW8c8uqpQEDgywllsx8UPb0oh270x353BoCV8gZSfzCyByY/VDp6y JHrNw4sneKcEFVxtfi1WBBN4LLZau/9XwZs/evupes9Eond1IYH8j2xBjQLdaYWlBFYN U9XsrxKEHj3h8qvUm+umMiWKByqDlp2gDlSRm7cAp9Ja+I9qDmf2tc0ZCFjyDKxyiLSS muRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746381675; x=1746986475; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :sender:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+GckYFItn9lKMKDH8GMfuOY9ZmM2AxUo5F2kZh+7Vj0=; b=nL49oBb0rNX0QQLxbmuF6ZCdqNjea5EHn8p7RpVRUxu/EtzkMc6DEZxnn+wixEeJne X5asGcmjOc4up8d87YPCUx4HAthjckwGHe6eaN9ghSzGLTL1+b+1ib3sqIZxvMQcLfs9 tDWLi8HxjDxh/qMVo3Jcve+e8TXRrY34uzHs2UUpMsluHmUvDWLGfY+I7nVUrve20cPI qA22brzWD1s9iBfGUwLjczivTniUNAslSCa7v5zF1MvpNv/stgMynIzz+yktepVE1ZhD eOr9meULiipEewmRD/qjoyx5LKErwMDvcf4NPQU1SxRMpqeYW0GRRJaqKg0bKJpIG3Y8 D/yQ== X-Forwarded-Encrypted: i=1; AJvYcCVb9ZuQPt6RyXmkVT78rmvt8s5UwqFqNYoeWI4FpmACoopAa5yhqTb85sJ+fdBdSoRmDJswXg==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yzspq3cahMlTNkop/0jQpovUm1nofdwdOzfdMPXsaEMm66M4xd5 lgyhHfELZe04oeu0fKeo9HkoeuqVQfCoOly89lXXtZKLqMWlcyMb X-Gm-Gg: ASbGncuDpyxEv4uTqnl3lYMAYQcUec4F+lBi/KXpZnFkxXddE4uAp4cOVIIFvVxsWqE A+UhX/I/+E8Br4dY/EIn1KF6sOHfoQHxK9A4trfUxsWUBdzWxryeeC5DFjVLbkH2mRx3ELw4ivd sAbwwvbZ2tAJCPToKS78eaUezzd5lbxKpM8hVhw/CAh6ix8zJabPHJsCmb6BwWYLL3KX0eCuOrB 7csooMUAjmtIqvRJ16CmXHBH24fr6SLSlLhPH0xJFJocKciqHwXsAmcKS1j3YVbacGCZ91Utmoy qh2ic6gmFkDstBCExozFSiugr4oPO2aWnYZGWKZRFUs6ocnmT0uIndEywjk/PUqBfjILIGU0UXM +MG1wNgqis730DJGFZzVwjVS+EBSCoQ8= X-Google-Smtp-Source: AGHT+IFHU965AA19r9PdSVmW275v3apZjjMQoc4F299LhOgHi0M+X/m5r+LRMoSOoNGTryZun25A7A== X-Received: by 2002:a5d:64e6:0:b0:3a0:82f8:a999 with SMTP id ffacd0b85a97d-3a09fdd80acmr3462692f8f.51.1746381674511; Sun, 04 May 2025 11:01:14 -0700 (PDT) Received: from [192.168.1.31] (86-44-211-146-dynamic.agg2.lod.rsl-rtd.eircom.net. [86.44.211.146]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-3a099b0fe92sm8095947f8f.68.2025.05.04.11.01.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 11:01:13 -0700 (PDT) Message-ID: Date: Sun, 4 May 2025 19:01:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta References: Content-Language: en-US From: =?UTF-8?Q?P=C3=A1draig?= Brady In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 04/05/2025 11:35, Yannick Le Pennec wrote: > Dear Maintainer, > > On CephFS, creating a snapshot is done suchly: > $ mkdir .snap/snapshot-name > > This creates a directory which contains a view of the current directory > at the time the snapshot was created, and is therefore non-empty if the > current directory was non-empty at that time. Its contents are immutable. > > Removing a snapshot is done suchly: > $ rmdir .snap/snapshot-name > > This works fine even if .snap/snapshot-name is non-empty, as rmdir calls > rmdir(2) directly without trying to be smart, and the Ceph filesystem > understands what rmdir on a snapshot directory means: remove the snapshot. > > One would naturally expect rm -d to behave *exactly the same* as rmdir, > but this isn't the case, because rm -d first does a getdents on the > directory, observes it is non-empty, and refuses to perform the removal. > > From what I understand, this is non-compliant behavior per XCU rm 2.a. and 4. > and XSH remove(): > > https://pubs.opengroup.org/onlinepubs/9799919799/utilities/rm.html > >> 2. If file is of type directory, the following steps shall be taken: >> a. If neither the -R option nor the -r option is specified, but -d >> is specified, rm shall proceed with step 3 for the current file. > >> 4. rm shall perform actions equivalent to the remove() function defined >> in the System Interfaces volume of POSIX.1-2024 called with a >> pathname of the current file used as the path argument. > > https://pubs.opengroup.org/onlinepubs/9799919799/functions/remove.html > >> If path names a directory, remove(path) shall be equivalent to rmdir(path) > > In short: > rm -d .snap/snapshot-name > shall be equivalent to: > remove(".snap/snapshot-name") > which in turn shall be equivalent to: > rmdir(".snap/snapshot-name") > > Moreover other coreutils rm implementations (such as uutils or voreutils) > do not exhibit this bug and correctly remove non-empty directories. > > Regards, > > Yannick Le Pennec For reference this was also reported at: https://bugs.debian.org/1104300