linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: torvalds@linux-foundation.org, viro@zeniv.linux.org.uk
Cc: dhowells@redhat.com, raven@themaw.net, mszeredi@redhat.com,
	christian@brauner.io, jannh@google.com, darrick.wong@oracle.com,
	kzak@redhat.com, jlayton@redhat.com, linux-api@vger.kernel.org,
	linux-fsdevel@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH 06/17] fsinfo: Add a uniquifier ID to struct mount [ver #20]
Date: Fri, 24 Jul 2020 14:35:40 +0100	[thread overview]
Message-ID: <159559774044.2144584.14085699755046222864.stgit@warthog.procyon.org.uk> (raw)
In-Reply-To: <159559768062.2144584.13583793543173131929.stgit@warthog.procyon.org.uk>

Add a uniquifier ID to struct mount that is effectively unique over the
kernel lifetime to deal around mnt_id values being reused.  This can then
be exported through fsinfo() to allow detection of replacement mounts that
happen to end up with the same mount ID.

The normal mount handle is still used for referring to a particular mount.

Signed-off-by: David Howells <dhowells@redhat.com>
---

 fs/mount.h     |    3 +++
 fs/namespace.c |    3 +++
 2 files changed, 6 insertions(+)

diff --git a/fs/mount.h b/fs/mount.h
index 1c777f651446..c3e0bb6e5782 100644
--- a/fs/mount.h
+++ b/fs/mount.h
@@ -79,6 +79,9 @@ struct mount {
 	int mnt_expiry_mark;		/* true if marked for expiry */
 	struct hlist_head mnt_pins;
 	struct hlist_head mnt_stuck_children;
+#ifdef CONFIG_FSINFO
+	u64	mnt_unique_id;		/* ID unique over lifetime of kernel */
+#endif
 #ifdef CONFIG_MOUNT_NOTIFICATIONS
 	atomic_t mnt_topology_changes;	/* Number of topology changes applied */
 	atomic_t mnt_attr_changes;	/* Number of attribute changes applied */
diff --git a/fs/namespace.c b/fs/namespace.c
index b2b9920ffd3c..1db8a64cd76f 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -115,6 +115,9 @@ static int mnt_alloc_id(struct mount *mnt)
 	if (res < 0)
 		return res;
 	mnt->mnt_id = res;
+#ifdef CONFIG_FSINFO
+	mnt->mnt_unique_id = atomic64_inc_return(&vfs_unique_counter);
+#endif
 	return 0;
 }
 



  parent reply	other threads:[~2020-07-24 13:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-24 13:34 [PATCH 00/17] VFS: Filesystem information " David Howells
2020-07-24 13:34 ` [PATCH 01/17] fsinfo: Introduce a non-repeating system-unique superblock ID " David Howells
2020-07-24 13:35 ` [PATCH 02/17] fsinfo: Add fsinfo() syscall to query filesystem information " David Howells
2020-07-24 13:35 ` [PATCH 03/17] fsinfo: Provide a bitmap of the features a filesystem supports " David Howells
2020-07-24 13:35 ` [PATCH 04/17] fsinfo: Allow retrieval of superblock devname, options and stats " David Howells
2020-07-24 13:35 ` [PATCH 05/17] fsinfo: Allow fsinfo() to look up a mount object by ID " David Howells
2020-07-24 13:35 ` David Howells [this message]
2020-07-24 13:35 ` [PATCH 07/17] fsinfo: Allow mount information to be queried " David Howells
2020-07-24 13:35 ` [PATCH 08/17] fsinfo: Allow mount topology and propagation info to be retrieved " David Howells
2020-07-24 13:36 ` [PATCH 09/17] fsinfo: Provide notification overrun handling support " David Howells
2020-07-24 13:36 ` [PATCH 10/17] fsinfo: sample: Mount listing program " David Howells
2020-07-24 13:36 ` [PATCH 11/17] fsinfo: Add API documentation " David Howells
2020-07-24 13:36 ` [PATCH 12/17] fsinfo: Add support for AFS " David Howells
2020-07-24 13:36 ` [PATCH 13/17] fsinfo: Add support to ext4 " David Howells
2020-07-24 13:36 ` [PATCH 14/17] fsinfo: Add an attribute that lists all the visible mounts in a namespace " David Howells
2020-07-24 13:37 ` [PATCH 15/17] errseq: add a new errseq_scrape function " David Howells
2020-07-24 13:37 ` [PATCH 16/17] vfs: allow fsinfo to fetch the current state of s_wb_err " David Howells
2020-07-24 13:37 ` [PATCH 17/17] samples: add error state information to test-fsinfo.c " David Howells

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=159559774044.2144584.14085699755046222864.stgit@warthog.procyon.org.uk \
    --to=dhowells@redhat.com \
    --cc=christian@brauner.io \
    --cc=darrick.wong@oracle.com \
    --cc=jannh@google.com \
    --cc=jlayton@redhat.com \
    --cc=kzak@redhat.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=mszeredi@redhat.com \
    --cc=raven@themaw.net \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --subject='Re: [PATCH 06/17] fsinfo: Add a uniquifier ID to struct mount [ver #20]' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox