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

diff --git a/a/1.txt b/N1/1.txt
index 44d6982..251f8b4 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,65 +1,59 @@
-On Mon, 2017-09-25 at 11:06 +0800, Ming Lei wrote:
-> On Fri, Sep 22, 2017 at 05:54:48PM +0000, Bart Van Assche wrote:
-> > On Sat, 2017-09-23 at 01:44 +0800, Ming Lei wrote:
-> > > On Fri, Sep 22, 2017 at 03:06:16PM +0000, Bart Van Assche wrote:
-> > > > On Fri, 2017-09-22 at 09:35 +0800, Ming Lei wrote:
-> > > > > +		/*
-> > > > > +		 * blk-mq's SCHED_RESTART can cover this requeue, so
-> > > > > +		 * we needn't to deal with it by DELAY_REQUEUE. More
-> > > > > +		 * importantly, we have to return DM_MAPIO_REQUEUE
-> > > > > +		 * so that blk-mq can get the queue busy feedback,
-> > > > > +		 * otherwise I/O merge can be hurt.
-> > > > > +		 */
-> > > > > +		if (q->mq_ops)
-> > > > > +			return DM_MAPIO_REQUEUE;
-> > > > > +		else
-> > > > > +			return DM_MAPIO_DELAY_REQUEUE;
-> > > > >  	}
-> > > > 
-> > > > This patch is inferior to what I posted because this patch does not avoid
-> > > > the delay if multiple LUNs are associated with the same SCSI host. Consider
-> > > > e.g. the following configuration:
-> > > > * A single SCSI host with two SCSI LUNs associated to that host, e.g. /dev/sda
-> > > >   and /dev/sdb.
-> > > > * A dm-mpath instance has been created on top of /dev/sda.
-> > > > If all tags are in use by requests queued to /dev/sdb, no dm requests are in
-> > > > progress and a request is submitted against the dm-mpath device then the
-> > > > blk_get_request(q, GFP_ATOMIC) call will fail. The request will be requeued
-> > > > and the queue will be rerun after a delay.
-> > > > 
-> > > > My patch does not introduce a delay in this case.
-> > > 
-> > > That delay may not matter because SCHED_RESTART will run queue just
-> > > after one request is completed.
-> > 
-> > Did you understand what I wrote? SCHED_RESTART will be set for /dev/sdb but not
-> > for the dm queue. That's what I was trying to explain to you in my previous e-mail.
-> 
-> The patch I posted in this thread will set SCHED_RESTART for dm queue.
-
-This is not how communication on an open source mailing list is assumed to work.
-If you know that you are wrong you are assumed either to shut up or to admit it.
-And if you disagree with the detailed explanation I gave you are assumed to
-explain in detail why you think it is wrong.
-
-> > > There is at least one issue with get_request(GFP_NOIO): AIO
-> > > performance regression may not be caused, or even AIO may not
-> > > be possible. For example, user runs fio(libaio, randread, single
-> > > job, queue depth: 64, device: dm-mpath disk), if get_request(GFP_NOIO)
-> > > often blocks because of shared tags or out of tag, the actual queue
-> > > depth won't reach 64 at all, and may be just 1 in the worst case.
-> > > Once the actual queue depth is decreased much, random I/O performance
-> > > should be hurt a lot.
-> > 
-> > That's why we need to modify scsi_lld_busy(). If scsi_lld_busy() will be
-> > modified as I proposed in a previous e-mail then it will become very
-> > unlikely that no tag is available when blk_get_request() is called. With that
-> > scsi_lld_busy() modification it is even possible that we don't need to modify
-> > the dm-mpath driver.
-> 
-> Then post out a whole solution, and I'd like to take a look and test.
-
-I will do that as soon as I have the time to run some measurements. The rest of
-this week I will be traveling.
-
-Bart.
+T24gTW9uLCAyMDE3LTA5LTI1IGF0IDExOjA2ICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gT24g
+RnJpLCBTZXAgMjIsIDIwMTcgYXQgMDU6NTQ6NDhQTSArMDAwMCwgQmFydCBWYW4gQXNzY2hlIHdy
+b3RlOg0KPiA+IE9uIFNhdCwgMjAxNy0wOS0yMyBhdCAwMTo0NCArMDgwMCwgTWluZyBMZWkgd3Jv
+dGU6DQo+ID4gPiBPbiBGcmksIFNlcCAyMiwgMjAxNyBhdCAwMzowNjoxNlBNICswMDAwLCBCYXJ0
+IFZhbiBBc3NjaGUgd3JvdGU6DQo+ID4gPiA+IE9uIEZyaSwgMjAxNy0wOS0yMiBhdCAwOTozNSAr
+MDgwMCwgTWluZyBMZWkgd3JvdGU6DQo+ID4gPiA+ID4gKwkJLyoNCj4gPiA+ID4gPiArCQkgKiBi
+bGstbXEncyBTQ0hFRF9SRVNUQVJUIGNhbiBjb3ZlciB0aGlzIHJlcXVldWUsIHNvDQo+ID4gPiA+
+ID4gKwkJICogd2UgbmVlZG4ndCB0byBkZWFsIHdpdGggaXQgYnkgREVMQVlfUkVRVUVVRS4gTW9y
+ZQ0KPiA+ID4gPiA+ICsJCSAqIGltcG9ydGFudGx5LCB3ZSBoYXZlIHRvIHJldHVybiBETV9NQVBJ
+T19SRVFVRVVFDQo+ID4gPiA+ID4gKwkJICogc28gdGhhdCBibGstbXEgY2FuIGdldCB0aGUgcXVl
+dWUgYnVzeSBmZWVkYmFjaywNCj4gPiA+ID4gPiArCQkgKiBvdGhlcndpc2UgSS9PIG1lcmdlIGNh
+biBiZSBodXJ0Lg0KPiA+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiA+ICsJCWlmIChxLT5tcV9vcHMp
+DQo+ID4gPiA+ID4gKwkJCXJldHVybiBETV9NQVBJT19SRVFVRVVFOw0KPiA+ID4gPiA+ICsJCWVs
+c2UNCj4gPiA+ID4gPiArCQkJcmV0dXJuIERNX01BUElPX0RFTEFZX1JFUVVFVUU7DQo+ID4gPiA+
+ID4gIAl9DQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIHBhdGNoIGlzIGluZmVyaW9yIHRvIHdoYXQg
+SSBwb3N0ZWQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGF2b2lkDQo+ID4gPiA+IHRoZSBk
+ZWxheSBpZiBtdWx0aXBsZSBMVU5zIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgU0NTSSBo
+b3N0LiBDb25zaWRlcg0KPiA+ID4gPiBlLmcuIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjoN
+Cj4gPiA+ID4gKiBBIHNpbmdsZSBTQ1NJIGhvc3Qgd2l0aCB0d28gU0NTSSBMVU5zIGFzc29jaWF0
+ZWQgdG8gdGhhdCBob3N0LCBlLmcuIC9kZXYvc2RhDQo+ID4gPiA+ICAgYW5kIC9kZXYvc2RiLg0K
+PiA+ID4gPiAqIEEgZG0tbXBhdGggaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCBvbiB0b3Agb2Yg
+L2Rldi9zZGEuDQo+ID4gPiA+IElmIGFsbCB0YWdzIGFyZSBpbiB1c2UgYnkgcmVxdWVzdHMgcXVl
+dWVkIHRvIC9kZXYvc2RiLCBubyBkbSByZXF1ZXN0cyBhcmUgaW4NCj4gPiA+ID4gcHJvZ3Jlc3Mg
+YW5kIGEgcmVxdWVzdCBpcyBzdWJtaXR0ZWQgYWdhaW5zdCB0aGUgZG0tbXBhdGggZGV2aWNlIHRo
+ZW4gdGhlDQo+ID4gPiA+IGJsa19nZXRfcmVxdWVzdChxLCBHRlBfQVRPTUlDKSBjYWxsIHdpbGwg
+ZmFpbC4gVGhlIHJlcXVlc3Qgd2lsbCBiZSByZXF1ZXVlZA0KPiA+ID4gPiBhbmQgdGhlIHF1ZXVl
+IHdpbGwgYmUgcmVydW4gYWZ0ZXIgYSBkZWxheS4NCj4gPiA+ID4gDQo+ID4gPiA+IE15IHBhdGNo
+IGRvZXMgbm90IGludHJvZHVjZSBhIGRlbGF5IGluIHRoaXMgY2FzZS4NCj4gPiA+IA0KPiA+ID4g
+VGhhdCBkZWxheSBtYXkgbm90IG1hdHRlciBiZWNhdXNlIFNDSEVEX1JFU1RBUlQgd2lsbCBydW4g
+cXVldWUganVzdA0KPiA+ID4gYWZ0ZXIgb25lIHJlcXVlc3QgaXMgY29tcGxldGVkLg0KPiA+IA0K
+PiA+IERpZCB5b3UgdW5kZXJzdGFuZCB3aGF0IEkgd3JvdGU/IFNDSEVEX1JFU1RBUlQgd2lsbCBi
+ZSBzZXQgZm9yIC9kZXYvc2RiIGJ1dCBub3QNCj4gPiBmb3IgdGhlIGRtIHF1ZXVlLiBUaGF0J3Mg
+d2hhdCBJIHdhcyB0cnlpbmcgdG8gZXhwbGFpbiB0byB5b3UgaW4gbXkgcHJldmlvdXMgZS1tYWls
+Lg0KPiANCj4gVGhlIHBhdGNoIEkgcG9zdGVkIGluIHRoaXMgdGhyZWFkIHdpbGwgc2V0IFNDSEVE
+X1JFU1RBUlQgZm9yIGRtIHF1ZXVlLg0KDQpUaGlzIGlzIG5vdCBob3cgY29tbXVuaWNhdGlvbiBv
+biBhbiBvcGVuIHNvdXJjZSBtYWlsaW5nIGxpc3QgaXMgYXNzdW1lZCB0byB3b3JrLg0KSWYgeW91
+IGtub3cgdGhhdCB5b3UgYXJlIHdyb25nIHlvdSBhcmUgYXNzdW1lZCBlaXRoZXIgdG8gc2h1dCB1
+cCBvciB0byBhZG1pdCBpdC4NCkFuZCBpZiB5b3UgZGlzYWdyZWUgd2l0aCB0aGUgZGV0YWlsZWQg
+ZXhwbGFuYXRpb24gSSBnYXZlIHlvdSBhcmUgYXNzdW1lZCB0bw0KZXhwbGFpbiBpbiBkZXRhaWwg
+d2h5IHlvdSB0aGluayBpdCBpcyB3cm9uZy4NCg0KPiA+ID4gVGhlcmUgaXMgYXQgbGVhc3Qgb25l
+IGlzc3VlIHdpdGggZ2V0X3JlcXVlc3QoR0ZQX05PSU8pOiBBSU8NCj4gPiA+IHBlcmZvcm1hbmNl
+IHJlZ3Jlc3Npb24gbWF5IG5vdCBiZSBjYXVzZWQsIG9yIGV2ZW4gQUlPIG1heSBub3QNCj4gPiA+
+IGJlIHBvc3NpYmxlLiBGb3IgZXhhbXBsZSwgdXNlciBydW5zIGZpbyhsaWJhaW8sIHJhbmRyZWFk
+LCBzaW5nbGUNCj4gPiA+IGpvYiwgcXVldWUgZGVwdGg6IDY0LCBkZXZpY2U6IGRtLW1wYXRoIGRp
+c2spLCBpZiBnZXRfcmVxdWVzdChHRlBfTk9JTykNCj4gPiA+IG9mdGVuIGJsb2NrcyBiZWNhdXNl
+IG9mIHNoYXJlZCB0YWdzIG9yIG91dCBvZiB0YWcsIHRoZSBhY3R1YWwgcXVldWUNCj4gPiA+IGRl
+cHRoIHdvbid0IHJlYWNoIDY0IGF0IGFsbCwgYW5kIG1heSBiZSBqdXN0IDEgaW4gdGhlIHdvcnN0
+IGNhc2UuDQo+ID4gPiBPbmNlIHRoZSBhY3R1YWwgcXVldWUgZGVwdGggaXMgZGVjcmVhc2VkIG11
+Y2gsIHJhbmRvbSBJL08gcGVyZm9ybWFuY2UNCj4gPiA+IHNob3VsZCBiZSBodXJ0IGEgbG90Lg0K
+PiA+IA0KPiA+IFRoYXQncyB3aHkgd2UgbmVlZCB0byBtb2RpZnkgc2NzaV9sbGRfYnVzeSgpLiBJ
+ZiBzY3NpX2xsZF9idXN5KCkgd2lsbCBiZQ0KPiA+IG1vZGlmaWVkIGFzIEkgcHJvcG9zZWQgaW4g
+YSBwcmV2aW91cyBlLW1haWwgdGhlbiBpdCB3aWxsIGJlY29tZSB2ZXJ5DQo+ID4gdW5saWtlbHkg
+dGhhdCBubyB0YWcgaXMgYXZhaWxhYmxlIHdoZW4gYmxrX2dldF9yZXF1ZXN0KCkgaXMgY2FsbGVk
+LiBXaXRoIHRoYXQNCj4gPiBzY3NpX2xsZF9idXN5KCkgbW9kaWZpY2F0aW9uIGl0IGlzIGV2ZW4g
+cG9zc2libGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIG1vZGlmeQ0KPiA+IHRoZSBkbS1tcGF0aCBk
+cml2ZXIuDQo+IA0KPiBUaGVuIHBvc3Qgb3V0IGEgd2hvbGUgc29sdXRpb24sIGFuZCBJJ2QgbGlr
+ZSB0byB0YWtlIGEgbG9vayBhbmQgdGVzdC4NCg0KSSB3aWxsIGRvIHRoYXQgYXMgc29vbiBhcyBJ
+IGhhdmUgdGhlIHRpbWUgdG8gcnVuIHNvbWUgbWVhc3VyZW1lbnRzLiBUaGUgcmVzdCBvZg0KdGhp
+cyB3ZWVrIEkgd2lsbCBiZSB0cmF2ZWxpbmcuDQoNCkJhcnQu
diff --git a/a/content_digest b/N1/content_digest
index 16369c1..3baef23 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -15,70 +15,64 @@
  " loberman@redhat.com <loberman@redhat.com>\0"
  "\00:1\0"
  "b\0"
