All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Wang <yun.wang@profitbricks.com>
To: Roland Dreier <roland@kernel.org>,
	Sean Hefty <sean.hefty@intel.com>,
	linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org,
	hal@dev.mellanox.co.il
Cc: Tom Tucker <tom@opengridcomputing.com>,
	Steve Wise <swise@opengridcomputing.com>,
	Hoang-Nam Nguyen <hnguyen@de.ibm.com>,
	Christoph Raisch <raisch@de.ibm.com>,
	Mike Marciniszyn <infinipath@intel.com>,
	Eli Cohen <eli@mellanox.com>,
	Faisal Latif <faisal.latif@intel.com>,
	Jack Morgenstein <jackm@dev.mellanox.co.il>,
	Or Gerlitz <ogerlitz@mellanox.com>,
	Haggai Eran <haggaie@mellanox.com>,
	Ira Weiny <ira.weiny@intel.com>, Tom Talpey <tom@talpey.com>,
	Jason Gunthorpe <jgunthorpe@obsidianresearch.com>,
	Doug Ledford <dledford@redhat.com>,
	Michael Wang <yun.wang@profitbricks.com>
Subject: [PATCH v5 05/27] IB/Verbs: Reform IB-core sa_query
Date: Mon, 20 Apr 2015 10:34:23 +0200	[thread overview]
Message-ID: <5534BA0F.4040606@profitbricks.com> (raw)
In-Reply-To: <5534B8C9.506@profitbricks.com>


Use raw management helpers to reform IB-core sa_query.

Cc: Hal Rosenstock <hal@dev.mellanox.co.il>
Cc: Steve Wise <swise@opengridcomputing.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: Doug Ledford <dledford@redhat.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Michael Wang <yun.wang@profitbricks.com>
---
 drivers/infiniband/core/sa_query.c | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c
