New stat patch attached to apply AT_NO_AUTOMOUNT
unless --cached=never is specified.
See https://bugs.gnu.org/54286 for more general discussion.
Marking this as done.
cheers,
Pádraig
From 3fddd0f4eb0eb9b47294f951195233e1c5f12e72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <p...@draigbrady.com>
Date: Mon, 7 Mar 2022 14:32:03 +0000
Subject: [PATCH] stat: only automount with --cached=never
Revert to the default behavior before the introduction of statx().
* src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
* doc/coreutils.texi (stat invocation): Mention the automount
behavior with --cached=never.
* NEWS: Mention the fix.
Fixes https://bugs.gnu.org/54287
---
NEWS | 5 +++--
doc/coreutils.texi | 1 +
src/stat.c | 3 +++
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/NEWS b/NEWS
index 12051cd15..8e95be755 100644
--- a/NEWS
+++ b/NEWS
@@ -34,8 +34,9 @@ GNU coreutils NEWS -*- outline -*-
and the documentation has been clarified for unusual cases.
[bug introduced in coreutils-7.0]
- ls no longer tries to automount files, reverting to the behavior
- before the statx() call was introduced.
+ ls and stat no longer try to automount files, reverting to the behavior
+ before the statx() call was introduced. Only `stat --cached=never`
+ will continue to automount files.
[bug introduced in coreutils-8.32]
On macOS, 'mv A B' no longer fails with "Operation not supported"
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index e9be0993a..05dc5ee21 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -12608,6 +12608,7 @@ Always read the already cached attributes if available.
@item never
Always sychronize with the latest file system attributes.
+This also mounts automounted files.
@item default
Leave the caching behavior to the underlying file system.
diff --git a/src/stat.c b/src/stat.c
index edafd0285..3765a8f65 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -1394,6 +1394,9 @@ do_stat (char const *filename, char const *format, char const *format2)
else if (force_sync)
flags |= AT_STATX_FORCE_SYNC;
+ if (! force_sync)
+ flags |= AT_NO_AUTOMOUNT;
+
fd = statx (fd, pathname, flags, format_to_mask (format), &stx);
if (fd < 0)
{
--
2.26.2