- "On Mon, 2017-09-25 at 11:06 +0800, Ming Lei wrote:\n"
- "> On Fri, Sep 22, 2017 at 05:54:48PM +0000, Bart Van Assche wrote:\n"
- "> > On Sat, 2017-09-23 at 01:44 +0800, Ming Lei wrote:\n"
- "> > > On Fri, Sep 22, 2017 at 03:06:16PM +0000, Bart Van Assche wrote:\n"
- "> > > > On Fri, 2017-09-22 at 09:35 +0800, Ming Lei wrote:\n"
- "> > > > > +\t\t/*\n"
- "> > > > > +\t\t * blk-mq's SCHED_RESTART can cover this requeue, so\n"
- "> > > > > +\t\t * we needn't to deal with it by DELAY_REQUEUE. More\n"
- "> > > > > +\t\t * importantly, we have to return DM_MAPIO_REQUEUE\n"
- "> > > > > +\t\t * so that blk-mq can get the queue busy feedback,\n"
- "> > > > > +\t\t * otherwise I/O merge can be hurt.\n"
- "> > > > > +\t\t */\n"
- "> > > > > +\t\tif (q->mq_ops)\n"
- "> > > > > +\t\t\treturn DM_MAPIO_REQUEUE;\n"
- "> > > > > +\t\telse\n"
- "> > > > > +\t\t\treturn DM_MAPIO_DELAY_REQUEUE;\n"
- "> > > > >  \t}\n"
- "> > > > \n"
- "> > > > This patch is inferior to what I posted because this patch does not avoid\n"
- "> > > > the delay if multiple LUNs are associated with the same SCSI host. Consider\n"
- "> > > > e.g. the following configuration:\n"
- "> > > > * A single SCSI host with two SCSI LUNs associated to that host, e.g. /dev/sda\n"
- "> > > >   and /dev/sdb.\n"
- "> > > > * A dm-mpath instance has been created on top of /dev/sda.\n"
- "> > > > If all tags are in use by requests queued to /dev/sdb, no dm requests are in\n"
- "> > > > progress and a request is submitted against the dm-mpath device then the\n"
- "> > > > blk_get_request(q, GFP_ATOMIC) call will fail. The request will be requeued\n"
- "> > > > and the queue will be rerun after a delay.\n"
- "> > > > \n"
- "> > > > My patch does not introduce a delay in this case.\n"
- "> > > \n"
- "> > > That delay may not matter because SCHED_RESTART will run queue just\n"
- "> > > after one request is completed.\n"
- "> > \n"
- "> > Did you understand what I wrote? SCHED_RESTART will be set for /dev/sdb but not\n"
- "> > for the dm queue. That's what I was trying to explain to you in my previous e-mail.\n"
- "> \n"
- "> The patch I posted in this thread will set SCHED_RESTART for dm queue.\n"
- "\n"
- "This is not how communication on an open source mailing list is assumed to work.\n"
- "If you know that you are wrong you are assumed either to shut up or to admit it.\n"
- "And if you disagree with the detailed explanation I gave you are assumed to\n"
- "explain in detail why you think it is wrong.\n"
- "\n"
- "> > > There is at least one issue with get_request(GFP_NOIO): AIO\n"
- "> > > performance regression may not be caused, or even AIO may not\n"
- "> > > be possible. For example, user runs fio(libaio, randread, single\n"
- "> > > job, queue depth: 64, device: dm-mpath disk), if get_request(GFP_NOIO)\n"
- "> > > often blocks because of shared tags or out of tag, the actual queue\n"
- "> > > depth won't reach 64 at all, and may be just 1 in the worst case.\n"
- "> > > Once the actual queue depth is decreased much, random I/O performance\n"
- "> > > should be hurt a lot.\n"
- "> > \n"
- "> > That's why we need to modify scsi_lld_busy(). If scsi_lld_busy() will be\n"
- "> > modified as I proposed in a previous e-mail then it will become very\n"
- "> > unlikely that no tag is available when blk_get_request() is called. With that\n"
- "> > scsi_lld_busy() modification it is even possible that we don't need to modify\n"
- "> > the dm-mpath driver.\n"
- "> \n"
- "> Then post out a whole solution, and I'd like to take a look and test.\n"
- "\n"
- "I will do that as soon as I have the time to run some measurements. The rest of\n"
- "this week I will be traveling.\n"
- "\n"
- Bart.
+ "T24gTW9uLCAyMDE3LTA5LTI1IGF0IDExOjA2ICswODAwLCBNaW5nIExlaSB3cm90ZToNCj4gT24g\n"
+ "RnJpLCBTZXAgMjIsIDIwMTcgYXQgMDU6NTQ6NDhQTSArMDAwMCwgQmFydCBWYW4gQXNzY2hlIHdy\n"
+ "b3RlOg0KPiA+IE9uIFNhdCwgMjAxNy0wOS0yMyBhdCAwMTo0NCArMDgwMCwgTWluZyBMZWkgd3Jv\n"
+ "dGU6DQo+ID4gPiBPbiBGcmksIFNlcCAyMiwgMjAxNyBhdCAwMzowNjoxNlBNICswMDAwLCBCYXJ0\n"
+ "IFZhbiBBc3NjaGUgd3JvdGU6DQo+ID4gPiA+IE9uIEZyaSwgMjAxNy0wOS0yMiBhdCAwOTozNSAr\n"
+ "MDgwMCwgTWluZyBMZWkgd3JvdGU6DQo+ID4gPiA+ID4gKwkJLyoNCj4gPiA+ID4gPiArCQkgKiBi\n"
+ "bGstbXEncyBTQ0hFRF9SRVNUQVJUIGNhbiBjb3ZlciB0aGlzIHJlcXVldWUsIHNvDQo+ID4gPiA+\n"
+ "ID4gKwkJICogd2UgbmVlZG4ndCB0byBkZWFsIHdpdGggaXQgYnkgREVMQVlfUkVRVUVVRS4gTW9y\n"
+ "ZQ0KPiA+ID4gPiA+ICsJCSAqIGltcG9ydGFudGx5LCB3ZSBoYXZlIHRvIHJldHVybiBETV9NQVBJ\n"
+ "T19SRVFVRVVFDQo+ID4gPiA+ID4gKwkJICogc28gdGhhdCBibGstbXEgY2FuIGdldCB0aGUgcXVl\n"
+ "dWUgYnVzeSBmZWVkYmFjaywNCj4gPiA+ID4gPiArCQkgKiBvdGhlcndpc2UgSS9PIG1lcmdlIGNh\n"
+ "biBiZSBodXJ0Lg0KPiA+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiA+ICsJCWlmIChxLT5tcV9vcHMp\n"
+ "DQo+ID4gPiA+ID4gKwkJCXJldHVybiBETV9NQVBJT19SRVFVRVVFOw0KPiA+ID4gPiA+ICsJCWVs\n"
+ "c2UNCj4gPiA+ID4gPiArCQkJcmV0dXJuIERNX01BUElPX0RFTEFZX1JFUVVFVUU7DQo+ID4gPiA+\n"
+ "ID4gIAl9DQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIHBhdGNoIGlzIGluZmVyaW9yIHRvIHdoYXQg\n"
+ "SSBwb3N0ZWQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGF2b2lkDQo+ID4gPiA+IHRoZSBk\n"
+ "ZWxheSBpZiBtdWx0aXBsZSBMVU5zIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgU0NTSSBo\n"
+ "b3N0LiBDb25zaWRlcg0KPiA+ID4gPiBlLmcuIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbjoN\n"
+ "Cj4gPiA+ID4gKiBBIHNpbmdsZSBTQ1NJIGhvc3Qgd2l0aCB0d28gU0NTSSBMVU5zIGFzc29jaWF0\n"
+ "ZWQgdG8gdGhhdCBob3N0LCBlLmcuIC9kZXYvc2RhDQo+ID4gPiA+ICAgYW5kIC9kZXYvc2RiLg0K\n"
+ "PiA+ID4gPiAqIEEgZG0tbXBhdGggaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCBvbiB0b3Agb2Yg\n"
+ "L2Rldi9zZGEuDQo+ID4gPiA+IElmIGFsbCB0YWdzIGFyZSBpbiB1c2UgYnkgcmVxdWVzdHMgcXVl\n"
+ "dWVkIHRvIC9kZXYvc2RiLCBubyBkbSByZXF1ZXN0cyBhcmUgaW4NCj4gPiA+ID4gcHJvZ3Jlc3Mg\n"
+ "YW5kIGEgcmVxdWVzdCBpcyBzdWJtaXR0ZWQgYWdhaW5zdCB0aGUgZG0tbXBhdGggZGV2aWNlIHRo\n"
+ "ZW4gdGhlDQo+ID4gPiA+IGJsa19nZXRfcmVxdWVzdChxLCBHRlBfQVRPTUlDKSBjYWxsIHdpbGwg\n"
+ "ZmFpbC4gVGhlIHJlcXVlc3Qgd2lsbCBiZSByZXF1ZXVlZA0KPiA+ID4gPiBhbmQgdGhlIHF1ZXVl\n"
+ "IHdpbGwgYmUgcmVydW4gYWZ0ZXIgYSBkZWxheS4NCj4gPiA+ID4gDQo+ID4gPiA+IE15IHBhdGNo\n"
+ "IGRvZXMgbm90IGludHJvZHVjZSBhIGRlbGF5IGluIHRoaXMgY2FzZS4NCj4gPiA+IA0KPiA+ID4g\n"
+ "VGhhdCBkZWxheSBtYXkgbm90IG1hdHRlciBiZWNhdXNlIFNDSEVEX1JFU1RBUlQgd2lsbCBydW4g\n"
+ "cXVldWUganVzdA0KPiA+ID4gYWZ0ZXIgb25lIHJlcXVlc3QgaXMgY29tcGxldGVkLg0KPiA+IA0K\n"
+ "PiA+IERpZCB5b3UgdW5kZXJzdGFuZCB3aGF0IEkgd3JvdGU/IFNDSEVEX1JFU1RBUlQgd2lsbCBi\n"
+ "ZSBzZXQgZm9yIC9kZXYvc2RiIGJ1dCBub3QNCj4gPiBmb3IgdGhlIGRtIHF1ZXVlLiBUaGF0J3Mg\n"
+ "d2hhdCBJIHdhcyB0cnlpbmcgdG8gZXhwbGFpbiB0byB5b3UgaW4gbXkgcHJldmlvdXMgZS1tYWls\n"
+ "Lg0KPiANCj4gVGhlIHBhdGNoIEkgcG9zdGVkIGluIHRoaXMgdGhyZWFkIHdpbGwgc2V0IFNDSEVE\n"
+ "X1JFU1RBUlQgZm9yIGRtIHF1ZXVlLg0KDQpUaGlzIGlzIG5vdCBob3cgY29tbXVuaWNhdGlvbiBv\n"
+ "biBhbiBvcGVuIHNvdXJjZSBtYWlsaW5nIGxpc3QgaXMgYXNzdW1lZCB0byB3b3JrLg0KSWYgeW91\n"
+ "IGtub3cgdGhhdCB5b3UgYXJlIHdyb25nIHlvdSBhcmUgYXNzdW1lZCBlaXRoZXIgdG8gc2h1dCB1\n"
+ "cCBvciB0byBhZG1pdCBpdC4NCkFuZCBpZiB5b3UgZGlzYWdyZWUgd2l0aCB0aGUgZGV0YWlsZWQg\n"
+ "ZXhwbGFuYXRpb24gSSBnYXZlIHlvdSBhcmUgYXNzdW1lZCB0bw0KZXhwbGFpbiBpbiBkZXRhaWwg\n"
+ "d2h5IHlvdSB0aGluayBpdCBpcyB3cm9uZy4NCg0KPiA+ID4gVGhlcmUgaXMgYXQgbGVhc3Qgb25l\n"
+ "IGlzc3VlIHdpdGggZ2V0X3JlcXVlc3QoR0ZQX05PSU8pOiBBSU8NCj4gPiA+IHBlcmZvcm1hbmNl\n"
+ "IHJlZ3Jlc3Npb24gbWF5IG5vdCBiZSBjYXVzZWQsIG9yIGV2ZW4gQUlPIG1heSBub3QNCj4gPiA+\n"
+ "IGJlIHBvc3NpYmxlLiBGb3IgZXhhbXBsZSwgdXNlciBydW5zIGZpbyhsaWJhaW8sIHJhbmRyZWFk\n"
+ "LCBzaW5nbGUNCj4gPiA+IGpvYiwgcXVldWUgZGVwdGg6IDY0LCBkZXZpY2U6IGRtLW1wYXRoIGRp\n"
+ "c2spLCBpZiBnZXRfcmVxdWVzdChHRlBfTk9JTykNCj4gPiA+IG9mdGVuIGJsb2NrcyBiZWNhdXNl\n"
+ "IG9mIHNoYXJlZCB0YWdzIG9yIG91dCBvZiB0YWcsIHRoZSBhY3R1YWwgcXVldWUNCj4gPiA+IGRl\n"
+ "cHRoIHdvbid0IHJlYWNoIDY0IGF0IGFsbCwgYW5kIG1heSBiZSBqdXN0IDEgaW4gdGhlIHdvcnN0\n"
+ "IGNhc2UuDQo+ID4gPiBPbmNlIHRoZSBhY3R1YWwgcXVldWUgZGVwdGggaXMgZGVjcmVhc2VkIG11\n"
+ "Y2gsIHJhbmRvbSBJL08gcGVyZm9ybWFuY2UNCj4gPiA+IHNob3VsZCBiZSBodXJ0IGEgbG90Lg0K\n"
+ "PiA+IA0KPiA+IFRoYXQncyB3aHkgd2UgbmVlZCB0byBtb2RpZnkgc2NzaV9sbGRfYnVzeSgpLiBJ\n"
+ "ZiBzY3NpX2xsZF9idXN5KCkgd2lsbCBiZQ0KPiA+IG1vZGlmaWVkIGFzIEkgcHJvcG9zZWQgaW4g\n"
+ "YSBwcmV2aW91cyBlLW1haWwgdGhlbiBpdCB3aWxsIGJlY29tZSB2ZXJ5DQo+ID4gdW5saWtlbHkg\n"
+ "dGhhdCBubyB0YWcgaXMgYXZhaWxhYmxlIHdoZW4gYmxrX2dldF9yZXF1ZXN0KCkgaXMgY2FsbGVk\n"
+ "LiBXaXRoIHRoYXQNCj4gPiBzY3NpX2xsZF9idXN5KCkgbW9kaWZpY2F0aW9uIGl0IGlzIGV2ZW4g\n"
+ "cG9zc2libGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIG1vZGlmeQ0KPiA+IHRoZSBkbS1tcGF0aCBk\n"
+ "cml2ZXIuDQo+IA0KPiBUaGVuIHBvc3Qgb3V0IGEgd2hvbGUgc29sdXRpb24sIGFuZCBJJ2QgbGlr\n"
+ "ZSB0byB0YWtlIGEgbG9vayBhbmQgdGVzdC4NCg0KSSB3aWxsIGRvIHRoYXQgYXMgc29vbiBhcyBJ\n"
+ "IGhhdmUgdGhlIHRpbWUgdG8gcnVuIHNvbWUgbWVhc3VyZW1lbnRzLiBUaGUgcmVzdCBvZg0KdGhp\n"
+ cyB3ZWVrIEkgd2lsbCBiZSB0cmF2ZWxpbmcuDQoNCkJhcnQu
 
-0ba6d694a62af6403158ca3a8198101a0afcb51429285f06125bdf857be5fd2f
+c8d0cbbb92a3cf7904681786b2b4c39a89d811d6f56caa992a55aac0a35ddc3f

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.