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.