All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1486597679.11028.1.camel@primarydata.com>

diff --git a/a/1.txt b/N1/1.txt
index 1d6c92f..8f31d70 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,39 +1,79 @@
-T24gV2VkLCAyMDE3LTAyLTA4IGF0IDE3OjAwIC0wNTAwLCBDaHVjayBMZXZlciB3cm90ZToNCj4g
-VGhlIHRyYW5zcG9ydCBsb2NrIGlzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSB4cHJ0X2FkanVzdF9j
-d25kKCkgY2FsbA0KPiBpbiB4c191ZHBfdGltZXIsIGJ1dCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZv
-ciBhY2Nlc3NpbmcgdGhlDQo+IHJxX3JlcGx5X2J5dGVzX3JlY3ZkIG9yIHRrX3N0YXR1cyBmaWVs
-ZHMuIEl0IGlzIGNvcnJlY3QgdG8gc3VibGltYXRlDQo+IHRoZSBsb2NrIGludG8gVURQJ3MgeHNf
-dWRwX3RpbWVyIG1ldGhvZCwgd2hlcmUgaXQgaXMgcmVxdWlyZWQuDQo+IA0KPiBUaGUgLT50aW1l
-ciBtZXRob2QgaGFzIHRvIHRha2UgdGhlIHRyYW5zcG9ydCBsb2NrIGlmIG5lZWRlZCwgYnV0IGl0
-DQo+IGNhbiBub3cgc2xlZXAgc2FmZWx5LCBvciBldmVuIGNhbGwgYmFjayBpbnRvIHRoZSBSUEMg
-c2NoZWR1bGVyLg0KPiANCj4gVGhpcyBpcyBtb3JlIGEgY2xlYW4tdXAgdGhhbiBhIGZpeCwgYnV0
-IHRoZSAiaXNzdWUiIHdhcyBpbnRyb2R1Y2VkDQo+IGJ5IG15IHRyYW5zcG9ydCBzd2l0Y2ggcGF0
-Y2hlcyBiYWNrIGluIDIwMDUuDQo+IA0KPiBGaXhlczogNDZjMGVlOGJjNGFkICgiUlBDOiBzZXBh
-cmF0ZSB4cHJ0X3RpbWVyIGltcGxlbWVudGF0aW9ucyIpDQo+IFNpZ25lZC1vZmYtYnk6IENodWNr
-IExldmVyIDxjaHVjay5sZXZlckBvcmFjbGUuY29tPg0KPiAtLS0NCj4gwqBuZXQvc3VucnBjL3hw
-cnQuY8KgwqDCoMKgwqB8wqDCoMKgwqAyIC0tDQo+IMKgbmV0L3N1bnJwYy94cHJ0c29jay5jIHzC
-oMKgwqDCoDIgKysNCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl
-dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnQuYyBiL25ldC9zdW5y
-cGMveHBydC5jDQo+IGluZGV4IDlhNmJlMDMuLmI1MzBhMjggMTAwNjQ0DQo+IC0tLSBhL25ldC9z
-dW5ycGMveHBydC5jDQo+ICsrKyBiL25ldC9zdW5ycGMveHBydC5jDQo+IEBAIC04OTcsMTMgKzg5
-NywxMSBAQCBzdGF0aWMgdm9pZCB4cHJ0X3RpbWVyKHN0cnVjdCBycGNfdGFzayAqdGFzaykNCj4g
-wqAJCXJldHVybjsNCj4gwqAJZHByaW50aygiUlBDOiAlNXUgeHBydF90aW1lclxuIiwgdGFzay0+
-dGtfcGlkKTsNCj4gwqANCj4gLQlzcGluX2xvY2tfYmgoJnhwcnQtPnRyYW5zcG9ydF9sb2NrKTsN
-Cj4gwqAJaWYgKCFyZXEtPnJxX3JlcGx5X2J5dGVzX3JlY3ZkKSB7DQo+IMKgCQlpZiAoeHBydC0+
-b3BzLT50aW1lcikNCj4gwqAJCQl4cHJ0LT5vcHMtPnRpbWVyKHhwcnQsIHRhc2spOw0KPiDCoAl9
-IGVsc2UNCj4gwqAJCXRhc2stPnRrX3N0YXR1cyA9IDA7DQo+IC0Jc3Bpbl91bmxvY2tfYmgoJnhw
-cnQtPnRyYW5zcG9ydF9sb2NrKTsNCj4gwqB9DQo+IMKgDQo+IMKgLyoqDQo+IGRpZmYgLS1naXQg
-YS9uZXQvc3VucnBjL3hwcnRzb2NrLmMgYi9uZXQvc3VucnBjL3hwcnRzb2NrLmMNCj4gaW5kZXgg
-YWYzOTJkOS4uZDliYjY0NCAxMDA2NDQNCj4gLS0tIGEvbmV0L3N1bnJwYy94cHJ0c29jay5jDQo+
-ICsrKyBiL25ldC9zdW5ycGMveHBydHNvY2suYw0KPiBAQCAtMTczNCw3ICsxNzM0LDkgQEAgc3Rh
-dGljIHZvaWQgeHNfdWRwX3NldF9idWZmZXJfc2l6ZShzdHJ1Y3QNCj4gcnBjX3hwcnQgKnhwcnQs
-IHNpemVfdCBzbmRzaXplLCBzaXplX3QNCj4gwqAgKi8NCj4gwqBzdGF0aWMgdm9pZCB4c191ZHBf
-dGltZXIoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sNCj4gKnRhc2spDQo+
-IMKgew0KPiArCXNwaW5fbG9ja19iaCgmeHBydC0+dHJhbnNwb3J0X2xvY2spOw0KPiDCoAl4cHJ0
-X2FkanVzdF9jd25kKHhwcnQsIHRhc2ssIC1FVElNRURPVVQpOw0KPiArCXNwaW5fdW5sb2NrX2Jo
-KCZ4cHJ0LT50cmFuc3BvcnRfbG9jayk7DQo+IMKgfQ0KPiDCoA0KPiDCoHN0YXRpYyB1bnNpZ25l
-ZCBzaG9ydCB4c19nZXRfcmFuZG9tX3BvcnQodm9pZCkNCj4gDQoNClRoYW5rcyEgR29vZCBjbGVh
-bnVwLi4uDQoNClRyb25kDQoNCi0tIA0KDQoNCg0KCQ0KCQ0KDQoNClRyb25kIE15a2xlYnVzdA0K
-UHJpbmNpcGFsIFN5c3RlbSBBcmNoaXRlY3QNCjQzMDAgRWwgQ2FtaW5vIFJlYWwgfCBTdWl0ZSAx
-MDANCkxvcyBBbHRvcywgQ0HCoMKgOTQwMjINClc6IDY1MC00MjItMzgwMA0KQzogODAxLTkyMS00
-NTgzwqANCnd3dy5wcmltYXJ5ZGF0YS5jb20NCg0KDQoNCg0K
+On Wed, 2017-02-08 at 17:00 -0500, Chuck Lever wrote:
+> The transport lock is needed to protect the xprt_adjust_cwnd() call
+> in xs_udp_timer, but it is not necessary for accessing the
+> rq_reply_bytes_recvd or tk_status fields. It is correct to sublimate
+> the lock into UDP's xs_udp_timer method, where it is required.
+> 
+> The ->timer method has to take the transport lock if needed, but it
+> can now sleep safely, or even call back into the RPC scheduler.
+> 
+> This is more a clean-up than a fix, but the "issue" was introduced
+> by my transport switch patches back in 2005.
+> 
+> Fixes: 46c0ee8bc4ad ("RPC: separate xprt_timer implementations")
+> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+> ---
+>  net/sunrpc/xprt.c     |    2 --
+>  net/sunrpc/xprtsock.c |    2 ++
+>  2 files changed, 2 insertions(+), 2 deletions(-)
+> 
+> diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
+> index 9a6be03..b530a28 100644
+> --- a/net/sunrpc/xprt.c
+> +++ b/net/sunrpc/xprt.c
+> @@ -897,13 +897,11 @@ static void xprt_timer(struct rpc_task *task)
+>  		return;
+>  	dprintk("RPC: %5u xprt_timer\n", task->tk_pid);
+>  
+> -	spin_lock_bh(&xprt->transport_lock);
+>  	if (!req->rq_reply_bytes_recvd) {
+>  		if (xprt->ops->timer)
+>  			xprt->ops->timer(xprt, task);
+>  	} else
+>  		task->tk_status = 0;
+> -	spin_unlock_bh(&xprt->transport_lock);
+>  }
+>  
+>  /**
+> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
+> index af392d9..d9bb644 100644
+> --- a/net/sunrpc/xprtsock.c
+> +++ b/net/sunrpc/xprtsock.c
+> @@ -1734,7 +1734,9 @@ static void xs_udp_set_buffer_size(struct
+> rpc_xprt *xprt, size_t sndsize, size_t
+>   */
+>  static void xs_udp_timer(struct rpc_xprt *xprt, struct rpc_task
+> *task)
+>  {
+> +	spin_lock_bh(&xprt->transport_lock);
+>  	xprt_adjust_cwnd(xprt, task, -ETIMEDOUT);
+> +	spin_unlock_bh(&xprt->transport_lock);
+>  }
+>  
+>  static unsigned short xs_get_random_port(void)
+> 
+
+Thanks! Good cleanup...
+
+Trond
+
+-- 
+
+
+
+	
+	
+
+
+Trond Myklebust
+Principal System Architect
+4300 El Camino Real | Suite 100
+Los Altos, CA  94022
+W: 650-422-3800
+C: 801-921-4583 
+www.primarydata.com
+
+
+
+
+N‹§²æìr¸›yúèšØb²X¬¶Ç§vØ^–)Þº{.nÇ+‰·¥Š{±­ÙšŠ{ayº\x1dʇڙë,j\a­¢f£¢·hš‹»öì\x17/oSc¾™Ú³9˜uÀ¦æå‰È&jw¨®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿïêäz¹Þ–Šàþf£¢·hšˆ§~ˆmš
diff --git a/a/content_digest b/N1/content_digest
index 79fd4e4..da8a83b 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,52 +1,93 @@
  "ref\020170208214854.7152.83331.stgit@manet.1015granger.net\0"
  "ref\020170208220051.7152.67740.stgit@manet.1015granger.net\0"
- "From\0Trond Myklebust <trondmy@primarydata.com>\0"
+ "ref\020170208220051.7152.67740.stgit-FYjufvaPoItvLzlybtyyYzGyq/o6K9yX@public.gmane.org\0"
+ "From\0Trond Myklebust <trondmy-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>\0"
  "Subject\0Re: [PATCH v3 09/12] sunrpc: Allow xprt->ops->timer method to sleep\0"
  "Date\0Wed, 8 Feb 2017 23:48:02 +0000\0"
- "To\0anna.schumaker@netapp.com <anna.schumaker@netapp.com>"
- " chuck.lever@oracle.com <chuck.lever@oracle.com>\0"
- "Cc\0linux-rdma@vger.kernel.org <linux-rdma@vger.kernel.org>"
- " linux-nfs@vger.kernel.org <linux-nfs@vger.kernel.org>\0"
+ "To\0anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org <anna.schumaker-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>"
+ " chuck.lever-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org <chuck.lever-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>\0"
+ "Cc\0linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>"
+ " linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>\0"
  "\00:1\0"
  "b\0"
- "T24gV2VkLCAyMDE3LTAyLTA4IGF0IDE3OjAwIC0wNTAwLCBDaHVjayBMZXZlciB3cm90ZToNCj4g\n"
- "VGhlIHRyYW5zcG9ydCBsb2NrIGlzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSB4cHJ0X2FkanVzdF9j\n"
- "d25kKCkgY2FsbA0KPiBpbiB4c191ZHBfdGltZXIsIGJ1dCBpdCBpcyBub3QgbmVjZXNzYXJ5IGZv\n"
- "ciBhY2Nlc3NpbmcgdGhlDQo+IHJxX3JlcGx5X2J5dGVzX3JlY3ZkIG9yIHRrX3N0YXR1cyBmaWVs\n"
- "ZHMuIEl0IGlzIGNvcnJlY3QgdG8gc3VibGltYXRlDQo+IHRoZSBsb2NrIGludG8gVURQJ3MgeHNf\n"
- "dWRwX3RpbWVyIG1ldGhvZCwgd2hlcmUgaXQgaXMgcmVxdWlyZWQuDQo+IA0KPiBUaGUgLT50aW1l\n"
- "ciBtZXRob2QgaGFzIHRvIHRha2UgdGhlIHRyYW5zcG9ydCBsb2NrIGlmIG5lZWRlZCwgYnV0IGl0\n"
- "DQo+IGNhbiBub3cgc2xlZXAgc2FmZWx5LCBvciBldmVuIGNhbGwgYmFjayBpbnRvIHRoZSBSUEMg\n"
- "c2NoZWR1bGVyLg0KPiANCj4gVGhpcyBpcyBtb3JlIGEgY2xlYW4tdXAgdGhhbiBhIGZpeCwgYnV0\n"
- "IHRoZSAiaXNzdWUiIHdhcyBpbnRyb2R1Y2VkDQo+IGJ5IG15IHRyYW5zcG9ydCBzd2l0Y2ggcGF0\n"
- "Y2hlcyBiYWNrIGluIDIwMDUuDQo+IA0KPiBGaXhlczogNDZjMGVlOGJjNGFkICgiUlBDOiBzZXBh\n"
- "cmF0ZSB4cHJ0X3RpbWVyIGltcGxlbWVudGF0aW9ucyIpDQo+IFNpZ25lZC1vZmYtYnk6IENodWNr\n"
- "IExldmVyIDxjaHVjay5sZXZlckBvcmFjbGUuY29tPg0KPiAtLS0NCj4gwqBuZXQvc3VucnBjL3hw\n"
- "cnQuY8KgwqDCoMKgwqB8wqDCoMKgwqAyIC0tDQo+IMKgbmV0L3N1bnJwYy94cHJ0c29jay5jIHzC\n"
- "oMKgwqDCoDIgKysNCj4gwqAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl\n"
- "dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnQuYyBiL25ldC9zdW5y\n"
- "cGMveHBydC5jDQo+IGluZGV4IDlhNmJlMDMuLmI1MzBhMjggMTAwNjQ0DQo+IC0tLSBhL25ldC9z\n"
- "dW5ycGMveHBydC5jDQo+ICsrKyBiL25ldC9zdW5ycGMveHBydC5jDQo+IEBAIC04OTcsMTMgKzg5\n"
- "NywxMSBAQCBzdGF0aWMgdm9pZCB4cHJ0X3RpbWVyKHN0cnVjdCBycGNfdGFzayAqdGFzaykNCj4g\n"
- "wqAJCXJldHVybjsNCj4gwqAJZHByaW50aygiUlBDOiAlNXUgeHBydF90aW1lclxuIiwgdGFzay0+\n"
- "dGtfcGlkKTsNCj4gwqANCj4gLQlzcGluX2xvY2tfYmgoJnhwcnQtPnRyYW5zcG9ydF9sb2NrKTsN\n"
- "Cj4gwqAJaWYgKCFyZXEtPnJxX3JlcGx5X2J5dGVzX3JlY3ZkKSB7DQo+IMKgCQlpZiAoeHBydC0+\n"
- "b3BzLT50aW1lcikNCj4gwqAJCQl4cHJ0LT5vcHMtPnRpbWVyKHhwcnQsIHRhc2spOw0KPiDCoAl9\n"
- "IGVsc2UNCj4gwqAJCXRhc2stPnRrX3N0YXR1cyA9IDA7DQo+IC0Jc3Bpbl91bmxvY2tfYmgoJnhw\n"
- "cnQtPnRyYW5zcG9ydF9sb2NrKTsNCj4gwqB9DQo+IMKgDQo+IMKgLyoqDQo+IGRpZmYgLS1naXQg\n"
- "YS9uZXQvc3VucnBjL3hwcnRzb2NrLmMgYi9uZXQvc3VucnBjL3hwcnRzb2NrLmMNCj4gaW5kZXgg\n"
- "YWYzOTJkOS4uZDliYjY0NCAxMDA2NDQNCj4gLS0tIGEvbmV0L3N1bnJwYy94cHJ0c29jay5jDQo+\n"
- "ICsrKyBiL25ldC9zdW5ycGMveHBydHNvY2suYw0KPiBAQCAtMTczNCw3ICsxNzM0LDkgQEAgc3Rh\n"
- "dGljIHZvaWQgeHNfdWRwX3NldF9idWZmZXJfc2l6ZShzdHJ1Y3QNCj4gcnBjX3hwcnQgKnhwcnQs\n"
- "IHNpemVfdCBzbmRzaXplLCBzaXplX3QNCj4gwqAgKi8NCj4gwqBzdGF0aWMgdm9pZCB4c191ZHBf\n"
- "dGltZXIoc3RydWN0IHJwY194cHJ0ICp4cHJ0LCBzdHJ1Y3QgcnBjX3Rhc2sNCj4gKnRhc2spDQo+\n"
- "IMKgew0KPiArCXNwaW5fbG9ja19iaCgmeHBydC0+dHJhbnNwb3J0X2xvY2spOw0KPiDCoAl4cHJ0\n"
- "X2FkanVzdF9jd25kKHhwcnQsIHRhc2ssIC1FVElNRURPVVQpOw0KPiArCXNwaW5fdW5sb2NrX2Jo\n"
- "KCZ4cHJ0LT50cmFuc3BvcnRfbG9jayk7DQo+IMKgfQ0KPiDCoA0KPiDCoHN0YXRpYyB1bnNpZ25l\n"
- "ZCBzaG9ydCB4c19nZXRfcmFuZG9tX3BvcnQodm9pZCkNCj4gDQoNClRoYW5rcyEgR29vZCBjbGVh\n"
- "bnVwLi4uDQoNClRyb25kDQoNCi0tIA0KDQoNCg0KCQ0KCQ0KDQoNClRyb25kIE15a2xlYnVzdA0K\n"
- "UHJpbmNpcGFsIFN5c3RlbSBBcmNoaXRlY3QNCjQzMDAgRWwgQ2FtaW5vIFJlYWwgfCBTdWl0ZSAx\n"
- "MDANCkxvcyBBbHRvcywgQ0HCoMKgOTQwMjINClc6IDY1MC00MjItMzgwMA0KQzogODAxLTkyMS00\n"
- NTgzwqANCnd3dy5wcmltYXJ5ZGF0YS5jb20NCg0KDQoNCg0K
+ "On Wed, 2017-02-08 at 17:00 -0500, Chuck Lever wrote:\n"
+ "> The transport lock is needed to protect the xprt_adjust_cwnd() call\n"
+ "> in xs_udp_timer, but it is not necessary for accessing the\n"
+ "> rq_reply_bytes_recvd or tk_status fields. It is correct to sublimate\n"
+ "> the lock into UDP's xs_udp_timer method, where it is required.\n"
+ "> \n"
+ "> The ->timer method has to take the transport lock if needed, but it\n"
+ "> can now sleep safely, or even call back into the RPC scheduler.\n"
+ "> \n"
+ "> This is more a clean-up than a fix, but the \"issue\" was introduced\n"
+ "> by my transport switch patches back in 2005.\n"
+ "> \n"
+ "> Fixes: 46c0ee8bc4ad (\"RPC: separate xprt_timer implementations\")\n"
+ "> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>\n"
+ "> ---\n"
+ "> \303\202\302\240net/sunrpc/xprt.c\303\202\302\240\303\202\302\240\303\202\302\240\303\202\302\240\303\202\302\240|\303\202\302\240\303\202\302\240\303\202\302\240\303\202\302\2402 --\n"
+ "> \303\202\302\240net/sunrpc/xprtsock.c |\303\202\302\240\303\202\302\240\303\202\302\240\303\202\302\2402 ++\n"
+ "> \303\202\302\2402 files changed, 2 insertions(+), 2 deletions(-)\n"
+ "> \n"
+ "> diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c\n"
+ "> index 9a6be03..b530a28 100644\n"
+ "> --- a/net/sunrpc/xprt.c\n"
+ "> +++ b/net/sunrpc/xprt.c\n"
+ "> @@ -897,13 +897,11 @@ static void xprt_timer(struct rpc_task *task)\n"
+ "> \303\202\302\240\t\treturn;\n"
+ "> \303\202\302\240\tdprintk(\"RPC: %5u xprt_timer\\n\", task->tk_pid);\n"
+ "> \303\202\302\240\n"
+ "> -\tspin_lock_bh(&xprt->transport_lock);\n"
+ "> \303\202\302\240\tif (!req->rq_reply_bytes_recvd) {\n"
+ "> \303\202\302\240\t\tif (xprt->ops->timer)\n"
+ "> \303\202\302\240\t\t\txprt->ops->timer(xprt, task);\n"
+ "> \303\202\302\240\t} else\n"
+ "> \303\202\302\240\t\ttask->tk_status = 0;\n"
+ "> -\tspin_unlock_bh(&xprt->transport_lock);\n"
+ "> \303\202\302\240}\n"
+ "> \303\202\302\240\n"
+ "> \303\202\302\240/**\n"
+ "> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c\n"
+ "> index af392d9..d9bb644 100644\n"
+ "> --- a/net/sunrpc/xprtsock.c\n"
+ "> +++ b/net/sunrpc/xprtsock.c\n"
+ "> @@ -1734,7 +1734,9 @@ static void xs_udp_set_buffer_size(struct\n"
+ "> rpc_xprt *xprt, size_t sndsize, size_t\n"
+ "> \303\202\302\240 */\n"
+ "> \303\202\302\240static void xs_udp_timer(struct rpc_xprt *xprt, struct rpc_task\n"
+ "> *task)\n"
+ "> \303\202\302\240{\n"
+ "> +\tspin_lock_bh(&xprt->transport_lock);\n"
+ "> \303\202\302\240\txprt_adjust_cwnd(xprt, task, -ETIMEDOUT);\n"
+ "> +\tspin_unlock_bh(&xprt->transport_lock);\n"
+ "> \303\202\302\240}\n"
+ "> \303\202\302\240\n"
+ "> \303\202\302\240static unsigned short xs_get_random_port(void)\n"
+ "> \n"
+ "\n"
+ "Thanks! Good cleanup...\n"
+ "\n"
+ "Trond\n"
+ "\n"
+ "-- \n"
+ "\n"
+ "\n"
+ "\n"
+ "\t\n"
+ "\t\n"
+ "\n"
+ "\n"
+ "Trond Myklebust\n"
+ "Principal System Architect\n"
+ "4300 El Camino Real | Suite 100\n"
+ "Los Altos, CA\303\202\302\240\303\202\302\24094022\n"
+ "W: 650-422-3800\n"
+ "C: 801-921-4583\303\202\302\240\n"
+ "www.primarydata.com\n"
+ "\n"
+ "\n"
+ "\n"
+ "\n"
+ "N\302\213\302\247\302\262\303\246\303\254r\302\270\302\233y\303\272\303\250\302\232\303\230b\302\262X\302\254\302\266\303\207\302\247v\303\230^\302\226)\303\236\302\272{.n\303\207+\302\211\302\267\302\245\302\212{\302\261\302\255\303\231\302\232\302\212{ay\302\272\035\303\212\302\207\303\232\302\231\303\253,j\a\302\255\302\242f\302\243\302\242\302\267h\302\232\302\213\302\273\303\266\303\254\027/oSc\302\276\302\231\303\232\302\2639\302\230u\303\200\302\246\303\246\303\245\302\211\303\210&jw\302\250\302\256\003(\302\255\303\251\302\232\302\216\302\212\303\235\302\242j\"\302\235\303\272\032\302\266\033m\302\247\303\277\303\257\302\201\303\252\303\244z\302\271\303\236\302\226\302\212\303\240\303\276f\302\243\302\242\302\267h\302\232\302\210\302\247~\302\210m\302\232"
 
-ae26f1be87696754c5d0b0f425e3b65d3fb4b74f9c2b706ebc41d9e04904a58c
+748eeaacd5dab0bee236df6f5bf6e7509461eeadff21291b7aceafbda9a7e071

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.