oe-kbuild-all.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH 1/3] usb: gadget: function: 9pfs
       [not found] <20240116-ml-topic-u9p-v1-1-ad8c306f9a4e@pengutronix.de>
@ 2024-01-16 11:34 ` kernel test robot
  2024-01-16 12:04 ` kernel test robot
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-01-16 11:34 UTC (permalink / raw)
  To: Michael Grzeschik, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Christian Schoenebeck, Jonathan Corbet,
	Greg Kroah-Hartman
  Cc: llvm, oe-kbuild-all, v9fs, linux-doc, linux-kernel, linux-usb,
	kernel, Michael Grzeschik

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 052d534373b7ed33712a63d5e17b2b6cdbce84fd]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-Grzeschik/usb-gadget-function-9pfs/20240116-095914
base:   052d534373b7ed33712a63d5e17b2b6cdbce84fd
patch link:    https://lore.kernel.org/r/20240116-ml-topic-u9p-v1-1-ad8c306f9a4e%40pengutronix.de
patch subject: [PATCH 1/3] usb: gadget: function: 9pfs
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20240116/202401161937.9wbYLZdb-lkp@intel.com/config)
compiler: clang version 18.0.0git (https://github.com/llvm/llvm-project 9bde5becb44ea071f5e1fa1f5d4071dc8788b18c)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240116/202401161937.9wbYLZdb-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401161937.9wbYLZdb-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/usb/gadget/function/f_9pfs.c:197:4: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat]
     196 |         p9_debug(P9_DEBUG_TRANS, "mux %p got %u bytes\n", usb9pfs,
         |                                              ~~
         |                                              %zu
     197 |                  rc.capacity - rc.offset);
         |                  ^~~~~~~~~~~~~~~~~~~~~~~
   include/net/9p/9p.h:55:36: note: expanded from macro 'p9_debug'
      55 |         _p9_debug(level, __func__, fmt, ##__VA_ARGS__)
         |                                    ~~~    ^~~~~~~~~~~
>> drivers/usb/gadget/function/f_9pfs.c:286:6: warning: no previous prototype for function 'disable_endpoints' [-Wmissing-prototypes]
     286 | void disable_endpoints(struct usb_composite_dev *cdev,
         |      ^
   drivers/usb/gadget/function/f_9pfs.c:286:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     286 | void disable_endpoints(struct usb_composite_dev *cdev,
         | ^
         | static 
>> drivers/usb/gadget/function/f_9pfs.c:825:12: warning: no previous prototype for function 'usb9pfs_modinit' [-Wmissing-prototypes]
     825 | int __init usb9pfs_modinit(void)
         |            ^
   drivers/usb/gadget/function/f_9pfs.c:825:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     825 | int __init usb9pfs_modinit(void)
         | ^
         | static 
>> drivers/usb/gadget/function/f_9pfs.c:838:13: warning: no previous prototype for function 'usb9pfs_modexit' [-Wmissing-prototypes]
     838 | void __exit usb9pfs_modexit(void)
         |             ^
   drivers/usb/gadget/function/f_9pfs.c:838:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     838 | void __exit usb9pfs_modexit(void)
         | ^
         | static 
   4 warnings generated.


vim +197 drivers/usb/gadget/function/f_9pfs.c

   184	
   185	static struct p9_req_t *usb9pfs_rx_header(struct f_usb9pfs *usb9pfs, struct usb_request *req)
   186	{
   187		struct p9_req_t *p9_rx_req;
   188		struct p9_fcall	rc;
   189		int ret;
   190	
   191		/* start by reading header */
   192		rc.sdata = req->buf;
   193		rc.offset = 0;
   194		rc.capacity = rc.size = P9_HDRSZ;
   195	
   196		p9_debug(P9_DEBUG_TRANS, "mux %p got %u bytes\n", usb9pfs,
 > 197			 rc.capacity - rc.offset);
   198	
   199		ret = p9_parse_header(&rc, &rc.size, NULL, NULL, 0);
   200		if (ret) {
   201			p9_debug(P9_DEBUG_ERROR,
   202				 "error parsing header: %d\n", ret);
   203			return NULL;
   204		}
   205	
   206		p9_debug(P9_DEBUG_TRANS,
   207			 "mux %p pkt: size: %d bytes tag: %d\n",
   208			 usb9pfs, rc.size, rc.tag);
   209	
   210		p9_rx_req = p9_tag_lookup(usb9pfs->client, rc.tag);
   211		if (!p9_rx_req || (p9_rx_req->status != REQ_STATUS_SENT)) {
   212			p9_debug(P9_DEBUG_ERROR, "Unexpected packet tag %d\n", rc.tag);
   213			return NULL;
   214		}
   215	
   216		if (rc.size > p9_rx_req->rc.capacity) {
   217			p9_debug(P9_DEBUG_ERROR,
   218				 "requested packet size too big: %d for tag %d with capacity %zd\n",
   219				 rc.size, rc.tag, p9_rx_req->rc.capacity);
   220			return NULL;
   221		}
   222	
   223		if (!p9_rx_req->rc.sdata) {
   224			p9_debug(P9_DEBUG_ERROR,
   225				 "No recv fcall for tag %d (req %p), disconnecting!\n",
   226				 rc.tag, p9_rx_req);
   227			p9_req_put(usb9pfs->client, p9_rx_req);
   228			return NULL;
   229		}
   230	
   231		return p9_rx_req;
   232	}
   233	
   234	static void usb9pfs_rx_complete(struct usb_ep *ep, struct usb_request *req)
   235	{
   236		struct f_usb9pfs *usb9pfs = ep->driver_data;
   237		struct usb_composite_dev *cdev = usb9pfs->function.config->cdev;
   238		struct p9_req_t *p9_rx_req;
   239		unsigned long flags;
   240	
   241		switch (req->status) {
   242		case 0:				/* normal completion? */
   243			spin_lock_irqsave(&usb9pfs->req_lock, flags);
   244			p9_rx_req = usb9pfs_rx_header(usb9pfs, req);
   245			if (!p9_rx_req) {
   246				spin_unlock_irqrestore(&usb9pfs->req_lock, flags);
   247				goto free_req;
   248			}
   249	
   250			memcpy(p9_rx_req->rc.sdata, req->buf, req->actual);
   251			p9_rx_req->rc.size = req->actual;
   252	
   253			p9_client_cb(usb9pfs->client, p9_rx_req, REQ_STATUS_RCVD);
   254			p9_req_put(usb9pfs->client, p9_rx_req);
   255	
   256			usb9pfs->p9_tx_req = NULL;
   257	
   258			usb9pfs_transmit(usb9pfs);
   259	
   260			spin_unlock_irqrestore(&usb9pfs->req_lock, flags);
   261	
   262			return;
   263	free_req:
   264		default:
   265			dev_err(&cdev->gadget->dev, "%s usb9pfs complete --> %d, %d/%d\n",
   266				ep->name, req->status, req->actual, req->length);
   267			usb_ep_free_request(ep == usb9pfs->in_ep ?
   268					    usb9pfs->out_ep : usb9pfs->in_ep,
   269					    req->context);
   270			free_ep_req(ep, req);
   271			return;
   272		}
   273	
   274		p9_client_cb(usb9pfs->client, p9_rx_req, REQ_STATUS_ERROR);
   275	}
   276	
   277	static void disable_ep(struct usb_composite_dev *cdev, struct usb_ep *ep)
   278	{
   279		int value;
   280	
   281		value = usb_ep_disable(ep);
   282		if (value < 0)
   283			dev_info(&cdev->gadget->dev, "disable %s --> %d\n", ep->name, value);
   284	}
   285	
 > 286	void disable_endpoints(struct usb_composite_dev *cdev,
   287			struct usb_ep *in, struct usb_ep *out,
   288			struct usb_ep *iso_in, struct usb_ep *iso_out)
   289	{
   290		disable_ep(cdev, in);
   291		disable_ep(cdev, out);
   292	}
   293	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] usb: gadget: function: 9pfs
       [not found] <20240116-ml-topic-u9p-v1-1-ad8c306f9a4e@pengutronix.de>
  2024-01-16 11:34 ` [PATCH 1/3] usb: gadget: function: 9pfs kernel test robot
@ 2024-01-16 12:04 ` kernel test robot
  2024-01-16 19:51 ` kernel test robot
  2024-01-17  0:02 ` kernel test robot
  3 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-01-16 12:04 UTC (permalink / raw)
  To: Michael Grzeschik, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Christian Schoenebeck, Jonathan Corbet,
	Greg Kroah-Hartman
  Cc: oe-kbuild-all, v9fs, linux-doc, linux-kernel, linux-usb, kernel,
	Michael Grzeschik

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 052d534373b7ed33712a63d5e17b2b6cdbce84fd]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-Grzeschik/usb-gadget-function-9pfs/20240116-095914
base:   052d534373b7ed33712a63d5e17b2b6cdbce84fd
patch link:    https://lore.kernel.org/r/20240116-ml-topic-u9p-v1-1-ad8c306f9a4e%40pengutronix.de
patch subject: [PATCH 1/3] usb: gadget: function: 9pfs
config: loongarch-allyesconfig (https://download.01.org/0day-ci/archive/20240116/202401161948.no61pNtO-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240116/202401161948.no61pNtO-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401161948.no61pNtO-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from drivers/usb/gadget/function/f_9pfs.c:21:
   drivers/usb/gadget/function/f_9pfs.c: In function 'usb9pfs_rx_header':
>> drivers/usb/gadget/function/f_9pfs.c:196:34: warning: format '%u' expects argument of type 'unsigned int', but argument 5 has type 'size_t' {aka 'long unsigned int'} [-Wformat=]
     196 |         p9_debug(P9_DEBUG_TRANS, "mux %p got %u bytes\n", usb9pfs,
         |                                  ^~~~~~~~~~~~~~~~~~~~~~~
     197 |                  rc.capacity - rc.offset);
         |                  ~~~~~~~~~~~~~~~~~~~~~~~
         |                              |
         |                              size_t {aka long unsigned int}
   include/net/9p/9p.h:55:36: note: in definition of macro 'p9_debug'
      55 |         _p9_debug(level, __func__, fmt, ##__VA_ARGS__)
         |                                    ^~~
   drivers/usb/gadget/function/f_9pfs.c:196:47: note: format string is defined here
     196 |         p9_debug(P9_DEBUG_TRANS, "mux %p got %u bytes\n", usb9pfs,
         |                                              ~^
         |                                               |
         |                                               unsigned int
         |                                              %lu
   drivers/usb/gadget/function/f_9pfs.c: At top level:
>> drivers/usb/gadget/function/f_9pfs.c:286:6: warning: no previous prototype for 'disable_endpoints' [-Wmissing-prototypes]
     286 | void disable_endpoints(struct usb_composite_dev *cdev,
         |      ^~~~~~~~~~~~~~~~~
>> drivers/usb/gadget/function/f_9pfs.c:825:12: warning: no previous prototype for 'usb9pfs_modinit' [-Wmissing-prototypes]
     825 | int __init usb9pfs_modinit(void)
         |            ^~~~~~~~~~~~~~~
>> drivers/usb/gadget/function/f_9pfs.c:838:13: warning: no previous prototype for 'usb9pfs_modexit' [-Wmissing-prototypes]
     838 | void __exit usb9pfs_modexit(void)
         |             ^~~~~~~~~~~~~~~


vim +196 drivers/usb/gadget/function/f_9pfs.c

   184	
   185	static struct p9_req_t *usb9pfs_rx_header(struct f_usb9pfs *usb9pfs, struct usb_request *req)
   186	{
   187		struct p9_req_t *p9_rx_req;
   188		struct p9_fcall	rc;
   189		int ret;
   190	
   191		/* start by reading header */
   192		rc.sdata = req->buf;
   193		rc.offset = 0;
   194		rc.capacity = rc.size = P9_HDRSZ;
   195	
 > 196		p9_debug(P9_DEBUG_TRANS, "mux %p got %u bytes\n", usb9pfs,
   197			 rc.capacity - rc.offset);
   198	
   199		ret = p9_parse_header(&rc, &rc.size, NULL, NULL, 0);
   200		if (ret) {
   201			p9_debug(P9_DEBUG_ERROR,
   202				 "error parsing header: %d\n", ret);
   203			return NULL;
   204		}
   205	
   206		p9_debug(P9_DEBUG_TRANS,
   207			 "mux %p pkt: size: %d bytes tag: %d\n",
   208			 usb9pfs, rc.size, rc.tag);
   209	
   210		p9_rx_req = p9_tag_lookup(usb9pfs->client, rc.tag);
   211		if (!p9_rx_req || (p9_rx_req->status != REQ_STATUS_SENT)) {
   212			p9_debug(P9_DEBUG_ERROR, "Unexpected packet tag %d\n", rc.tag);
   213			return NULL;
   214		}
   215	
   216		if (rc.size > p9_rx_req->rc.capacity) {
   217			p9_debug(P9_DEBUG_ERROR,
   218				 "requested packet size too big: %d for tag %d with capacity %zd\n",
   219				 rc.size, rc.tag, p9_rx_req->rc.capacity);
   220			return NULL;
   221		}
   222	
   223		if (!p9_rx_req->rc.sdata) {
   224			p9_debug(P9_DEBUG_ERROR,
   225				 "No recv fcall for tag %d (req %p), disconnecting!\n",
   226				 rc.tag, p9_rx_req);
   227			p9_req_put(usb9pfs->client, p9_rx_req);
   228			return NULL;
   229		}
   230	
   231		return p9_rx_req;
   232	}
   233	
   234	static void usb9pfs_rx_complete(struct usb_ep *ep, struct usb_request *req)
   235	{
   236		struct f_usb9pfs *usb9pfs = ep->driver_data;
   237		struct usb_composite_dev *cdev = usb9pfs->function.config->cdev;
   238		struct p9_req_t *p9_rx_req;
   239		unsigned long flags;
   240	
   241		switch (req->status) {
   242		case 0:				/* normal completion? */
   243			spin_lock_irqsave(&usb9pfs->req_lock, flags);
   244			p9_rx_req = usb9pfs_rx_header(usb9pfs, req);
   245			if (!p9_rx_req) {
   246				spin_unlock_irqrestore(&usb9pfs->req_lock, flags);
   247				goto free_req;
   248			}
   249	
   250			memcpy(p9_rx_req->rc.sdata, req->buf, req->actual);
   251			p9_rx_req->rc.size = req->actual;
   252	
   253			p9_client_cb(usb9pfs->client, p9_rx_req, REQ_STATUS_RCVD);
   254			p9_req_put(usb9pfs->client, p9_rx_req);
   255	
   256			usb9pfs->p9_tx_req = NULL;
   257	
   258			usb9pfs_transmit(usb9pfs);
   259	
   260			spin_unlock_irqrestore(&usb9pfs->req_lock, flags);
   261	
   262			return;
   263	free_req:
   264		default:
   265			dev_err(&cdev->gadget->dev, "%s usb9pfs complete --> %d, %d/%d\n",
   266				ep->name, req->status, req->actual, req->length);
   267			usb_ep_free_request(ep == usb9pfs->in_ep ?
   268					    usb9pfs->out_ep : usb9pfs->in_ep,
   269					    req->context);
   270			free_ep_req(ep, req);
   271			return;
   272		}
   273	
   274		p9_client_cb(usb9pfs->client, p9_rx_req, REQ_STATUS_ERROR);
   275	}
   276	
   277	static void disable_ep(struct usb_composite_dev *cdev, struct usb_ep *ep)
   278	{
   279		int value;
   280	
   281		value = usb_ep_disable(ep);
   282		if (value < 0)
   283			dev_info(&cdev->gadget->dev, "disable %s --> %d\n", ep->name, value);
   284	}
   285	
 > 286	void disable_endpoints(struct usb_composite_dev *cdev,
   287			struct usb_ep *in, struct usb_ep *out,
   288			struct usb_ep *iso_in, struct usb_ep *iso_out)
   289	{
   290		disable_ep(cdev, in);
   291		disable_ep(cdev, out);
   292	}
   293	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] usb: gadget: function: 9pfs
       [not found] <20240116-ml-topic-u9p-v1-1-ad8c306f9a4e@pengutronix.de>
  2024-01-16 11:34 ` [PATCH 1/3] usb: gadget: function: 9pfs kernel test robot
  2024-01-16 12:04 ` kernel test robot
@ 2024-01-16 19:51 ` kernel test robot
  2024-01-17  0:02 ` kernel test robot
  3 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-01-16 19:51 UTC (permalink / raw)
  To: Michael Grzeschik, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Christian Schoenebeck, Jonathan Corbet,
	Greg Kroah-Hartman
  Cc: Paul Gazzillo, Necip Fazil Yildiran, oe-kbuild-all, v9fs,
	linux-doc, linux-kernel, linux-usb, kernel, Michael Grzeschik

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 052d534373b7ed33712a63d5e17b2b6cdbce84fd]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-Grzeschik/usb-gadget-function-9pfs/20240116-095914
base:   052d534373b7ed33712a63d5e17b2b6cdbce84fd
patch link:    https://lore.kernel.org/r/20240116-ml-topic-u9p-v1-1-ad8c306f9a4e%40pengutronix.de
patch subject: [PATCH 1/3] usb: gadget: function: 9pfs
config: alpha-kismet-CONFIG_NET_9P-CONFIG_USB_F_9PFS-0-0 (https://download.01.org/0day-ci/archive/20240117/202401170342.VrKVlN1a-lkp@intel.com/config)
reproduce: (https://download.01.org/0day-ci/archive/20240117/202401170342.VrKVlN1a-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401170342.VrKVlN1a-lkp@intel.com/

kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for NET_9P when selected by USB_F_9PFS
   
   WARNING: unmet direct dependencies detected for NET_9P
     Depends on [n]: NET [=n]
     Selected by [y]:
     - USB_F_9PFS [=y] && USB_SUPPORT [=y] && USB_GADGET [=y]

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/3] usb: gadget: function: 9pfs
       [not found] <20240116-ml-topic-u9p-v1-1-ad8c306f9a4e@pengutronix.de>
                   ` (2 preceding siblings ...)
  2024-01-16 19:51 ` kernel test robot
@ 2024-01-17  0:02 ` kernel test robot
  3 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-01-17  0:02 UTC (permalink / raw)
  To: Michael Grzeschik, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Christian Schoenebeck, Jonathan Corbet,
	Greg Kroah-Hartman
  Cc: oe-kbuild-all, v9fs, linux-doc, linux-kernel, linux-usb, kernel,
	Michael Grzeschik

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 052d534373b7ed33712a63d5e17b2b6cdbce84fd]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-Grzeschik/usb-gadget-function-9pfs/20240116-095914
base:   052d534373b7ed33712a63d5e17b2b6cdbce84fd
patch link:    https://lore.kernel.org/r/20240116-ml-topic-u9p-v1-1-ad8c306f9a4e%40pengutronix.de
patch subject: [PATCH 1/3] usb: gadget: function: 9pfs
config: microblaze-randconfig-r132-20240117 (https://download.01.org/0day-ci/archive/20240117/202401170734.7rHBG2LF-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240117/202401170734.7rHBG2LF-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401170734.7rHBG2LF-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/usb/gadget/function/f_9pfs.c:825:12: sparse: sparse: symbol 'usb9pfs_modinit' was not declared. Should it be static?
>> drivers/usb/gadget/function/f_9pfs.c:838:13: sparse: sparse: symbol 'usb9pfs_modexit' was not declared. Should it be static?

vim +/usb9pfs_modinit +825 drivers/usb/gadget/function/f_9pfs.c

   824	
 > 825	int __init usb9pfs_modinit(void)
   826	{
   827		int ret;
   828	
   829		INIT_LIST_HEAD(&usbg_function_list);
   830	
   831		ret = usb_function_register(&usb9pfsusb_func);
   832		if (!ret)
   833			v9fs_register_trans(&p9_usbg_trans);
   834	
   835		return ret;
   836	}
   837	
 > 838	void __exit usb9pfs_modexit(void)
   839	{
   840		usb_function_unregister(&usb9pfsusb_func);
   841		v9fs_unregister_trans(&p9_usbg_trans);
   842	}
   843	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-01-17  0:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20240116-ml-topic-u9p-v1-1-ad8c306f9a4e@pengutronix.de>
2024-01-16 11:34 ` [PATCH 1/3] usb: gadget: function: 9pfs kernel test robot
2024-01-16 12:04 ` kernel test robot
2024-01-16 19:51 ` kernel test robot
2024-01-17  0:02 ` kernel test robot

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).