From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 165161AA1D2 for ; Wed, 11 Mar 2026 13:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773234093; cv=none; b=BE70hY4LccAOLjNHbRgnqydgVMTPBsSP1N35+HFVS8L8RxQxaX4/bZYfhZU6v8Mck+DO9IL1ITAHc3O1uTDbzYbR8ObyuqwzzSDwvjNzkWHD+AQ3PM0XxDL+2VqEf7VOnprjVctrunxD61TRlVMpdRlTxyha1Bf88pQ0HopQY3s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773234093; c=relaxed/simple; bh=CLBRwGYmbJ0k3DklFkvThqG5Dk79zbT5XKLlwktJCao=; h=Message-ID:Date:MIME-Version:To:Cc:From:Subject:Content-Type; b=KVLuSgT9cppNjI6GC+pfcC+HCPIBAg+GYywWbhx2xcbqz7BgL8xSvPh4bYJmwBt8gOuujch+KqA8Nhwx1IMNdXVbpXwGUT2y+OL0N8DgCv6pgZvsgqMRARgWUPW3swvwVyLFrrptxX5rqIBL/33+YIQfkxzilcLArm67CanQR10= 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=e8QBkfII; arc=none smtp.client-ip=209.85.218.52 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="e8QBkfII" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b9358bc9c50so1610029066b.1 for ; Wed, 11 Mar 2026 06:01:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773234090; x=1773838890; darn=vger.kernel.org; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=pgOupCzfEhpbNhUiordHXOWTqSwHQhblBvedM3+Nb2E=; b=e8QBkfIIlMuIpTbmXeorXMbxT2aVzPlpIK9NfuCXq/0FobeECdNR3YPl2YbBCdWCDW a+1wi6VkF3IJ9lJ88DYQ+MwtvjtCSdViJKz4oNnTTFxcbLklLq9f271El2mP9gtLiBGT 46olX3MjHmRJbybEDjdXpO8fXyI5XreDLlVSS4y2d8Ykqt33noEpKlOhJHOk8hPyOd0x DBlycqDH0NEmIamAQnuYEF6hTo+9EhWLXkROvs+cSGMdVJTng6zscUc34Xc55tnmCihB HP1pBkGGhCGl10BAXG8/FUuv703bkzUyFA94ns/q0X9VVXN3b6bGfEKDKDKedNmQMJPg zqdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773234090; x=1773838890; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=pgOupCzfEhpbNhUiordHXOWTqSwHQhblBvedM3+Nb2E=; b=cv2h8lKcUwrwAOiHOSfjtaLnONoeeFexA65vNdXEvPzRJFRp/a4yQ++QP1yjGlk6VP wAvEUY8xrnQJrqVHLVEa2haj6InXahKRZoLRXH4uvGHMwJS3HwClsB/7UJuwX+9FUx6R D4SwSf38avTKuBba8awS66NIfif8nzrV5lzNkFM8D47voq7FpUGsHxbtdW/W4b3f5MGo JPdnYzqg5EAomsB652r0kuy9R5agU8AbxPlh+Is1vbUCQhYcfFKZRRyqWO+lWr1o5thA 8xese1yOAT0LBVheKxGVmMRE86dcwXvotKsbnwESsCX2aCfj5Da7Zz8CSnvphDzmY6C6 tr+Q== X-Forwarded-Encrypted: i=1; AJvYcCUson1wTkbJJfoxVQ7rcLY3gIZ+r0YhRZhW+KuCavdeNKCfbK6zF0YVDknWc/w4xO5sBDddBWlKjFZ4y/I=@vger.kernel.org X-Gm-Message-State: AOJu0YxUrhcbZz3aU/2374EoRNpvzP6JRZduju3VCqYT1nYVs5jBkKE4 FcvxdeL5WyxpM8CDgX1G/+ZyHLiAo2+fLO7KRSdCNAavw1qK8x/LVcdl X-Gm-Gg: ATEYQzxB6ZorLcf4CnGU5ImSR/H9sBkw96oxolgF2F2yaRlbngYazmDXhHNkZDaI6mT Mhnt46mSxyXF75vvEMhNQz3r8ydoT2mQRtNTIQU5vVEbVMn71NylN5b8QCaYhpA2zUwfo7JANI0 cY2KA9YxIwX2YWQACDgN8NkZWyEJAJauFrRFr4PR/D0nHpcpV6fr9dUn1lMdYCJyjVijKiU+DFa BjXGWazlQ5FavnA0kTk334hx+SzEO+pTKiHVj5yo97jxviPAoqThr1nDwH4AumEm0Fj2WUL7D2L 3tUCLbhM4nMYoazEcXWdtsTH7KOHU9YnNofPgwJ5LUiZxkhJMbqkyQYZivvlorZCCTDSGwbr9xB 5YyvHAULEP4aXg5If2ltf6BIcukT59Kl2n7RwOP9Ia3UxPSyVHpT5Sujh8IkHWovFgCcEoXc4wH i8DXJM2ekykcKdOWpjE3Wr6NYyTF05ow/z53C3dcMjD1xw2ObgwfB2cye3 X-Received: by 2002:a17:906:eecc:b0:b93:a3db:a6a7 with SMTP id a640c23a62f3a-b972e5fb52bmr129162266b.29.1773234089819; Wed, 11 Mar 2026 06:01:29 -0700 (PDT) Received: from [10.128.170.182] ([77.234.210.12]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b972de82bc0sm53025766b.27.2026.03.11.06.01.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 11 Mar 2026 06:01:29 -0700 (PDT) Message-ID: <31ee60a7-4b23-4dce-99f6-b86c8c8cc53e@gmail.com> Date: Wed, 11 Mar 2026 16:01:27 +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 Content-Language: en-US To: konishi.ryusuke@gmail.com, slava@dubeyko.com Cc: linux-nilfs@vger.kernel.org, linux-kernel@vger.kernel.org From: Vyacheslav Kovalevsky Subject: File system corruption after writing to unlinked file and using fdatasync on the file if system crashes Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Detailed description ==================== Hello, there seems to be an issue with NILFS2 crash behavior: 1. Create new file and truncate to some length. 2. Unlink the file but keep the file descriptor open. 3. Make new empty directory. 4. Sync file system. 5. Write some data to the file. 6. Apply fdatasync() to the file. After system crash (e.g. power failure) mounting file system results in error message `Stale file handle`. See details below. System info =========== Linux version 7.0-rc2, also tested on 6.19.2 nilfs-tools version 2.2.11 How to reproduce ================ ``` #include #include #include #include #include #include #include int main() {   int status;   int file_fd;   status =       open("file", O_WRONLY | O_CREAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);   printf("OPEN: %d\n", status);   file_fd = status;   status = ftruncate(file_fd, 1000);   printf("FTRUNCATE: %d\n", status);   status = unlink("file");   printf("UNLINK: %d\n", status);   status = mkdir("dir", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);   printf("MKDIR: %d\n", status);   sync();   status = write(file_fd, "Test data!", 10);   printf("WRITE: %d\n", status);   status = fdatasync(file_fd); // everything is fine if using fsync() instead...   printf("FDATASYNC: %d\n", status); } // file system is unmountable after crash // `mount` output: // mount.nilfs2: Error while mounting /dev/vdb on /mnt/fstest: Stale file handle // `dmesg` output: // [   29.941736] NILFS (vdb): mounting unchecked fs // [   29.953605] NILFS (vdb): error -116 recovering data block (ino=11, block-offset=0) // [   29.953609] NILFS (vdb): error -116 roll-forwarding partial segment at blocknr = 26 ``` Steps: 1. Create and mount new NILFS2 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 mount fails.