index c38f030..60dc7aa 100644
--- a/drivers/infiniband/core/sa_query.c
+++ b/drivers/infiniband/core/sa_query.c
@@ -450,7 +450,7 @@ static void ib_sa_event(struct ib_event_handler *handler, struct ib_event *event
 		struct ib_sa_port *port =
 			&sa_dev->port[event->element.port_num - sa_dev->start_port];
 
-		if (rdma_port_get_link_layer(handler->device, port->port_num) != IB_LINK_LAYER_INFINIBAND)
+		if (WARN_ON(!rdma_tech_ib(handler->device, port->port_num)))
 			return;
 
 		spin_lock_irqsave(&port->ah_lock, flags);
@@ -540,7 +540,7 @@ int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
 	ah_attr->port_num = port_num;
 	ah_attr->static_rate = rec->rate;
 
-	force_grh = rdma_port_get_link_layer(device, port_num) == IB_LINK_LAYER_ETHERNET;
+	force_grh = rdma_tech_iboe(device, port_num);
 
 	if (rec->hop_limit > 1 || force_grh) {
 		ah_attr->ah_flags = IB_AH_GRH;
@@ -1153,9 +1153,7 @@ static void ib_sa_add_one(struct ib_device *device)
 {
 	struct ib_sa_device *sa_dev;
 	int s, e, i;
-
-	if (rdma_node_get_transport(device->node_type) != RDMA_TRANSPORT_IB)
-		return;
+	int count = 0;
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH)
 		s = e = 0;
@@ -1175,7 +1173,7 @@ static void ib_sa_add_one(struct ib_device *device)
 
 	for (i = 0; i <= e - s; ++i) {
 		spin_lock_init(&sa_dev->port[i].ah_lock);
-		if (rdma_port_get_link_layer(device, i + 1) != IB_LINK_LAYER_INFINIBAND)
+		if (!rdma_tech_ib(device, i + 1))
 			continue;
 
 		sa_dev->port[i].sm_ah    = NULL;
@@ -1189,8 +1187,13 @@ static void ib_sa_add_one(struct ib_device *device)
 			goto err;
 
 		INIT_WORK(&sa_dev->port[i].update_task, update_sm_ah);
+
+		count++;
 	}
 
+	if (!count)
+		goto free;
+
 	ib_set_client_data(device, &sa_client, sa_dev);
 
 	/*
@@ -1204,19 +1207,21 @@ static void ib_sa_add_one(struct ib_device *device)
 	if (ib_register_event_handler(&sa_dev->event_handler))
 		goto err;
 
-	for (i = 0; i <= e - s; ++i)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	for (i = 0; i <= e - s; ++i) {
+		if (rdma_tech_ib(device, i + 1))
 			update_sm_ah(&sa_dev->port[i].update_task);
+	}
 
 	return;
 
 err:
-	while (--i >= 0)
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND)
+	while (--i >= 0) {
+		if (rdma_tech_ib(device, i + 1))
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
+	}
 
+free:
 	kfree(sa_dev);
-
 	return;
 }
 
@@ -1233,7 +1238,7 @@ static void ib_sa_remove_one(struct ib_device *device)
 	flush_workqueue(ib_wq);
 
 	for (i = 0; i <= sa_dev->end_port - sa_dev->start_port; ++i) {
-		if (rdma_port_get_link_layer(device, i + 1) == IB_LINK_LAYER_INFINIBAND) {
+		if (rdma_tech_ib(device, i + 1)) {
 			ib_unregister_mad_agent(sa_dev->port[i].agent);
 			if (sa_dev->port[i].sm_ah)
 				kref_put(&sa_dev->port[i].sm_ah->ref, free_sm_ah);
-- 
2.1.0

  parent reply	other threads:[~2015-04-20  8:34 UTC|newest]

Thread overview: 173+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-20  8:28 [PATCH v5 00/27] IB/Verbs: IB Management Helpers Michael Wang
2015-04-20  8:28 ` Michael Wang
2015-04-20  8:32 ` [PATCH v5 01/27] IB/Verbs: Implement new callback query_transport() Michael Wang
2015-04-22  0:04   ` ira.weiny
     [not found]   ` <5534B981.1030302-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22 15:02     ` Doug Ledford
2015-04-22 15:02       ` Doug Ledford
     [not found]       ` <1429714975.45956.113.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-04-22 15:21         ` Devesh Sharma
2015-04-22 15:21           ` Devesh Sharma
     [not found]           ` <EE7902D3F51F404C82415C4803930ACD5DC446F3-DWYeeINJQrxExQ8dmkPuX0M9+F4ksjoh@public.gmane.org>
2015-04-22 16:22             ` ira.weiny
2015-04-22 16:22               ` ira.weiny
2015-04-22 16:42           ` Doug Ledford
2015-04-23  7:13         ` Michael Wang
2015-04-23  7:13           ` Michael Wang
2015-04-20  8:33 ` [PATCH v5 03/27] IB/Verbs: Reform IB-core mad/agent/user_mad Michael Wang
2015-04-22  0:05   ` ira.weiny
2015-04-20  8:34 ` Michael Wang [this message]
2015-04-22  0:05   ` [PATCH v5 05/27] IB/Verbs: Reform IB-core sa_query ira.weiny
2015-04-20  8:35 ` [PATCH v5 07/27] IB/Verbs: Reform IB-ulp ipoib Michael Wang
     [not found]   ` <5534BA43.6060400-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:06     ` ira.weiny
2015-04-22  0:06       ` ira.weiny
2015-04-20  8:35 ` [PATCH v5 08/27] IB/Verbs: Reform IB-ulp xprtrdma Michael Wang
2015-04-22  0:06   ` ira.weiny
2015-04-20  8:37 ` [PATCH v5 12/27] IB/Verbs: Reform mcast related part in IB-core cma Michael Wang
     [not found]   ` <5534BACF.3080700-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:07     ` ira.weiny
2015-04-22  0:07       ` ira.weiny
2015-04-20  8:38 ` [PATCH v5 14/27] IB/Verbs: Reform cma_acquire_dev() Michael Wang
     [not found]   ` <5534BAFF.5030107-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-21  6:15     ` Devesh Sharma
2015-04-21  6:15       ` Devesh Sharma
2015-04-21  8:08       ` Michael Wang
2015-04-22  0:08     ` ira.weiny
2015-04-22  0:08       ` ira.weiny
2015-04-20  8:39 ` [PATCH v5 16/27] IB/Verbs: Use management helper cap_ib_mad() Michael Wang
2015-04-22  0:09   ` ira.weiny
2015-04-20  8:40 ` [PATCH v5 18/27] IB/Verbs: Use management helper cap_ib_cm() Michael Wang
     [not found]   ` <5534BB64.10402-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:09     ` ira.weiny
2015-04-22  0:09       ` ira.weiny
2015-04-20  8:40 ` [PATCH v5 19/27] IB/Verbs: Use management helper cap_iw_cm() Michael Wang
     [not found]   ` <5534BB7B.4020601-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-20 14:00     ` Steve Wise
2015-04-20 14:00       ` Steve Wise
2015-04-20 15:16       ` Michael Wang
2015-04-20 15:51         ` Tom Tucker
     [not found]           ` <5535209E.3020807-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2015-04-20 16:19             ` Jason Gunthorpe
2015-04-20 16:19               ` Jason Gunthorpe
     [not found]               ` <20150420161927.GB7676-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-04-20 16:39                 ` Tom Tucker
2015-04-20 16:39                   ` Tom Tucker
2015-04-21  7:39             ` Michael Wang
2015-04-21  7:39               ` Michael Wang
     [not found]               ` <5535FE9F.8070809-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-21 15:06                 ` Tom Tucker
2015-04-21 15:06                   ` Tom Tucker
2015-04-22  0:10   ` ira.weiny
     [not found] ` <5534B8C9.506-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-20  8:32   ` [PATCH v5 02/27] IB/Verbs: Implement raw management helpers Michael Wang
2015-04-20  8:32     ` Michael Wang
     [not found]     ` <5534B9A0.9010303-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:05       ` ira.weiny
2015-04-22  0:05         ` ira.weiny
2015-04-20  8:33   ` [PATCH v5 04/27] IB/Verbs: Reform IB-core cm Michael Wang
2015-04-20  8:33     ` Michael Wang
     [not found]     ` <5534B9E9.1020108-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-20 17:04       ` Hal Rosenstock
2015-04-20 17:04         ` Hal Rosenstock
2015-04-21  7:42         ` Michael Wang
2015-04-22  0:05     ` ira.weiny
2015-04-20  8:34   ` [PATCH v5 06/27] IB/Verbs: Reform IB-core multicast Michael Wang
2015-04-20  8:34     ` Michael Wang
2015-04-22  0:06     ` ira.weiny
2015-04-20  8:36   ` [PATCH v5 09/27] IB/Verbs: Reform IB-core verbs/uverbs_cmd/sysfs Michael Wang
2015-04-20  8:36     ` Michael Wang
     [not found]     ` <5534BA7C.2010600-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-21 23:19       ` ira.weiny
2015-04-21 23:19         ` ira.weiny
     [not found]         ` <20150421231958.GA15893-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-04-22  7:38           ` Michael Wang
2015-04-22  7:38             ` Michael Wang
     [not found]             ` <55375011.7010805-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22 16:28               ` ira.weiny
2015-04-22 16:28                 ` ira.weiny
2015-04-23  9:25                 ` Michael Wang
2015-04-20  8:36   ` [PATCH v5 10/27] IB/Verbs: Reform cm related part in IB-core cma/ucm Michael Wang
2015-04-20  8:36     ` Michael Wang
2015-04-22  0:07     ` ira.weiny
2015-04-20  8:37   ` [PATCH v5 11/27] IB/Verbs: Reform route related part in IB-core cma Michael Wang
2015-04-20  8:37     ` Michael Wang
2015-04-22  0:07     ` ira.weiny
2015-04-20  8:38   ` [PATCH v5 13/27] IB/Verbs: Reserve legacy transport type in 'dev_addr' Michael Wang
2015-04-20  8:38     ` Michael Wang
     [not found]     ` <5534BAE8.9010805-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-21  5:58       ` Devesh Sharma
2015-04-21  5:58         ` Devesh Sharma
     [not found]         ` <EE7902D3F51F404C82415C4803930ACD5DC44144-DWYeeINJQrxExQ8dmkPuX0M9+F4ksjoh@public.gmane.org>
2015-04-21  8:05           ` Michael Wang
2015-04-21  8:05             ` Michael Wang
2015-04-22  0:08       ` ira.weiny
2015-04-22  0:08         ` ira.weiny
2015-04-20  8:38   ` [PATCH v5 15/27] IB/Verbs: Reform rest part in IB-core cma Michael Wang
2015-04-20  8:38     ` Michael Wang
     [not found]     ` <5534BB19.9000003-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:08       ` ira.weiny
2015-04-22  0:08         ` ira.weiny
2015-04-20  8:39   ` [PATCH v5 17/27] IB/Verbs: Use management helper cap_ib_smi() Michael Wang
2015-04-20  8:39     ` Michael Wang
2015-04-22  0:09     ` ira.weiny
2015-04-20  8:40   ` [PATCH v5 20/27] IB/Verbs: Use management helper cap_ib_sa() Michael Wang
2015-04-20  8:40     ` Michael Wang
2015-04-22  0:10     ` ira.weiny
2015-04-20  8:41   ` [PATCH v5 21/27] IB/Verbs: Use management helper cap_ib_mcast() Michael Wang
2015-04-20  8:41     ` Michael Wang
2015-04-22  0:10     ` ira.weiny
2015-04-20  8:41   ` [PATCH v5 22/27] IB/Verbs: Use management helper cap_ipoib() Michael Wang
2015-04-20  8:41     ` Michael Wang
2015-04-22  0:11     ` ira.weiny
     [not found]     ` <5534BBC2.4010902-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  5:40       ` Jason Gunthorpe
2015-04-22  5:40         ` Jason Gunthorpe
     [not found]         ` <20150422054058.GB29609-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-04-22  8:49           ` Michael Wang
2015-04-22  8:49             ` Michael Wang
     [not found]             ` <553760A8.2090802-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22 16:45               ` ira.weiny
2015-04-22 16:45                 ` ira.weiny
2015-04-22 16:54                 ` Hefty, Sean
2015-04-23  9:31                 ` Michael Wang
2015-04-22 17:24               ` Jason Gunthorpe
2015-04-22 17:24                 ` Jason Gunthorpe
     [not found]                 ` <20150422172455.GF19500-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-04-23  7:53                   ` Michael Wang
2015-04-23  7:53                     ` Michael Wang
2015-04-20  8:42   ` [PATCH v5 24/27] IB/Verbs: Use management helper cap_af_ib() Michael Wang
2015-04-20  8:42     ` Michael Wang
2015-04-22  0:11     ` ira.weiny
2015-04-20  8:43   ` [PATCH v5 26/27] IB/Verbs: Clean up rdma_ib_or_iboe() Michael Wang
2015-04-20  8:43     ` Michael Wang
     [not found]     ` <5534BC2E.40307-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:12       ` ira.weiny
2015-04-22  0:12         ` ira.weiny
2015-04-20  8:43   ` [PATCH v5 27/27] IB/Verbs: Cleanup rdma_node_get_transport() Michael Wang
2015-04-20  8:43     ` Michael Wang
     [not found]     ` <5534BC47.6080706-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-22  0:13       ` ira.weiny
2015-04-22  0:13         ` ira.weiny
2015-04-21 23:36   ` [PATCH v5 00/27] IB/Verbs: IB Management Helpers Liran Liss
2015-04-21 23:36     ` Liran Liss
     [not found]     ` <DB4PR05MB0863E9CCCD1BEA34F244EE2CB1EF0-xsq7jzH2t6llkovD9u25SNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-04-22  2:41       ` ira.weiny
2015-04-22  2:41         ` ira.weiny
     [not found]         ` <20150422024123.GA18675-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2015-04-22  8:32           ` Michael Wang
2015-04-22  8:32             ` Michael Wang
     [not found]         ` <DB4PR05MB086335365371E756B789FE84B1EE0@DB4PR05MB0863.eurprd05.prod.outlook.com>
2015-04-22 16:40           ` Jason Gunthorpe
     [not found]             ` <DB4PR05MB08633B2B2E3BA32752EE8098B1EC0@DB4PR05MB0863.eurprd05.prod.outlook.com>
     [not found]               ` <DB4PR05MB08633B2B2E3BA32752EE8098B1EC0-xsq7jzH2t6llkovD9u25SNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-04-24 16:42                 ` Jason Gunthorpe
2015-04-24 16:42                   ` Jason Gunthorpe
     [not found]                   ` <20150424164226.GB9305-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-04-27 19:10                     ` ira.weiny
2015-04-27 19:10                       ` ira.weiny
2015-04-22 16:40         ` Hefty, Sean
2015-04-22 16:40           ` Hefty, Sean
2015-04-24 14:49           ` Liran Liss
2015-04-24 14:49             ` Liran Liss
2015-04-22 14:59       ` Doug Ledford
2015-04-22 14:59         ` Doug Ledford
2015-04-22 16:57         ` Jason Gunthorpe
2015-04-23  8:36           ` Michael Wang
     [not found]         ` <1429714792.45956.110.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-04-22 17:10           ` ira.weiny
2015-04-22 17:10             ` ira.weiny
2015-04-23  9:36             ` Michael Wang
     [not found]             ` <DB4PR05MB08630282DEFFFB181A525B67B1EC0@DB4PR05MB0863.eurprd05.prod.outlook.com>
     [not found]               ` <DB4PR05MB08630282DEFFFB181A525B67B1EC0-xsq7jzH2t6llkovD9u25SNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-04-27 20:58                 ` ira.weiny
2015-04-27 20:58                   ` ira.weiny
2015-04-22 16:46       ` Dave Goodell (dgoodell)
2015-04-22 16:46         ` Dave Goodell (dgoodell)
2015-04-22  8:30     ` Michael Wang
2015-04-22 16:16       ` Liran Liss
2015-04-22 16:16         ` Liran Liss
2015-04-23  7:33         ` Michael Wang
     [not found]           ` <5538A034.4030904-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2015-04-24 14:44             ` Liran Liss
2015-04-24 14:44               ` Liran Liss
     [not found]               ` <DB4PR05MB08635737AF7A40F3F82B7628B1EC0-xsq7jzH2t6llkovD9u25SNqRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2015-04-24 15:07                 ` Michael Wang
2015-04-24 15:07                   ` Michael Wang
2015-04-27 19:22               ` ira.weiny
2015-04-20  8:42 ` [PATCH v5 23/27] IB/Verbs: Use management helper cap_read_multi_sge() Michael Wang
2015-04-22  0:11   ` ira.weiny
2015-04-20  8:43 ` [PATCH v5 25/27] IB/Verbs: Use management helper cap_eth_ah() Michael Wang
2015-04-22  0:11   ` ira.weiny
2015-04-21  5:41 ` [PATCH v5 00/27] IB/Verbs: IB Management Helpers Devesh Sharma
2015-04-21  5:41   ` Devesh Sharma
     [not found]   ` <EE7902D3F51F404C82415C4803930ACD5DC44113-DWYeeINJQrxExQ8dmkPuX0M9+F4ksjoh@public.gmane.org>
2015-04-21  7:46     ` Michael Wang
2015-04-21  7:46       ` Michael Wang
2015-04-21 11:03       ` Devesh Sharma
2015-04-21 11:03         ` Devesh Sharma
2015-04-21 15:56         ` Michael Wang
2015-04-22  0:28 ` ira.weiny
2015-04-22  7:44   ` Michael Wang

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=5534BA0F.4040606@profitbricks.com \
    --to=yun.wang@profitbricks.com \
    --cc=dledford@redhat.com \
    --cc=eli@mellanox.com \
    --cc=faisal.latif@intel.com \
    --cc=haggaie@mellanox.com \
    --cc=hal@dev.mellanox.co.il \
    --cc=hnguyen@de.ibm.com \
    --cc=infinipath@intel.com \
    --cc=ira.weiny@intel.com \
    --cc=jackm@dev.mellanox.co.il \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=ogerlitz@mellanox.com \
    --cc=raisch@de.ibm.com \
    --cc=roland@kernel.org \
    --cc=sean.hefty@intel.com \
    --cc=swise@opengridcomputing.com \
    --cc=tom@opengridcomputing.com \
    --cc=tom@talpey.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.