All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Amir Goldstein <amir73il@gmail.com>,
	linux-fsdevel@vger.kernel.org
Cc: linux-xfs@vger.kernel.org, linux-raid@vger.kernel.org,
	linux-nvdimm@lists.01.org, Shaohua Li <shli@kernel.org>,
	linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Steven Whitehouse <swhiteho@redhat.com>
Subject: [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t
Date: Mon, 15 May 2017 17:43:03 +0200	[thread overview]
Message-ID: <20170515154308.26739-13-hch@lst.de> (raw)
In-Reply-To: <20170515154308.26739-1-hch@lst.de>

Directly use the v1 intepretation of uuid_t instead.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/uuid.c      | 25 -------------------------
 fs/xfs/uuid.h      |  1 -
 fs/xfs/xfs_mount.c |  6 +++++-
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/fs/xfs/uuid.c b/fs/xfs/uuid.c
index 29ed78c8637b..737c186ea98b 100644
--- a/fs/xfs/uuid.c
+++ b/fs/xfs/uuid.c
@@ -17,31 +17,6 @@
  */
 #include <xfs.h>
 
-/* IRIX interpretation of an uuid_t */
-typedef struct {
-	__be32	uu_timelow;
-	__be16	uu_timemid;
-	__be16	uu_timehi;
-	__be16	uu_clockseq;
-	__be16	uu_node[3];
-} xfs_uu_t;
-
-/*
- * uuid_getnodeuniq - obtain the node unique fields of a UUID.
- *
- * This is not in any way a standard or condoned UUID function;
- * it just something that's needed for user-level file handles.
- */
-void
-uuid_getnodeuniq(uuid_t *uuid, int fsid [2])
-{
-	xfs_uu_t *uup = (xfs_uu_t *)uuid;
-
-	fsid[0] = (be16_to_cpu(uup->uu_clockseq) << 16) |
-		   be16_to_cpu(uup->uu_timemid);
-	fsid[1] = be32_to_cpu(uup->uu_timelow);
-}
-
 int
 uuid_is_nil(uuid_t *uuid)
 {
diff --git a/fs/xfs/uuid.h b/fs/xfs/uuid.h
index 86bbed071e79..5aea49bf0963 100644
--- a/fs/xfs/uuid.h
+++ b/fs/xfs/uuid.h
@@ -19,6 +19,5 @@
 #define __XFS_SUPPORT_UUID_H__
 
 extern int uuid_is_nil(uuid_t *uuid);
-extern void uuid_getnodeuniq(uuid_t *uuid, int fsid [2]);
 
 #endif	/* __XFS_SUPPORT_UUID_H__ */
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2eaf81859166..742e4a61c0bc 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -793,7 +793,11 @@ xfs_mountfs(
 	 *  Copies the low order bits of the timestamp and the randomly
 	 *  set "sequence" number out of a UUID.
 	 */
-	uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid);
+	mp->m_fixedfsid[0] =
+		((u32)sbp->sb_uuid.v1.clock_seq_hi_and_reserved << 24) |
+		((u32)sbp->sb_uuid.v1.clock_seq_low << 16) |
+		 be16_to_cpu(sbp->sb_uuid.v1.time_mid);
+	mp->m_fixedfsid[1] = be32_to_cpu(sbp->sb_uuid.v1.time_low);
 
 	mp->m_dmevmask = 0;	/* not persistent; set after each mount */
 
-- 
2.11.0

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID
From: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
To: Andy Shevchenko
	<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Amir Goldstein <amir73il-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: linux-xfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-raid-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org,
	Shaohua Li <shli-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Mimi Zohar
	<zohar-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
	Steven Whitehouse
	<swhiteho-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t
Date: Mon, 15 May 2017 17:43:03 +0200	[thread overview]
Message-ID: <20170515154308.26739-13-hch@lst.de> (raw)
In-Reply-To: <20170515154308.26739-1-hch-jcswGhMUV9g@public.gmane.org>

Directly use the v1 intepretation of uuid_t instead.

Signed-off-by: Christoph Hellwig <hch-jcswGhMUV9g@public.gmane.org>
---
 fs/xfs/uuid.c      | 25 -------------------------
 fs/xfs/uuid.h      |  1 -
 fs/xfs/xfs_mount.c |  6 +++++-
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/fs/xfs/uuid.c b/fs/xfs/uuid.c
index 29ed78c8637b..737c186ea98b 100644
--- a/fs/xfs/uuid.c
+++ b/fs/xfs/uuid.c
@@ -17,31 +17,6 @@
  */
 #include <xfs.h>
 
-/* IRIX interpretation of an uuid_t */
-typedef struct {
-	__be32	uu_timelow;
-	__be16	uu_timemid;
-	__be16	uu_timehi;
-	__be16	uu_clockseq;
-	__be16	uu_node[3];
-} xfs_uu_t;
-
-/*
- * uuid_getnodeuniq - obtain the node unique fields of a UUID.
- *
- * This is not in any way a standard or condoned UUID function;
- * it just something that's needed for user-level file handles.
- */
-void
-uuid_getnodeuniq(uuid_t *uuid, int fsid [2])
-{
-	xfs_uu_t *uup = (xfs_uu_t *)uuid;
-
-	fsid[0] = (be16_to_cpu(uup->uu_clockseq) << 16) |
-		   be16_to_cpu(uup->uu_timemid);
-	fsid[1] = be32_to_cpu(uup->uu_timelow);
-}
-
 int
 uuid_is_nil(uuid_t *uuid)
 {
diff --git a/fs/xfs/uuid.h b/fs/xfs/uuid.h
index 86bbed071e79..5aea49bf0963 100644
--- a/fs/xfs/uuid.h
+++ b/fs/xfs/uuid.h
@@ -19,6 +19,5 @@
 #define __XFS_SUPPORT_UUID_H__
 
 extern int uuid_is_nil(uuid_t *uuid);
-extern void uuid_getnodeuniq(uuid_t *uuid, int fsid [2]);
 
 #endif	/* __XFS_SUPPORT_UUID_H__ */
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2eaf81859166..742e4a61c0bc 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -793,7 +793,11 @@ xfs_mountfs(
 	 *  Copies the low order bits of the timestamp and the randomly
 	 *  set "sequence" number out of a UUID.
 	 */
-	uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid);
+	mp->m_fixedfsid[0] =
+		((u32)sbp->sb_uuid.v1.clock_seq_hi_and_reserved << 24) |
+		((u32)sbp->sb_uuid.v1.clock_seq_low << 16) |
+		 be16_to_cpu(sbp->sb_uuid.v1.time_mid);
+	mp->m_fixedfsid[1] = be32_to_cpu(sbp->sb_uuid.v1.time_low);
 
 	mp->m_dmevmask = 0;	/* not persistent; set after each mount */
 
-- 
2.11.0

WARNING: multiple messages have this Message-ID
From: Christoph Hellwig <hch@lst.de>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Amir Goldstein <amir73il@gmail.com>,
	linux-fsdevel@vger.kernel.org
Cc: Shaohua Li <shli@kernel.org>,
	Dan Williams <dan.j.williams@intel.com>,
	David Howells <dhowells@redhat.com>,
	Steven Whitehouse <swhiteho@redhat.com>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	linux-xfs@vger.kernel.org, linux-raid@vger.kernel.org,
	linux-nvdimm@ml01.01.org, linux-kernel@vger.kernel.org
Subject: [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t
Date: Mon, 15 May 2017 17:43:03 +0200	[thread overview]
Message-ID: <20170515154308.26739-13-hch@lst.de> (raw)
In-Reply-To: <20170515154308.26739-1-hch@lst.de>

Directly use the v1 intepretation of uuid_t instead.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/uuid.c      | 25 -------------------------
 fs/xfs/uuid.h      |  1 -
 fs/xfs/xfs_mount.c |  6 +++++-
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/fs/xfs/uuid.c b/fs/xfs/uuid.c
index 29ed78c8637b..737c186ea98b 100644
--- a/fs/xfs/uuid.c
+++ b/fs/xfs/uuid.c
@@ -17,31 +17,6 @@
  */
 #include <xfs.h>
 
-/* IRIX interpretation of an uuid_t */
-typedef struct {
-	__be32	uu_timelow;
-	__be16	uu_timemid;
-	__be16	uu_timehi;
-	__be16	uu_clockseq;
-	__be16	uu_node[3];
-} xfs_uu_t;
-
-/*
- * uuid_getnodeuniq - obtain the node unique fields of a UUID.
- *
- * This is not in any way a standard or condoned UUID function;
- * it just something that's needed for user-level file handles.
- */
-void
-uuid_getnodeuniq(uuid_t *uuid, int fsid [2])
-{
-	xfs_uu_t *uup = (xfs_uu_t *)uuid;
-
-	fsid[0] = (be16_to_cpu(uup->uu_clockseq) << 16) |
-		   be16_to_cpu(uup->uu_timemid);
-	fsid[1] = be32_to_cpu(uup->uu_timelow);
-}
-
 int
 uuid_is_nil(uuid_t *uuid)
 {
diff --git a/fs/xfs/uuid.h b/fs/xfs/uuid.h
index 86bbed071e79..5aea49bf0963 100644
--- a/fs/xfs/uuid.h
+++ b/fs/xfs/uuid.h
@@ -19,6 +19,5 @@
 #define __XFS_SUPPORT_UUID_H__
 
 extern int uuid_is_nil(uuid_t *uuid);
-extern void uuid_getnodeuniq(uuid_t *uuid, int fsid [2]);
 
 #endif	/* __XFS_SUPPORT_UUID_H__ */
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2eaf81859166..742e4a61c0bc 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -793,7 +793,11 @@ xfs_mountfs(
 	 *  Copies the low order bits of the timestamp and the randomly
 	 *  set "sequence" number out of a UUID.
 	 */
-	uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid);
+	mp->m_fixedfsid[0] =
+		((u32)sbp->sb_uuid.v1.clock_seq_hi_and_reserved << 24) |
+		((u32)sbp->sb_uuid.v1.clock_seq_low << 16) |
+		 be16_to_cpu(sbp->sb_uuid.v1.time_mid);
+	mp->m_fixedfsid[1] = be32_to_cpu(sbp->sb_uuid.v1.time_low);
 
 	mp->m_dmevmask = 0;	/* not persistent; set after each mount */
 
-- 
2.11.0

WARNING: multiple messages have this Message-ID
From: Christoph Hellwig <hch@lst.de>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Amir Goldstein <amir73il@gmail.com>,
	linux-fsdevel@vger.kernel.org
Cc: Shaohua Li <shli@kernel.org>,
	Dan Williams <dan.j.williams@intel.com>,
	David Howells <dhowells@redhat.com>,
	Steven Whitehouse <swhiteho@redhat.com>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	linux-xfs@vger.kernel.org, linux-raid@vger.kernel.org,
	linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org
Subject: [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t
Date: Mon, 15 May 2017 17:43:03 +0200	[thread overview]
Message-ID: <20170515154308.26739-13-hch@lst.de> (raw)
In-Reply-To: <20170515154308.26739-1-hch@lst.de>

Directly use the v1 intepretation of uuid_t instead.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/uuid.c      | 25 -------------------------
 fs/xfs/uuid.h      |  1 -
 fs/xfs/xfs_mount.c |  6 +++++-
 3 files changed, 5 insertions(+), 27 deletions(-)

diff --git a/fs/xfs/uuid.c b/fs/xfs/uuid.c
index 29ed78c8637b..737c186ea98b 100644
--- a/fs/xfs/uuid.c
+++ b/fs/xfs/uuid.c
@@ -17,31 +17,6 @@
  */
 #include <xfs.h>
 
-/* IRIX interpretation of an uuid_t */
-typedef struct {
-	__be32	uu_timelow;
-	__be16	uu_timemid;
-	__be16	uu_timehi;
-	__be16	uu_clockseq;
-	__be16	uu_node[3];
-} xfs_uu_t;
-
-/*
- * uuid_getnodeuniq - obtain the node unique fields of a UUID.
- *
- * This is not in any way a standard or condoned UUID function;
- * it just something that's needed for user-level file handles.
- */
-void
-uuid_getnodeuniq(uuid_t *uuid, int fsid [2])
-{
-	xfs_uu_t *uup = (xfs_uu_t *)uuid;
-
-	fsid[0] = (be16_to_cpu(uup->uu_clockseq) << 16) |
-		   be16_to_cpu(uup->uu_timemid);
-	fsid[1] = be32_to_cpu(uup->uu_timelow);
-}
-
 int
 uuid_is_nil(uuid_t *uuid)
 {
diff --git a/fs/xfs/uuid.h b/fs/xfs/uuid.h
index 86bbed071e79..5aea49bf0963 100644
--- a/fs/xfs/uuid.h
+++ b/fs/xfs/uuid.h
@@ -19,6 +19,5 @@
 #define __XFS_SUPPORT_UUID_H__
 
 extern int uuid_is_nil(uuid_t *uuid);
-extern void uuid_getnodeuniq(uuid_t *uuid, int fsid [2]);
 
 #endif	/* __XFS_SUPPORT_UUID_H__ */
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2eaf81859166..742e4a61c0bc 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -793,7 +793,11 @@ xfs_mountfs(
 	 *  Copies the low order bits of the timestamp and the randomly
 	 *  set "sequence" number out of a UUID.
 	 */
-	uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid);
+	mp->m_fixedfsid[0] =
+		((u32)sbp->sb_uuid.v1.clock_seq_hi_and_reserved << 24) |
+		((u32)sbp->sb_uuid.v1.clock_seq_low << 16) |
+		 be16_to_cpu(sbp->sb_uuid.v1.time_mid);
+	mp->m_fixedfsid[1] = be32_to_cpu(sbp->sb_uuid.v1.time_low);
 
 	mp->m_dmevmask = 0;	/* not persistent; set after each mount */
 
-- 
2.11.0

  parent reply	other threads:[~2017-05-15 15:43 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-15 15:42 cleanup UUID types V2 Christoph Hellwig
2017-05-15 15:42 ` Christoph Hellwig
2017-05-15 15:42 ` Christoph Hellwig
2017-05-15 15:42 ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 01/17] xfs: use uuid_copy() helper to abstract uuid_t Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 02/17] xfs: use uuid_be to implement the uuid_t type Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 03/17] uuid: rename uuid types Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 04/17] uuid: don't export guid_index and uuid_index Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 05/17] uuid: add the v1 layout to uuid_t Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 06/17] uuid: hoist helpers uuid_equal() and uuid_copy() from xfs Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 07/17] uuid: remove the now unused uuid_be_cmp helper Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42 ` [PATCH 08/17] uuid: hoist uuid_is_null() helper from libnvdimm Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 15:42   ` Christoph Hellwig
2017-05-15 17:48   ` Dan Williams
2017-05-15 17:48     ` Dan Williams
2017-05-15 17:48     ` Dan Williams
2017-05-15 15:43 ` [PATCH 09/17] s390/sysinfo: use uuid_is_null instead of opencoding it Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 10/17] afs: switch to use uuid_t and uuid_gen Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 11/17] uuid: remove struct uuid_v1 Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` Christoph Hellwig [this message]
2017-05-15 15:43   ` [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 13/17] md: namespace private helper names Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 14/17] xfs: use the common helper uuid_is_null() Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 15/17] block: remove blk_part_pack_uuid Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 16/17] ima/policy: switch to use uuid_t Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43 ` [PATCH 17/17] fs: switch ->s_uuid to uuid_t Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 15:43   ` Christoph Hellwig
2017-05-15 19:38   ` Amir Goldstein
2017-05-15 19:38     ` Amir Goldstein
2017-05-15 19:38     ` Amir Goldstein
2017-05-15 19:38     ` Amir Goldstein
2017-05-16 15:53     ` Christoph Hellwig
2017-05-16 15:53       ` Christoph Hellwig
2017-05-16 15:53       ` Christoph Hellwig

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=20170515154308.26739-13-hch@lst.de \
    --to=hch@lst.de \
    --cc=amir73il@gmail.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dhowells@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=shli@kernel.org \
    --cc=swhiteho@redhat.com \
    --cc=zohar@linux.vnet.ibm.com \
    --subject='Re: [PATCH 12/17] xfs: remove uuid_getnodeuniq and xfs_uu_t' \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.