From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29FE5370D6A for ; Tue, 3 Mar 2026 16:42:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772556125; cv=none; b=aZv5/ec28p8EJ/DtFYE6UVfLnd7zTJvyZC+NsNsiWQQnRKR/6GQ//foOI4+cKzjbJw7A68WedcrIRnmbCEg0enPltny4Yc7yV+6kR/oOwv3lePUIZysqQKJ6oMTny0pHzH+NHDtJ7k6432oywZ81zhcZwNo5pCkjyJ3dutoYkR4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772556125; c=relaxed/simple; bh=rFQaSuWNtH9Qrnd75MRPuGQFSvJF/6cXdLlHAR/5dGc=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:Content-Type; b=MyDZxMdNaNoYrQzaqzAHEhISJxDIcHwBGFub+ihrzu7RwJ42sul0GUmmLkzwOHdFdpMlph5Yc2nu9aX7cJ4B4qgxOz1hfauUkOET5mPQHDVGXylhVOr6fbfxwM7Tx+X+vvjzIVXvWBv+bix6nZLfpJE/K3lKldklZwZUOloSsyU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=luj3ENW3; arc=none smtp.client-ip=209.85.208.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="luj3ENW3" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-3870dec27f4so38520421fa.1 for ; Tue, 03 Mar 2026 08:42:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772556122; x=1773160922; darn=vger.kernel.org; h=content-transfer-encoding:content-language:cc:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=zTmOPKz1yOxTxeVLqX9puCNS+ZO1YkE6imS9w0aptKM=; b=luj3ENW3bloK/RIpoQzbdMMCEVpGlXGRVWhtdbxYclrvFDot+nz0L/CdevsatYN9dk MXR4CEYhKXHkwUzitnL9YL7O7zVbFNaxn+PCVNy+Q9rEGbuZMXCa95khwSdnIOdbs+5v 0pE4EVecLMfHyl5R7NtLjtdrSOtTBMGVwOPMCX9/KlWZCsa03QCRXy2v7J9vaz98G+6k QIgILXFuIxnPVE6GqCGVfEDX3TPLAxOtoPGyxHAukBldM3Lpwuem/vl4dD8lrembTGhm cdweMkukX8NbNaiIj8rXYpE2cxSF2ARWsgD32drhOmD2PtE3aFr8BnJAIz35uewJ0y0X NKCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772556122; x=1773160922; h=content-transfer-encoding:content-language:cc:to:subject:from :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=zTmOPKz1yOxTxeVLqX9puCNS+ZO1YkE6imS9w0aptKM=; b=xTlxpfubKQ2YayjHbHuhx8+ygCaCWdvznGzBc7cyP/6LNZPdyWqr1a09aGVBMHxK77 l/T2ASJfMfp4oK51SQF5+dLrARrFgeC2GzrFt4o1hT9X8b7YTi5RY1VuSgJGKIZvRHwk RodIL7z3yDbHVNigHkGoCa1VlgUY9rUYkKrgBsQBayyfH8Q5gMihDy7HSWqHTytdtDOI XOAhuvuOyvbjkb1Hyjj6k6nVN8+F3pUKHAWsId6IUeM/gbMEZnzoy3gWKQkYMuUz3/Wb oW25wuiMehCa5opKgegA8l2rVv4xIyX+1mgWyjui1ubZywePsVAP9UuHJ/Sz6CHZnLEd 1b4g== X-Forwarded-Encrypted: i=1; AJvYcCV62nkjAQWY1GcwBZCT9Gys14sQlW33M67aYkQ0DS40UVmQqY0sPohz+7Xe8lQ52F7RfCH4Q2EmXE1FkKc=@vger.kernel.org X-Gm-Message-State: AOJu0YwdvfjXRPVEuyq+K0uBDAd6GtW87WSQJCj4rbUlvliFkzoogEOC YV6R0ZG4MD+/WUZAnobGbqcA400ZoQh8p8pMGtK8MnxaFE5mJ0cEMBmPSGnC+Q== X-Gm-Gg: ATEYQzzFf/AP2MqTeB4pTE7UBXkzE6TMI0yg/7FB71o50om9/b+fT876/+ZygfqzfmV yo7cQlLQlEhHA6CQpnoIZuhvcjUnWgr/wsug1yg2ehrRi/A3Ns69AyJQPGfGtyAQiwhh4Jg2IMZ V+j6j4+sQS3vO6uF7n7/wTwOBHZJYa14xCTVjmYQpcnDkrebwNOsrM7teRG5AC2KfJFE9c+STAK CJ+zqLfEiV1joOEo/HNWgbSRitY5WNJHN8hCTNpBtlcHGVF36sFkawBzR0BEfBksJ4NutRalLjO bSoTDHlHL+G3X6MRqHgomuIzpUYszAm1h3kC7sQIiITH3PYn48pH1kUgy2/G7Z8nUQ9SvrqdsS+ OwDW6iHUY8fV9e97p5wswMxTB+rbbiLlp7HFUUD4TT13F4Y2YplgNY1cZal+D3cnFdrdsCRfcWm vIITxJltcydRQGAfG5OO7kbz8F+x22fDnGzmLc2HMBuA== X-Received: by 2002:a2e:ae0a:0:10b0:387:a16:ee83 with SMTP id 38308e7fff4ca-38a1c40121emr17269641fa.11.1772556122075; Tue, 03 Mar 2026 08:42:02 -0800 (PST) Received: from [10.74.67.179] ([193.143.64.247]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a1244e0ccesm478286e87.56.2026.03.03.08.42.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Mar 2026 08:42:01 -0800 (PST) Message-ID: <2d514275-d2dc-4c0b-a7bd-3adf9415711b@gmail.com> Date: Tue, 3 Mar 2026 19:41:53 +0300 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Vyacheslav Kovalevsky Subject: File permissions are not persisted after creating hard link if system crashes To: clm@fb.com, dsterba@suse.com Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Detailed description ==================== Hello, there seems to be an issue with btrfs crash behavior: 1. Create and sync a new file. 2. Open the file and change permissions. 3. Sync the file. 4. Create new hard link to file. 5. Sync the root directory. After crash the file will have old (original) permissions, though the changes were synced. System info =========== Linux version 7.0-rc2, also tested on 6.19.2 How to reproduce ================ ``` #include #include #include #include #include #include #include int main() {   int status;   int file_fd0;   int file_fd1;   int root_fd;   status = creat("file1", S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH);   printf("CREAT: %d\n", status);   file_fd0 = status;   status = close(file_fd0);   printf("CLOSE: %d\n", status);   sync();   status = open("file1", O_RDONLY);   printf("OPEN: %d\n", status);   file_fd1 = status;   status = fchmod(file_fd1, S_IRWXU | S_IRWXG | S_IRWXO);   printf("FCHMOD: %d\n", status);   status = fsync(file_fd1);   printf("FSYNC: %d\n", status);   status = link("file1", "file2");   printf("LINK: %d\n", status);   status = open(".", O_RDONLY);   printf("OPEN: %d\n", status);   root_fd = status;   status = fsync(root_fd);   printf("FSYNC: %d\n", status); } // after crash file `file1` / `file2` has old permissions (0751 instead of 0777) ``` Steps: 1. Create and mount new btrfs file system in default configuration. 2. Change directory to root of the file system and run the compiled test. 3. Cause hard system crash (e.g. QEMU `system_reset` command). 4. Remount file system after crash. 5. Observe that file permissions were not persisted.