From: Roland Dreier <rdreier@cisco.com>
To: torvalds@linux-foundation.org, akpm@linux-foundation.org
Cc: general@lists.openfabrics.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] please pull infiniband.git
Date: Fri, 23 May 2008 10:57:41 -0700 [thread overview]
Message-ID: <adaiqx4aooa.fsf@cisco.com> (raw)
Linus, please pull from
master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
This tree is also available from kernel.org mirrors at:
git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
This will get a fixes for various issues:
- Various trivial fixes that get rid of warnings
- A couple of oopsable bugs fixed
- Fixes for mthca/mlx4 driver bugs that stop NFS/RDMA from working
- MAINTAINERS entry for Chelsio drivers
Andrew Morton (1):
IB/mlx4: Fix uninitialized-var warning in mlx4_ib_post_send()
Dave Olson (1):
IB/mad: Fix kernel crash when .process_mad() returns SUCCESS|CONSUMED
Jack Morgenstein (1):
IPoIB: Test for NULL broadcast object in ipiob_mcast_join_finish()
Ralph Campbell (1):
IB/ipath: Fix UC receive completion opcode for RDMA WRITE with immediate
Roland Dreier (4):
IB/ipath: Fix printk format for ipath_sdma_status
RDMA/cxgb3: Fix uninitialized variable warning in iwch_post_send()
IB/mthca: Fix max_sge value returned by query_device
IB/mlx4: Fix creation of kernel QP with max number of send s/g entries
Steve Wise (1):
MAINTAINERS: Add cxgb3 and iw_cxgb3 NIC and iWARP driver entries
MAINTAINERS | 14 ++++++++++++++
drivers/infiniband/core/mad.c | 4 +++-
drivers/infiniband/hw/cxgb3/iwch_qp.c | 2 +-
drivers/infiniband/hw/ipath/ipath_sdma.c | 4 ++--
drivers/infiniband/hw/ipath/ipath_uc.c | 4 ++--
drivers/infiniband/hw/mlx4/qp.c | 15 +++++++++------
drivers/infiniband/hw/mthca/mthca_main.c | 14 +++++++++++++-
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 6 ++++++
8 files changed, 50 insertions(+), 13 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index bc1c008..907d8c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1239,6 +1239,20 @@ L: video4linux-list@redhat.com
W: http://linuxtv.org
S: Maintained
+CXGB3 ETHERNET DRIVER (CXGB3)
+P: Divy Le Ray
+M: divy@chelsio.com
+L: netdev@vger.kernel.org
+W: http://www.chelsio.com
+S: Supported
+
+CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
+P: Steve Wise
+M: swise@chelsio.com
+L: general@lists.openfabrics.org
+W: http://www.openfabrics.org
+S: Supported
+
CYBERPRO FB DRIVER
P: Russell King
M: rmk@arm.linux.org.uk
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index fbe16d5..1adf2ef 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -747,7 +747,9 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
break;
case IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED:
kmem_cache_free(ib_mad_cache, mad_priv);
- break;
+ kfree(local);
+ ret = 1;
+ goto out;
case IB_MAD_RESULT_SUCCESS:
/* Treat like an incoming receive MAD */
port_priv = ib_get_mad_port(mad_agent_priv->agent.device,
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index 79dbe5b..9926137 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -229,7 +229,7 @@ int iwch_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
struct ib_send_wr **bad_wr)
{
int err = 0;
- u8 t3_wr_flit_cnt;
+ u8 uninitialized_var(t3_wr_flit_cnt);
enum t3_wr_opcode t3_wr_opcode = 0;
enum t3_wr_flags t3_wr_flags;
struct iwch_qp *qhp;
diff --git a/drivers/infiniband/hw/ipath/ipath_sdma.c b/drivers/infiniband/hw/ipath/ipath_sdma.c
index 3697449..0a8c1b8 100644
--- a/drivers/infiniband/hw/ipath/ipath_sdma.c
+++ b/drivers/infiniband/hw/ipath/ipath_sdma.c
@@ -345,7 +345,7 @@ resched:
* state change
*/
if (jiffies > dd->ipath_sdma_abort_jiffies) {
- ipath_dbg("looping with status 0x%016llx\n",
+ ipath_dbg("looping with status 0x%08lx\n",
dd->ipath_sdma_status);
dd->ipath_sdma_abort_jiffies = jiffies + 5 * HZ;
}
@@ -615,7 +615,7 @@ void ipath_restart_sdma(struct ipath_devdata *dd)
}
spin_unlock_irqrestore(&dd->ipath_sdma_lock, flags);
if (!needed) {
- ipath_dbg("invalid attempt to restart SDMA, status 0x%016llx\n",
+ ipath_dbg("invalid attempt to restart SDMA, status 0x%08lx\n",
dd->ipath_sdma_status);
goto bail;
}
diff --git a/drivers/infiniband/hw/ipath/ipath_uc.c b/drivers/infiniband/hw/ipath/ipath_uc.c
index 7fd18e8..0596ec1 100644
--- a/drivers/infiniband/hw/ipath/ipath_uc.c
+++ b/drivers/infiniband/hw/ipath/ipath_uc.c
@@ -407,12 +407,11 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
dev->n_pkt_drops++;
goto done;
}
- /* XXX Need to free SGEs */
+ wc.opcode = IB_WC_RECV;
last_imm:
ipath_copy_sge(&qp->r_sge, data, tlen);
wc.wr_id = qp->r_wr_id;
wc.status = IB_WC_SUCCESS;
- wc.opcode = IB_WC_RECV;
wc.qp = &qp->ibqp;
wc.src_qp = qp->remote_qpn;
wc.slid = qp->remote_ah_attr.dlid;
@@ -514,6 +513,7 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
goto done;
}
wc.byte_len = qp->r_len;
+ wc.opcode = IB_WC_RECV_RDMA_WITH_IMM;
goto last_imm;
case OP(RDMA_WRITE_LAST):
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 8e02ecf..a80df22 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -333,6 +333,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
cap->max_inline_data + sizeof (struct mlx4_wqe_inline_seg)) +
send_wqe_overhead(type, qp->flags);
+ if (s > dev->dev->caps.max_sq_desc_sz)
+ return -EINVAL;
+
/*
* Hermon supports shrinking WQEs, such that a single work
* request can include multiple units of 1 << wqe_shift. This
@@ -372,9 +375,6 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
qp->sq.wqe_shift = ilog2(roundup_pow_of_two(s));
for (;;) {
- if (1 << qp->sq.wqe_shift > dev->dev->caps.max_sq_desc_sz)
- return -EINVAL;
-
qp->sq_max_wqes_per_wr = DIV_ROUND_UP(s, 1U << qp->sq.wqe_shift);
/*
@@ -395,7 +395,8 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
++qp->sq.wqe_shift;
}
- qp->sq.max_gs = ((qp->sq_max_wqes_per_wr << qp->sq.wqe_shift) -
+ qp->sq.max_gs = (min(dev->dev->caps.max_sq_desc_sz,
+ (qp->sq_max_wqes_per_wr << qp->sq.wqe_shift)) -
send_wqe_overhead(type, qp->flags)) /
sizeof (struct mlx4_wqe_data_seg);
@@ -411,7 +412,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
cap->max_send_wr = qp->sq.max_post =
(qp->sq.wqe_cnt - qp->sq_spare_wqes) / qp->sq_max_wqes_per_wr;
- cap->max_send_sge = qp->sq.max_gs;
+ cap->max_send_sge = min(qp->sq.max_gs,
+ min(dev->dev->caps.max_sq_sg,
+ dev->dev->caps.max_rq_sg));
/* We don't support inline sends for kernel QPs (yet) */
cap->max_inline_data = 0;
@@ -1457,7 +1460,7 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
unsigned ind;
int uninitialized_var(stamp);
int uninitialized_var(size);
- unsigned seglen;
+ unsigned uninitialized_var(seglen);
int i;
spin_lock_irqsave(&qp->sq.lock, flags);
diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c
index 9ebadd6..200cf13 100644
--- a/drivers/infiniband/hw/mthca/mthca_main.c
+++ b/drivers/infiniband/hw/mthca/mthca_main.c
@@ -45,6 +45,7 @@
#include "mthca_cmd.h"
#include "mthca_profile.h"
#include "mthca_memfree.h"
+#include "mthca_wqe.h"
MODULE_AUTHOR("Roland Dreier");
MODULE_DESCRIPTION("Mellanox InfiniBand HCA low-level driver");
@@ -200,7 +201,18 @@ static int mthca_dev_lim(struct mthca_dev *mdev, struct mthca_dev_lim *dev_lim)
mdev->limits.gid_table_len = dev_lim->max_gids;
mdev->limits.pkey_table_len = dev_lim->max_pkeys;
mdev->limits.local_ca_ack_delay = dev_lim->local_ca_ack_delay;
- mdev->limits.max_sg = dev_lim->max_sg;
+ /*
+ * Need to allow for worst case send WQE overhead and check
+ * whether max_desc_sz imposes a lower limit than max_sg; UD
+ * send has the biggest overhead.
+ */
+ mdev->limits.max_sg = min_t(int, dev_lim->max_sg,
+ (dev_lim->max_desc_sz -
+ sizeof (struct mthca_next_seg) -
+ (mthca_is_memfree(mdev) ?
+ sizeof (struct mthca_arbel_ud_seg) :
+ sizeof (struct mthca_tavor_ud_seg))) /
+ sizeof (struct mthca_data_seg));
mdev->limits.max_wqes = dev_lim->max_qp_sz;
mdev->limits.max_qp_init_rdma = dev_lim->max_requester_per_qp;
mdev->limits.reserved_qps = dev_lim->reserved_qps;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index d00a2c1..3f663fb 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -194,7 +194,13 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
/* Set the cached Q_Key before we attach if it's the broadcast group */
if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4,
sizeof (union ib_gid))) {
+ spin_lock_irq(&priv->lock);
+ if (!priv->broadcast) {
+ spin_unlock_irq(&priv->lock);
+ return -EAGAIN;
+ }
priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey);
+ spin_unlock_irq(&priv->lock);
priv->tx_wr.wr.ud.remote_qkey = priv->qkey;
}
next reply other threads:[~2008-05-23 17:57 UTC|newest]
Thread overview: 223+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-23 17:57 Roland Dreier [this message]
-- strict thread matches above, loose matches on Subject: below --
2015-04-22 17:08 [GIT PULL] please pull infiniband.git Roland Dreier
2015-04-02 17:27 Roland Dreier
2015-02-20 17:08 Roland Dreier
2015-02-06 21:19 Roland Dreier
2015-02-07 15:58 ` Yann Droneaud
2015-02-03 21:42 Roland Dreier
2014-12-19 0:03 Roland Dreier
2014-10-16 22:52 Roland Dreier
2014-10-20 23:28 ` Doug Ledford
2014-11-02 20:06 ` Dave Airlie
2014-11-03 7:15 ` Eli Cohen
2014-11-03 7:58 ` Sagi Grimberg
2014-09-23 21:58 Roland Dreier
2014-09-27 21:19 ` Or Gerlitz
2014-08-14 16:05 Roland Dreier
2014-07-18 20:40 Roland Dreier
2014-06-10 17:14 Roland Dreier
2014-05-02 0:09 Roland Dreier
2014-04-18 18:40 Roland Dreier
2014-04-03 15:54 Roland Dreier
2014-02-14 17:51 Roland Dreier
2014-01-24 19:43 Roland Dreier
2013-12-23 17:24 Roland Dreier
2013-11-18 18:40 Roland Dreier
2013-11-19 17:25 ` Or Gerlitz
2013-10-22 17:22 Roland Dreier
2013-10-14 18:16 Roland Dreier
2013-10-15 0:52 ` Linus Torvalds
2013-10-15 17:48 ` Roland Dreier
2013-09-04 17:03 Roland Dreier
2013-09-05 0:31 ` Stephen Rothwell
2013-09-05 16:42 ` Linus Torvalds
2013-09-05 16:43 ` David Miller
2013-08-02 16:12 Roland Dreier
2013-07-11 23:52 Roland Dreier
2013-07-09 17:36 Roland Dreier
2013-07-10 14:35 ` Sebastian Riemer
2013-07-10 14:38 ` Roland Dreier
2013-07-10 15:34 ` Bart Van Assche
2013-06-07 22:28 Roland Dreier
2013-05-08 21:20 Roland Dreier
2013-03-25 16:42 Roland Dreier
2013-04-05 15:56 ` David Woodhouse
2013-02-26 17:41 Roland Dreier
2013-02-07 1:15 Roland Dreier
2012-12-21 21:42 Roland Dreier
2012-12-11 5:59 Roland Dreier
2012-12-14 9:56 ` Roland Dreier
2012-12-14 15:36 ` Linus Torvalds
2012-12-14 23:57 ` Roland Dreier
2012-10-26 19:55 Roland Dreier
2012-10-05 2:20 Roland Dreier
2012-10-02 16:08 Roland Dreier
2012-09-17 15:57 Roland Dreier
2012-08-17 18:38 Roland Dreier
2012-07-23 16:17 Roland Dreier
2012-06-24 12:09 Roland Dreier
2012-06-25 14:11 ` Tziporet Koren
2012-05-21 1:14 Roland Dreier
2012-05-21 2:05 ` Stephen Rothwell
2012-05-21 2:35 ` Roland Dreier
2012-05-21 3:39 ` Stephen Rothwell
2012-05-21 16:07 ` Roland Dreier
2012-06-06 17:44 ` Roland Dreier
2012-04-26 17:39 Roland Dreier
2012-04-12 23:45 Roland Dreier
2012-04-11 20:07 Roland Dreier
2012-03-19 17:11 Roland Dreier
2012-03-26 21:04 ` Tziporet Koren
2012-03-26 21:13 ` Roland Dreier
2012-03-27 16:33 ` Tziporet Koren
2012-02-25 2:32 Roland Dreier
2012-02-07 17:34 Roland Dreier
2012-02-01 6:36 Roland Dreier
2012-01-06 17:38 Roland Dreier
2011-12-19 17:39 Roland Dreier
2011-11-30 17:50 Roland Dreier
2011-11-04 18:26 Roland Dreier
2011-11-01 16:54 Roland Dreier
2011-08-18 15:54 Roland Dreier
2011-07-22 19:08 Roland Dreier
2011-06-21 16:18 Roland Dreier
2011-05-26 16:46 Roland Dreier
2011-05-19 18:17 Roland Dreier
2011-03-25 19:07 Roland Dreier
2011-03-23 17:47 Roland Dreier
2011-03-23 18:15 ` Roland Dreier
2011-03-15 18:01 Roland Dreier
2011-02-17 22:26 Roland Dreier
2011-02-03 18:05 Roland Dreier
2011-01-17 21:55 Roland Dreier
2011-01-25 16:23 ` Tziporet Koren
2011-01-11 18:38 Roland Dreier
2010-12-13 21:53 Roland Dreier
2010-12-02 18:57 Roland Dreier
2010-10-26 20:52 Roland Dreier
2010-10-26 23:17 ` Roland Dreier
2010-09-27 16:31 Roland Dreier
2010-09-08 21:45 Roland Dreier
2010-08-09 22:44 Roland Dreier
2010-08-05 21:37 [GIT PULL] Please " Roland Dreier
2010-07-08 16:12 [GIT PULL] please " Roland Dreier
2010-05-27 22:18 Roland Dreier
2010-05-25 16:58 Roland Dreier
2010-05-18 3:37 Roland Dreier
2010-04-09 16:13 Roland Dreier
2010-03-12 18:56 Roland Dreier
2010-03-02 7:56 Roland Dreier
2010-03-02 11:52 ` Tziporet Koren
2010-02-10 20:03 Roland Dreier
2010-01-07 19:30 Roland Dreier
2009-12-16 7:41 Roland Dreier
2009-10-28 18:07 Roland Dreier
2009-10-09 17:08 Roland Dreier
2009-09-24 19:45 Roland Dreier
2009-09-11 4:23 Roland Dreier
2009-07-14 18:48 Roland Dreier
2009-06-23 17:39 Roland Dreier
2009-06-14 20:47 Roland Dreier
2009-05-13 22:18 Roland Dreier
2009-04-28 23:03 Roland Dreier
2009-04-09 21:58 Roland Dreier
2009-03-25 4:05 Roland Dreier
2009-01-16 23:07 Roland Dreier
2009-01-13 3:40 Roland Dreier
2008-12-30 23:38 Roland Dreier
2008-12-25 15:21 Roland Dreier
2008-12-01 18:16 Roland Dreier
2008-11-04 21:37 Roland Dreier
2008-10-23 4:37 Roland Dreier
2008-10-10 0:48 Roland Dreier
2008-09-17 16:40 Roland Dreier
2008-08-19 22:03 Roland Dreier
2008-08-12 20:55 Roland Dreier
2008-08-07 21:15 Roland Dreier
2008-07-26 21:02 Roland Dreier
2008-07-24 15:41 Roland Dreier
2008-07-15 6:51 Roland Dreier
2008-07-08 21:41 Roland Dreier
2008-06-23 19:23 Roland Dreier
2008-06-18 22:38 Roland Dreier
2008-06-09 20:10 Roland Dreier
2008-06-06 18:26 Roland Dreier
2008-05-07 19:17 Roland Dreier
2008-05-05 23:00 Roland Dreier
2008-05-01 3:46 Roland Dreier
2008-04-29 20:57 Roland Dreier
2008-04-22 1:26 Roland Dreier
2008-04-17 14:53 Roland Dreier
2008-04-19 8:16 ` Ingo Molnar
2008-03-21 21:02 Roland Dreier
2008-03-13 20:15 Roland Dreier
2008-03-11 4:33 Roland Dreier
2008-02-29 22:06 Roland Dreier
2008-02-27 0:27 Roland Dreier
2008-02-19 18:51 Roland Dreier
2008-02-18 20:35 Roland Dreier
2008-02-14 23:31 Roland Dreier
2008-02-11 22:25 Roland Dreier
2008-02-08 23:16 Roland Dreier
2008-02-05 4:49 Roland Dreier
2008-01-16 22:46 Roland Dreier
2008-01-08 20:25 Roland Dreier
2007-12-13 17:39 Roland Dreier
2007-12-01 4:03 Roland Dreier
2007-11-27 6:21 Roland Dreier
2007-11-14 16:23 Roland Dreier
2007-10-30 22:17 Roland Dreier
2007-10-23 16:30 Roland Dreier
2007-09-23 20:06 Roland Dreier
2007-07-30 20:18 Roland Dreier
2007-07-21 4:56 Roland Dreier
2007-07-18 22:52 Roland Dreier
2007-07-12 23:07 Roland Dreier
2007-07-03 3:50 Roland Dreier
2007-06-22 16:26 Roland Dreier
2007-06-18 15:49 Roland Dreier
2007-06-08 14:22 Roland Dreier
2007-05-29 23:20 Roland Dreier
2007-05-25 22:06 Roland Dreier
2007-05-21 20:51 Roland Dreier
2007-05-14 21:18 Roland Dreier
2007-05-09 1:06 Roland Dreier
2007-05-07 4:19 Roland Dreier
2007-04-26 18:42 Roland Dreier
2007-04-16 21:16 Roland Dreier
2007-04-12 17:52 Roland Dreier
2007-04-10 17:43 Roland Dreier
2007-03-28 17:25 Roland Dreier
2007-03-22 21:39 Roland Dreier
2007-03-08 23:50 Roland Dreier
2007-02-26 21:05 Roland Dreier
2007-02-16 23:48 Roland Dreier
2007-02-13 0:18 Roland Dreier
2007-02-05 10:15 Roland Dreier
2007-01-23 15:10 Roland Dreier
2007-01-09 22:18 Roland Dreier
2007-01-08 4:29 Roland Dreier
2006-12-16 4:57 Roland Dreier
2006-11-29 23:37 Roland Dreier
2006-11-20 18:44 Roland Dreier
2006-11-13 17:42 Roland Dreier
2006-11-02 22:28 Roland Dreier
2006-10-17 21:44 Roland Dreier
2006-10-10 21:03 Roland Dreier
2006-10-02 21:57 Roland Dreier
2006-09-28 18:20 [GIT PULL] Please " Roland Dreier
2006-09-22 22:37 [GIT PULL] please " Roland Dreier
2006-09-14 20:59 Roland Dreier
2006-09-01 0:29 Roland Dreier
2006-08-23 23:25 Roland Dreier
2006-08-24 1:09 ` Greg KH
2006-08-03 18:07 Roland Dreier
2006-07-24 16:50 Roland Dreier
2006-06-22 16:22 Roland Dreier
2006-06-18 11:49 Roland Dreier
2006-06-13 18:19 [git pull] " Roland Dreier
2006-06-05 17:21 Roland Dreier
2006-05-26 0:09 Roland Dreier
2006-05-23 21:05 Roland Dreier
2006-05-18 19:33 [git pull] Please " Roland Dreier
2006-05-12 22:07 Roland Dreier
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=adaiqx4aooa.fsf@cisco.com \
--to=rdreier@cisco.com \
--cc=akpm@linux-foundation.org \
--cc=general@lists.openfabrics.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).