diff for duplicates of <20161013220243.GA2745@hgst.com> diff --git a/a/1.txt b/N1/1.txt index 6848d4f..4ee76f0 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,50 +1,57 @@ -VGhlIDEwLzEzLzIwMTYgMTQ6MDksIEplbnMgQXhib2Ugd3JvdGU6Cj4gT24gMTAvMTMvMjAxNiAw -MjowNiBQTSwgRGFuIFdpbGxpYW1zIHdyb3RlOgo+ID5PbiBUaHUsIE9jdCAxMywgMjAxNiBhdCAx -Mjo1MyBQTSwgQWRhbSBNYW56YW5hcmVzCj4gPjxhZGFtLm1hbnphbmFyZXNAaGdzdC5jb20+IHdy -b3RlOgo+ID4+UGF0Y2ggYWRkcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGlvY29udGV4dCBpb3By -aW8gYW5kIHRoZSBpb3ByaW8gb2YgYQo+ID4+cmVxdWVzdC4gVGhpcyB2YWx1ZSBpcyBzZXQgaW4g -YmxrX3JxX3NldF9wcmlvIHdoaWNoIHRha2VzIHRoZSByZXF1ZXN0IGFuZAo+ID4+dGhlIGlvYyBh -cyBhcmd1bWVudHMuIElmIHRoZSBpb2MgaXMgdmFsaWQgaW4gYmxrX3JxX3NldF9wcmlvIHRoZW4g -dGhlCj4gPj5pb3ByaW9yaXR5IG9mIHRoZSByZXF1ZXN0IGlzIHNldCBhcyB0aGUgaW9wcmlvcml0 -eSBvZiB0aGUgaW9jLiBJbgo+ID4+aW5pdF9yZXF1ZXN0X2Zyb21fYmlvIGEgY2hlY2sgaXMgbWFk -ZSB0byBzZWUgaWYgdGhlIGlvcHJpbyBvZiB0aGUgYmlvIGlzCj4gPj52YWxpZCBhbmQgaWYgc28g -dGhlbiB0aGUgcmVxdWVzdCBwcmlvIGNvbWVzIGZyb20gdGhlIGJpby4KPiA+Pgo+ID4+U2lnbmVk -LW9mZi1ieTogQWRhbSBNYW56YW5hbmFyZXMgPGFkYW0ubWFuemFuYXJlc0B3ZGMuY29tPgo+ID4+ -LS0tCj4gPj4gYmxvY2svYmxrLWNvcmUuYyAgICAgICB8ICA0ICsrKy0KPiA+PiBpbmNsdWRlL2xp -bnV4L2Jsa2Rldi5oIHwgMTQgKysrKysrKysrKysrKysKPiA+PiAyIGZpbGVzIGNoYW5nZWQsIDE3 -IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pgo+ID4+ZGlmZiAtLWdpdCBhL2Jsb2Nr -L2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jCj4gPj5pbmRleCAxNGQ3YzA3Li4zNjFiMWI5 -IDEwMDY0NAo+ID4+LS0tIGEvYmxvY2svYmxrLWNvcmUuYwo+ID4+KysrIGIvYmxvY2svYmxrLWNv -cmUuYwo+ID4+QEAgLTExNTMsNiArMTE1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqX19n -ZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybCwgaW50IG9wLAo+ID4+Cj4gPj4gICAg -ICAgIGJsa19ycV9pbml0KHEsIHJxKTsKPiA+PiAgICAgICAgYmxrX3JxX3NldF9ybChycSwgcmwp -Owo+ID4+KyAgICAgICBibGtfcnFfc2V0X3ByaW8ocnEsIGlvYyk7Cj4gPj4gICAgICAgIHJlcV9z -ZXRfb3BfYXR0cnMocnEsIG9wLCBvcF9mbGFncyB8IFJFUV9BTExPQ0VEKTsKPiA+Pgo+ID4+ICAg -ICAgICAvKiBpbml0IGVsdnByaXYgKi8KPiA+PkBAIC0xNjU2LDcgKzE2NTcsOCBAQCB2b2lkIGlu -aXRfcmVxdWVzdF9mcm9tX2JpbyhzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmlvICpiaW8p -Cj4gPj4KPiA+PiAgICAgICAgcmVxLT5lcnJvcnMgPSAwOwo+ID4+ICAgICAgICByZXEtPl9fc2Vj -dG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKPiA+Pi0gICAgICAgcmVxLT5pb3ByaW8gPSBi -aW9fcHJpbyhiaW8pOwo+ID4+KyAgICAgICBpZiAoaW9wcmlvX3ZhbGlkKGJpb19wcmlvKGJpbykp -KQo+ID4+KyAgICAgICAgICAgICAgIHJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKPiA+Cj4g -PlNob3VsZCB3ZSB1c2UgaW9wcmlvX2Jlc3QoKSBoZXJlPyAgSWYgcmVxLT5pb3ByaW8gYW5kIGJp -b19wcmlvKCkKPiA+ZGlzYWdyZWUgb25lIHNpZGUgaGFzIGV4cGxpY2l0bHkgYXNrZWQgZm9yIGEg -aGlnaGVyIHByaW9yaXR5Lgo+IAo+IEl0J3MgYSBnb29kIHF1ZXN0aW9uIC0gYnV0IGlmIHByaW9y -aXR5IGhhcyBiZWVuIHNldCBpbiB0aGUgYmlvLCBpdCBtYWtlcwo+IHNlbnNlIHRoYXQgdGhhdCB3 -b3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgdGhlIGdlbmVyYWwgc2V0dGluZyBmb3IgdGhlCj4gdGFz -ay9pbyBjb250ZXh0LiBTbyBJIHRoaW5rIHRoZSBwYXRjaCBpcyBjb3JyZWN0IGFzLWlzLgo+IAo+ -IEFkYW0sIHlvdSdsbCB3YW50IHRvIHJld3JpdGUgdGhlIGNvbW1pdCBtZXNzYWdlIHRob3VnaC4g -QSBnb29kIGNvbW1pdAo+IG1lc3NhZ2Ugc2hvdWxkIGV4cGxhaW4gV0hZIHRoZSBjaGFuZ2UgaXMg -bWFkZSwgbm90IGRldGFpbCB0aGUgY29kZQo+IGltcGxlbWVudGF0aW9uIG9mIGl0LgoKR290IGl0 -IEknbGwgc2VuZCBzb21ldGhpbmcgb3V0IHNvb24uCgo+IAo+IC0tIAo+IEplbnMgQXhib2UKPiAK -ClRha2UgY2FyZSwKQWRhbQpXZXN0ZXJuIERpZ2l0YWwgQ29ycG9yYXRpb24gKGFuZCBpdHMgc3Vi -c2lkaWFyaWVzKSBFLW1haWwgQ29uZmlkZW50aWFsaXR5IE5vdGljZSAmIERpc2NsYWltZXI6CgpU -aGlzIGUtbWFpbCBhbmQgYW55IGZpbGVzIHRyYW5zbWl0dGVkIHdpdGggaXQgbWF5IGNvbnRhaW4g -Y29uZmlkZW50aWFsIG9yIGxlZ2FsbHkgcHJpdmlsZWdlZCBpbmZvcm1hdGlvbiBvZiBXREMgYW5k -L29yIGl0cyBhZmZpbGlhdGVzLCBhbmQgYXJlIGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBv -ZiB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hpY2ggdGhleSBhcmUgYWRkcmVzc2VkLiBJ -ZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBhbnkgZGlzY2xvc3VyZSwgY29w -eWluZywgZGlzdHJpYnV0aW9uIG9yIGFueSBhY3Rpb24gdGFrZW4gb3Igb21pdHRlZCB0byBiZSB0 -YWtlbiBpbiByZWxpYW5jZSBvbiBpdCwgaXMgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2 -ZWQgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlh -dGVseSBhbmQgZGVsZXRlIHRoZSBlLW1haWwgaW4gaXRzIGVudGlyZXR5IGZyb20geW91ciBzeXN0 -ZW0uCg== +The 10/13/2016 14:09, Jens Axboe wrote: +> On 10/13/2016 02:06 PM, Dan Williams wrote: +> >On Thu, Oct 13, 2016 at 12:53 PM, Adam Manzanares +> ><adam.manzanares@hgst.com> wrote: +> >>Patch adds an association between iocontext ioprio and the ioprio of a +> >>request. This value is set in blk_rq_set_prio which takes the request and +> >>the ioc as arguments. If the ioc is valid in blk_rq_set_prio then the +> >>iopriority of the request is set as the iopriority of the ioc. In +> >>init_request_from_bio a check is made to see if the ioprio of the bio is +> >>valid and if so then the request prio comes from the bio. +> >> +> >>Signed-off-by: Adam Manzananares <adam.manzanares@wdc.com> +> >>--- +> >> block/blk-core.c | 4 +++- +> >> include/linux/blkdev.h | 14 ++++++++++++++ +> >> 2 files changed, 17 insertions(+), 1 deletion(-) +> >> +> >>diff --git a/block/blk-core.c b/block/blk-core.c +> >>index 14d7c07..361b1b9 100644 +> >>--- a/block/blk-core.c +> >>+++ b/block/blk-core.c +> >>@@ -1153,6 +1153,7 @@ static struct request *__get_request(struct request_list *rl, int op, +> >> +> >> blk_rq_init(q, rq); +> >> blk_rq_set_rl(rq, rl); +> >>+ blk_rq_set_prio(rq, ioc); +> >> req_set_op_attrs(rq, op, op_flags | REQ_ALLOCED); +> >> +> >> /* init elvpriv */ +> >>@@ -1656,7 +1657,8 @@ void init_request_from_bio(struct request *req, struct bio *bio) +> >> +> >> req->errors = 0; +> >> req->__sector = bio->bi_iter.bi_sector; +> >>- req->ioprio = bio_prio(bio); +> >>+ if (ioprio_valid(bio_prio(bio))) +> >>+ req->ioprio = bio_prio(bio); +> > +> >Should we use ioprio_best() here? If req->ioprio and bio_prio() +> >disagree one side has explicitly asked for a higher priority. +> +> It's a good question - but if priority has been set in the bio, it makes +> sense that that would take priority over the general setting for the +> task/io context. So I think the patch is correct as-is. +> +> Adam, you'll want to rewrite the commit message though. A good commit +> message should explain WHY the change is made, not detail the code +> implementation of it. + +Got it I'll send something out soon. + +> +> -- +> Jens Axboe +> + +Take care, +Adam diff --git a/a/content_digest b/N1/content_digest index 73bd6b4..e864de4 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -11,68 +11,75 @@ Tejun Heo <tj@kernel.org> Hannes Reinecke <hare@suse.de> Martin K. Petersen <martin.petersen@oracle.com> - <mchristi@redhat.com> + mchristi@redhat.com Toshi Kani <toshi.kani@hpe.com> Ming Lei <ming.lei@canonical.com> - <sathya.prakash@broadcom.com> - <chaitra.basappa@broadcom.com> - <suganath-prabu.subramani@broadcom.com> - <linux-block@vger.kernel.org> + sathya.prakash@broadcom.com + chaitra.basappa@broadcom.com + suganath-prabu.subramani@broadcom.com + linux-block@vger.kernel.org IDE/ATA development list <linux-ide@vger.kernel.org> linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> - <MPT-FusionLinux.pdl@broadcom.com> + MPT-FusionLinux.pdl@broadcom.com " linux-scsi <linux-scsi@vger.kernel.org>\0" "\00:1\0" "b\0" - "VGhlIDEwLzEzLzIwMTYgMTQ6MDksIEplbnMgQXhib2Ugd3JvdGU6Cj4gT24gMTAvMTMvMjAxNiAw\n" - "MjowNiBQTSwgRGFuIFdpbGxpYW1zIHdyb3RlOgo+ID5PbiBUaHUsIE9jdCAxMywgMjAxNiBhdCAx\n" - "Mjo1MyBQTSwgQWRhbSBNYW56YW5hcmVzCj4gPjxhZGFtLm1hbnphbmFyZXNAaGdzdC5jb20+IHdy\n" - "b3RlOgo+ID4+UGF0Y2ggYWRkcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGlvY29udGV4dCBpb3By\n" - "aW8gYW5kIHRoZSBpb3ByaW8gb2YgYQo+ID4+cmVxdWVzdC4gVGhpcyB2YWx1ZSBpcyBzZXQgaW4g\n" - "YmxrX3JxX3NldF9wcmlvIHdoaWNoIHRha2VzIHRoZSByZXF1ZXN0IGFuZAo+ID4+dGhlIGlvYyBh\n" - "cyBhcmd1bWVudHMuIElmIHRoZSBpb2MgaXMgdmFsaWQgaW4gYmxrX3JxX3NldF9wcmlvIHRoZW4g\n" - "dGhlCj4gPj5pb3ByaW9yaXR5IG9mIHRoZSByZXF1ZXN0IGlzIHNldCBhcyB0aGUgaW9wcmlvcml0\n" - "eSBvZiB0aGUgaW9jLiBJbgo+ID4+aW5pdF9yZXF1ZXN0X2Zyb21fYmlvIGEgY2hlY2sgaXMgbWFk\n" - "ZSB0byBzZWUgaWYgdGhlIGlvcHJpbyBvZiB0aGUgYmlvIGlzCj4gPj52YWxpZCBhbmQgaWYgc28g\n" - "dGhlbiB0aGUgcmVxdWVzdCBwcmlvIGNvbWVzIGZyb20gdGhlIGJpby4KPiA+Pgo+ID4+U2lnbmVk\n" - "LW9mZi1ieTogQWRhbSBNYW56YW5hbmFyZXMgPGFkYW0ubWFuemFuYXJlc0B3ZGMuY29tPgo+ID4+\n" - "LS0tCj4gPj4gYmxvY2svYmxrLWNvcmUuYyAgICAgICB8ICA0ICsrKy0KPiA+PiBpbmNsdWRlL2xp\n" - "bnV4L2Jsa2Rldi5oIHwgMTQgKysrKysrKysrKysrKysKPiA+PiAyIGZpbGVzIGNoYW5nZWQsIDE3\n" - "IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pgo+ID4+ZGlmZiAtLWdpdCBhL2Jsb2Nr\n" - "L2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jCj4gPj5pbmRleCAxNGQ3YzA3Li4zNjFiMWI5\n" - "IDEwMDY0NAo+ID4+LS0tIGEvYmxvY2svYmxrLWNvcmUuYwo+ID4+KysrIGIvYmxvY2svYmxrLWNv\n" - "cmUuYwo+ID4+QEAgLTExNTMsNiArMTE1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqX19n\n" - "ZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybCwgaW50IG9wLAo+ID4+Cj4gPj4gICAg\n" - "ICAgIGJsa19ycV9pbml0KHEsIHJxKTsKPiA+PiAgICAgICAgYmxrX3JxX3NldF9ybChycSwgcmwp\n" - "Owo+ID4+KyAgICAgICBibGtfcnFfc2V0X3ByaW8ocnEsIGlvYyk7Cj4gPj4gICAgICAgIHJlcV9z\n" - "ZXRfb3BfYXR0cnMocnEsIG9wLCBvcF9mbGFncyB8IFJFUV9BTExPQ0VEKTsKPiA+Pgo+ID4+ICAg\n" - "ICAgICAvKiBpbml0IGVsdnByaXYgKi8KPiA+PkBAIC0xNjU2LDcgKzE2NTcsOCBAQCB2b2lkIGlu\n" - "aXRfcmVxdWVzdF9mcm9tX2JpbyhzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmlvICpiaW8p\n" - "Cj4gPj4KPiA+PiAgICAgICAgcmVxLT5lcnJvcnMgPSAwOwo+ID4+ICAgICAgICByZXEtPl9fc2Vj\n" - "dG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKPiA+Pi0gICAgICAgcmVxLT5pb3ByaW8gPSBi\n" - "aW9fcHJpbyhiaW8pOwo+ID4+KyAgICAgICBpZiAoaW9wcmlvX3ZhbGlkKGJpb19wcmlvKGJpbykp\n" - "KQo+ID4+KyAgICAgICAgICAgICAgIHJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKPiA+Cj4g\n" - "PlNob3VsZCB3ZSB1c2UgaW9wcmlvX2Jlc3QoKSBoZXJlPyAgSWYgcmVxLT5pb3ByaW8gYW5kIGJp\n" - "b19wcmlvKCkKPiA+ZGlzYWdyZWUgb25lIHNpZGUgaGFzIGV4cGxpY2l0bHkgYXNrZWQgZm9yIGEg\n" - "aGlnaGVyIHByaW9yaXR5Lgo+IAo+IEl0J3MgYSBnb29kIHF1ZXN0aW9uIC0gYnV0IGlmIHByaW9y\n" - "aXR5IGhhcyBiZWVuIHNldCBpbiB0aGUgYmlvLCBpdCBtYWtlcwo+IHNlbnNlIHRoYXQgdGhhdCB3\n" - "b3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgdGhlIGdlbmVyYWwgc2V0dGluZyBmb3IgdGhlCj4gdGFz\n" - "ay9pbyBjb250ZXh0LiBTbyBJIHRoaW5rIHRoZSBwYXRjaCBpcyBjb3JyZWN0IGFzLWlzLgo+IAo+\n" - "IEFkYW0sIHlvdSdsbCB3YW50IHRvIHJld3JpdGUgdGhlIGNvbW1pdCBtZXNzYWdlIHRob3VnaC4g\n" - "QSBnb29kIGNvbW1pdAo+IG1lc3NhZ2Ugc2hvdWxkIGV4cGxhaW4gV0hZIHRoZSBjaGFuZ2UgaXMg\n" - "bWFkZSwgbm90IGRldGFpbCB0aGUgY29kZQo+IGltcGxlbWVudGF0aW9uIG9mIGl0LgoKR290IGl0\n" - "IEknbGwgc2VuZCBzb21ldGhpbmcgb3V0IHNvb24uCgo+IAo+IC0tIAo+IEplbnMgQXhib2UKPiAK\n" - "ClRha2UgY2FyZSwKQWRhbQpXZXN0ZXJuIERpZ2l0YWwgQ29ycG9yYXRpb24gKGFuZCBpdHMgc3Vi\n" - "c2lkaWFyaWVzKSBFLW1haWwgQ29uZmlkZW50aWFsaXR5IE5vdGljZSAmIERpc2NsYWltZXI6CgpU\n" - "aGlzIGUtbWFpbCBhbmQgYW55IGZpbGVzIHRyYW5zbWl0dGVkIHdpdGggaXQgbWF5IGNvbnRhaW4g\n" - "Y29uZmlkZW50aWFsIG9yIGxlZ2FsbHkgcHJpdmlsZWdlZCBpbmZvcm1hdGlvbiBvZiBXREMgYW5k\n" - "L29yIGl0cyBhZmZpbGlhdGVzLCBhbmQgYXJlIGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBv\n" - "ZiB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hpY2ggdGhleSBhcmUgYWRkcmVzc2VkLiBJ\n" - "ZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBhbnkgZGlzY2xvc3VyZSwgY29w\n" - "eWluZywgZGlzdHJpYnV0aW9uIG9yIGFueSBhY3Rpb24gdGFrZW4gb3Igb21pdHRlZCB0byBiZSB0\n" - "YWtlbiBpbiByZWxpYW5jZSBvbiBpdCwgaXMgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2\n" - "ZWQgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlh\n" - "dGVseSBhbmQgZGVsZXRlIHRoZSBlLW1haWwgaW4gaXRzIGVudGlyZXR5IGZyb20geW91ciBzeXN0\n" - ZW0uCg== + "The 10/13/2016 14:09, Jens Axboe wrote:\n" + "> On 10/13/2016 02:06 PM, Dan Williams wrote:\n" + "> >On Thu, Oct 13, 2016 at 12:53 PM, Adam Manzanares\n" + "> ><adam.manzanares@hgst.com> wrote:\n" + "> >>Patch adds an association between iocontext ioprio and the ioprio of a\n" + "> >>request. This value is set in blk_rq_set_prio which takes the request and\n" + "> >>the ioc as arguments. If the ioc is valid in blk_rq_set_prio then the\n" + "> >>iopriority of the request is set as the iopriority of the ioc. In\n" + "> >>init_request_from_bio a check is made to see if the ioprio of the bio is\n" + "> >>valid and if so then the request prio comes from the bio.\n" + "> >>\n" + "> >>Signed-off-by: Adam Manzananares <adam.manzanares@wdc.com>\n" + "> >>---\n" + "> >> block/blk-core.c | 4 +++-\n" + "> >> include/linux/blkdev.h | 14 ++++++++++++++\n" + "> >> 2 files changed, 17 insertions(+), 1 deletion(-)\n" + "> >>\n" + "> >>diff --git a/block/blk-core.c b/block/blk-core.c\n" + "> >>index 14d7c07..361b1b9 100644\n" + "> >>--- a/block/blk-core.c\n" + "> >>+++ b/block/blk-core.c\n" + "> >>@@ -1153,6 +1153,7 @@ static struct request *__get_request(struct request_list *rl, int op,\n" + "> >>\n" + "> >> blk_rq_init(q, rq);\n" + "> >> blk_rq_set_rl(rq, rl);\n" + "> >>+ blk_rq_set_prio(rq, ioc);\n" + "> >> req_set_op_attrs(rq, op, op_flags | REQ_ALLOCED);\n" + "> >>\n" + "> >> /* init elvpriv */\n" + "> >>@@ -1656,7 +1657,8 @@ void init_request_from_bio(struct request *req, struct bio *bio)\n" + "> >>\n" + "> >> req->errors = 0;\n" + "> >> req->__sector = bio->bi_iter.bi_sector;\n" + "> >>- req->ioprio = bio_prio(bio);\n" + "> >>+ if (ioprio_valid(bio_prio(bio)))\n" + "> >>+ req->ioprio = bio_prio(bio);\n" + "> >\n" + "> >Should we use ioprio_best() here? If req->ioprio and bio_prio()\n" + "> >disagree one side has explicitly asked for a higher priority.\n" + "> \n" + "> It's a good question - but if priority has been set in the bio, it makes\n" + "> sense that that would take priority over the general setting for the\n" + "> task/io context. So I think the patch is correct as-is.\n" + "> \n" + "> Adam, you'll want to rewrite the commit message though. A good commit\n" + "> message should explain WHY the change is made, not detail the code\n" + "> implementation of it.\n" + "\n" + "Got it I'll send something out soon.\n" + "\n" + "> \n" + "> -- \n" + "> Jens Axboe\n" + "> \n" + "\n" + "Take care,\n" + Adam -1a9ccf62224d1886d55304781a2c34d3fa83be8d9260bde3bf038f68f6c443d7 +91e67321f00bf30639e9f4c1c98945b1a1d696543eae3aeeadf09baa4a5f23a3
diff --git a/a/1.txt b/N2/1.txt index 6848d4f..4ee76f0 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,50 +1,57 @@ -VGhlIDEwLzEzLzIwMTYgMTQ6MDksIEplbnMgQXhib2Ugd3JvdGU6Cj4gT24gMTAvMTMvMjAxNiAw -MjowNiBQTSwgRGFuIFdpbGxpYW1zIHdyb3RlOgo+ID5PbiBUaHUsIE9jdCAxMywgMjAxNiBhdCAx -Mjo1MyBQTSwgQWRhbSBNYW56YW5hcmVzCj4gPjxhZGFtLm1hbnphbmFyZXNAaGdzdC5jb20+IHdy -b3RlOgo+ID4+UGF0Y2ggYWRkcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGlvY29udGV4dCBpb3By -aW8gYW5kIHRoZSBpb3ByaW8gb2YgYQo+ID4+cmVxdWVzdC4gVGhpcyB2YWx1ZSBpcyBzZXQgaW4g -YmxrX3JxX3NldF9wcmlvIHdoaWNoIHRha2VzIHRoZSByZXF1ZXN0IGFuZAo+ID4+dGhlIGlvYyBh -cyBhcmd1bWVudHMuIElmIHRoZSBpb2MgaXMgdmFsaWQgaW4gYmxrX3JxX3NldF9wcmlvIHRoZW4g -dGhlCj4gPj5pb3ByaW9yaXR5IG9mIHRoZSByZXF1ZXN0IGlzIHNldCBhcyB0aGUgaW9wcmlvcml0 -eSBvZiB0aGUgaW9jLiBJbgo+ID4+aW5pdF9yZXF1ZXN0X2Zyb21fYmlvIGEgY2hlY2sgaXMgbWFk -ZSB0byBzZWUgaWYgdGhlIGlvcHJpbyBvZiB0aGUgYmlvIGlzCj4gPj52YWxpZCBhbmQgaWYgc28g -dGhlbiB0aGUgcmVxdWVzdCBwcmlvIGNvbWVzIGZyb20gdGhlIGJpby4KPiA+Pgo+ID4+U2lnbmVk -LW9mZi1ieTogQWRhbSBNYW56YW5hbmFyZXMgPGFkYW0ubWFuemFuYXJlc0B3ZGMuY29tPgo+ID4+ -LS0tCj4gPj4gYmxvY2svYmxrLWNvcmUuYyAgICAgICB8ICA0ICsrKy0KPiA+PiBpbmNsdWRlL2xp -bnV4L2Jsa2Rldi5oIHwgMTQgKysrKysrKysrKysrKysKPiA+PiAyIGZpbGVzIGNoYW5nZWQsIDE3 -IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pgo+ID4+ZGlmZiAtLWdpdCBhL2Jsb2Nr -L2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jCj4gPj5pbmRleCAxNGQ3YzA3Li4zNjFiMWI5 -IDEwMDY0NAo+ID4+LS0tIGEvYmxvY2svYmxrLWNvcmUuYwo+ID4+KysrIGIvYmxvY2svYmxrLWNv -cmUuYwo+ID4+QEAgLTExNTMsNiArMTE1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqX19n -ZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybCwgaW50IG9wLAo+ID4+Cj4gPj4gICAg -ICAgIGJsa19ycV9pbml0KHEsIHJxKTsKPiA+PiAgICAgICAgYmxrX3JxX3NldF9ybChycSwgcmwp -Owo+ID4+KyAgICAgICBibGtfcnFfc2V0X3ByaW8ocnEsIGlvYyk7Cj4gPj4gICAgICAgIHJlcV9z -ZXRfb3BfYXR0cnMocnEsIG9wLCBvcF9mbGFncyB8IFJFUV9BTExPQ0VEKTsKPiA+Pgo+ID4+ICAg -ICAgICAvKiBpbml0IGVsdnByaXYgKi8KPiA+PkBAIC0xNjU2LDcgKzE2NTcsOCBAQCB2b2lkIGlu -aXRfcmVxdWVzdF9mcm9tX2JpbyhzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmlvICpiaW8p -Cj4gPj4KPiA+PiAgICAgICAgcmVxLT5lcnJvcnMgPSAwOwo+ID4+ICAgICAgICByZXEtPl9fc2Vj -dG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKPiA+Pi0gICAgICAgcmVxLT5pb3ByaW8gPSBi -aW9fcHJpbyhiaW8pOwo+ID4+KyAgICAgICBpZiAoaW9wcmlvX3ZhbGlkKGJpb19wcmlvKGJpbykp -KQo+ID4+KyAgICAgICAgICAgICAgIHJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKPiA+Cj4g -PlNob3VsZCB3ZSB1c2UgaW9wcmlvX2Jlc3QoKSBoZXJlPyAgSWYgcmVxLT5pb3ByaW8gYW5kIGJp -b19wcmlvKCkKPiA+ZGlzYWdyZWUgb25lIHNpZGUgaGFzIGV4cGxpY2l0bHkgYXNrZWQgZm9yIGEg -aGlnaGVyIHByaW9yaXR5Lgo+IAo+IEl0J3MgYSBnb29kIHF1ZXN0aW9uIC0gYnV0IGlmIHByaW9y -aXR5IGhhcyBiZWVuIHNldCBpbiB0aGUgYmlvLCBpdCBtYWtlcwo+IHNlbnNlIHRoYXQgdGhhdCB3 -b3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgdGhlIGdlbmVyYWwgc2V0dGluZyBmb3IgdGhlCj4gdGFz -ay9pbyBjb250ZXh0LiBTbyBJIHRoaW5rIHRoZSBwYXRjaCBpcyBjb3JyZWN0IGFzLWlzLgo+IAo+ -IEFkYW0sIHlvdSdsbCB3YW50IHRvIHJld3JpdGUgdGhlIGNvbW1pdCBtZXNzYWdlIHRob3VnaC4g -QSBnb29kIGNvbW1pdAo+IG1lc3NhZ2Ugc2hvdWxkIGV4cGxhaW4gV0hZIHRoZSBjaGFuZ2UgaXMg -bWFkZSwgbm90IGRldGFpbCB0aGUgY29kZQo+IGltcGxlbWVudGF0aW9uIG9mIGl0LgoKR290IGl0 -IEknbGwgc2VuZCBzb21ldGhpbmcgb3V0IHNvb24uCgo+IAo+IC0tIAo+IEplbnMgQXhib2UKPiAK -ClRha2UgY2FyZSwKQWRhbQpXZXN0ZXJuIERpZ2l0YWwgQ29ycG9yYXRpb24gKGFuZCBpdHMgc3Vi -c2lkaWFyaWVzKSBFLW1haWwgQ29uZmlkZW50aWFsaXR5IE5vdGljZSAmIERpc2NsYWltZXI6CgpU -aGlzIGUtbWFpbCBhbmQgYW55IGZpbGVzIHRyYW5zbWl0dGVkIHdpdGggaXQgbWF5IGNvbnRhaW4g -Y29uZmlkZW50aWFsIG9yIGxlZ2FsbHkgcHJpdmlsZWdlZCBpbmZvcm1hdGlvbiBvZiBXREMgYW5k -L29yIGl0cyBhZmZpbGlhdGVzLCBhbmQgYXJlIGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBv -ZiB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hpY2ggdGhleSBhcmUgYWRkcmVzc2VkLiBJ -ZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBhbnkgZGlzY2xvc3VyZSwgY29w -eWluZywgZGlzdHJpYnV0aW9uIG9yIGFueSBhY3Rpb24gdGFrZW4gb3Igb21pdHRlZCB0byBiZSB0 -YWtlbiBpbiByZWxpYW5jZSBvbiBpdCwgaXMgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2 -ZWQgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlh -dGVseSBhbmQgZGVsZXRlIHRoZSBlLW1haWwgaW4gaXRzIGVudGlyZXR5IGZyb20geW91ciBzeXN0 -ZW0uCg== +The 10/13/2016 14:09, Jens Axboe wrote: +> On 10/13/2016 02:06 PM, Dan Williams wrote: +> >On Thu, Oct 13, 2016 at 12:53 PM, Adam Manzanares +> ><adam.manzanares@hgst.com> wrote: +> >>Patch adds an association between iocontext ioprio and the ioprio of a +> >>request. This value is set in blk_rq_set_prio which takes the request and +> >>the ioc as arguments. If the ioc is valid in blk_rq_set_prio then the +> >>iopriority of the request is set as the iopriority of the ioc. In +> >>init_request_from_bio a check is made to see if the ioprio of the bio is +> >>valid and if so then the request prio comes from the bio. +> >> +> >>Signed-off-by: Adam Manzananares <adam.manzanares@wdc.com> +> >>--- +> >> block/blk-core.c | 4 +++- +> >> include/linux/blkdev.h | 14 ++++++++++++++ +> >> 2 files changed, 17 insertions(+), 1 deletion(-) +> >> +> >>diff --git a/block/blk-core.c b/block/blk-core.c +> >>index 14d7c07..361b1b9 100644 +> >>--- a/block/blk-core.c +> >>+++ b/block/blk-core.c +> >>@@ -1153,6 +1153,7 @@ static struct request *__get_request(struct request_list *rl, int op, +> >> +> >> blk_rq_init(q, rq); +> >> blk_rq_set_rl(rq, rl); +> >>+ blk_rq_set_prio(rq, ioc); +> >> req_set_op_attrs(rq, op, op_flags | REQ_ALLOCED); +> >> +> >> /* init elvpriv */ +> >>@@ -1656,7 +1657,8 @@ void init_request_from_bio(struct request *req, struct bio *bio) +> >> +> >> req->errors = 0; +> >> req->__sector = bio->bi_iter.bi_sector; +> >>- req->ioprio = bio_prio(bio); +> >>+ if (ioprio_valid(bio_prio(bio))) +> >>+ req->ioprio = bio_prio(bio); +> > +> >Should we use ioprio_best() here? If req->ioprio and bio_prio() +> >disagree one side has explicitly asked for a higher priority. +> +> It's a good question - but if priority has been set in the bio, it makes +> sense that that would take priority over the general setting for the +> task/io context. So I think the patch is correct as-is. +> +> Adam, you'll want to rewrite the commit message though. A good commit +> message should explain WHY the change is made, not detail the code +> implementation of it. + +Got it I'll send something out soon. + +> +> -- +> Jens Axboe +> + +Take care, +Adam diff --git a/a/content_digest b/N2/content_digest index 73bd6b4..cf78290 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -24,55 +24,62 @@ " linux-scsi <linux-scsi@vger.kernel.org>\0" "\00:1\0" "b\0" - "VGhlIDEwLzEzLzIwMTYgMTQ6MDksIEplbnMgQXhib2Ugd3JvdGU6Cj4gT24gMTAvMTMvMjAxNiAw\n" - "MjowNiBQTSwgRGFuIFdpbGxpYW1zIHdyb3RlOgo+ID5PbiBUaHUsIE9jdCAxMywgMjAxNiBhdCAx\n" - "Mjo1MyBQTSwgQWRhbSBNYW56YW5hcmVzCj4gPjxhZGFtLm1hbnphbmFyZXNAaGdzdC5jb20+IHdy\n" - "b3RlOgo+ID4+UGF0Y2ggYWRkcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGlvY29udGV4dCBpb3By\n" - "aW8gYW5kIHRoZSBpb3ByaW8gb2YgYQo+ID4+cmVxdWVzdC4gVGhpcyB2YWx1ZSBpcyBzZXQgaW4g\n" - "YmxrX3JxX3NldF9wcmlvIHdoaWNoIHRha2VzIHRoZSByZXF1ZXN0IGFuZAo+ID4+dGhlIGlvYyBh\n" - "cyBhcmd1bWVudHMuIElmIHRoZSBpb2MgaXMgdmFsaWQgaW4gYmxrX3JxX3NldF9wcmlvIHRoZW4g\n" - "dGhlCj4gPj5pb3ByaW9yaXR5IG9mIHRoZSByZXF1ZXN0IGlzIHNldCBhcyB0aGUgaW9wcmlvcml0\n" - "eSBvZiB0aGUgaW9jLiBJbgo+ID4+aW5pdF9yZXF1ZXN0X2Zyb21fYmlvIGEgY2hlY2sgaXMgbWFk\n" - "ZSB0byBzZWUgaWYgdGhlIGlvcHJpbyBvZiB0aGUgYmlvIGlzCj4gPj52YWxpZCBhbmQgaWYgc28g\n" - "dGhlbiB0aGUgcmVxdWVzdCBwcmlvIGNvbWVzIGZyb20gdGhlIGJpby4KPiA+Pgo+ID4+U2lnbmVk\n" - "LW9mZi1ieTogQWRhbSBNYW56YW5hbmFyZXMgPGFkYW0ubWFuemFuYXJlc0B3ZGMuY29tPgo+ID4+\n" - "LS0tCj4gPj4gYmxvY2svYmxrLWNvcmUuYyAgICAgICB8ICA0ICsrKy0KPiA+PiBpbmNsdWRlL2xp\n" - "bnV4L2Jsa2Rldi5oIHwgMTQgKysrKysrKysrKysrKysKPiA+PiAyIGZpbGVzIGNoYW5nZWQsIDE3\n" - "IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Pgo+ID4+ZGlmZiAtLWdpdCBhL2Jsb2Nr\n" - "L2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jCj4gPj5pbmRleCAxNGQ3YzA3Li4zNjFiMWI5\n" - "IDEwMDY0NAo+ID4+LS0tIGEvYmxvY2svYmxrLWNvcmUuYwo+ID4+KysrIGIvYmxvY2svYmxrLWNv\n" - "cmUuYwo+ID4+QEAgLTExNTMsNiArMTE1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmVxdWVzdCAqX19n\n" - "ZXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybCwgaW50IG9wLAo+ID4+Cj4gPj4gICAg\n" - "ICAgIGJsa19ycV9pbml0KHEsIHJxKTsKPiA+PiAgICAgICAgYmxrX3JxX3NldF9ybChycSwgcmwp\n" - "Owo+ID4+KyAgICAgICBibGtfcnFfc2V0X3ByaW8ocnEsIGlvYyk7Cj4gPj4gICAgICAgIHJlcV9z\n" - "ZXRfb3BfYXR0cnMocnEsIG9wLCBvcF9mbGFncyB8IFJFUV9BTExPQ0VEKTsKPiA+Pgo+ID4+ICAg\n" - "ICAgICAvKiBpbml0IGVsdnByaXYgKi8KPiA+PkBAIC0xNjU2LDcgKzE2NTcsOCBAQCB2b2lkIGlu\n" - "aXRfcmVxdWVzdF9mcm9tX2JpbyhzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmlvICpiaW8p\n" - "Cj4gPj4KPiA+PiAgICAgICAgcmVxLT5lcnJvcnMgPSAwOwo+ID4+ICAgICAgICByZXEtPl9fc2Vj\n" - "dG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKPiA+Pi0gICAgICAgcmVxLT5pb3ByaW8gPSBi\n" - "aW9fcHJpbyhiaW8pOwo+ID4+KyAgICAgICBpZiAoaW9wcmlvX3ZhbGlkKGJpb19wcmlvKGJpbykp\n" - "KQo+ID4+KyAgICAgICAgICAgICAgIHJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKPiA+Cj4g\n" - "PlNob3VsZCB3ZSB1c2UgaW9wcmlvX2Jlc3QoKSBoZXJlPyAgSWYgcmVxLT5pb3ByaW8gYW5kIGJp\n" - "b19wcmlvKCkKPiA+ZGlzYWdyZWUgb25lIHNpZGUgaGFzIGV4cGxpY2l0bHkgYXNrZWQgZm9yIGEg\n" - "aGlnaGVyIHByaW9yaXR5Lgo+IAo+IEl0J3MgYSBnb29kIHF1ZXN0aW9uIC0gYnV0IGlmIHByaW9y\n" - "aXR5IGhhcyBiZWVuIHNldCBpbiB0aGUgYmlvLCBpdCBtYWtlcwo+IHNlbnNlIHRoYXQgdGhhdCB3\n" - "b3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgdGhlIGdlbmVyYWwgc2V0dGluZyBmb3IgdGhlCj4gdGFz\n" - "ay9pbyBjb250ZXh0LiBTbyBJIHRoaW5rIHRoZSBwYXRjaCBpcyBjb3JyZWN0IGFzLWlzLgo+IAo+\n" - "IEFkYW0sIHlvdSdsbCB3YW50IHRvIHJld3JpdGUgdGhlIGNvbW1pdCBtZXNzYWdlIHRob3VnaC4g\n" - "QSBnb29kIGNvbW1pdAo+IG1lc3NhZ2Ugc2hvdWxkIGV4cGxhaW4gV0hZIHRoZSBjaGFuZ2UgaXMg\n" - "bWFkZSwgbm90IGRldGFpbCB0aGUgY29kZQo+IGltcGxlbWVudGF0aW9uIG9mIGl0LgoKR290IGl0\n" - "IEknbGwgc2VuZCBzb21ldGhpbmcgb3V0IHNvb24uCgo+IAo+IC0tIAo+IEplbnMgQXhib2UKPiAK\n" - "ClRha2UgY2FyZSwKQWRhbQpXZXN0ZXJuIERpZ2l0YWwgQ29ycG9yYXRpb24gKGFuZCBpdHMgc3Vi\n" - "c2lkaWFyaWVzKSBFLW1haWwgQ29uZmlkZW50aWFsaXR5IE5vdGljZSAmIERpc2NsYWltZXI6CgpU\n" - "aGlzIGUtbWFpbCBhbmQgYW55IGZpbGVzIHRyYW5zbWl0dGVkIHdpdGggaXQgbWF5IGNvbnRhaW4g\n" - "Y29uZmlkZW50aWFsIG9yIGxlZ2FsbHkgcHJpdmlsZWdlZCBpbmZvcm1hdGlvbiBvZiBXREMgYW5k\n" - "L29yIGl0cyBhZmZpbGlhdGVzLCBhbmQgYXJlIGludGVuZGVkIHNvbGVseSBmb3IgdGhlIHVzZSBv\n" - "ZiB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdG8gd2hpY2ggdGhleSBhcmUgYWRkcmVzc2VkLiBJ\n" - "ZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBhbnkgZGlzY2xvc3VyZSwgY29w\n" - "eWluZywgZGlzdHJpYnV0aW9uIG9yIGFueSBhY3Rpb24gdGFrZW4gb3Igb21pdHRlZCB0byBiZSB0\n" - "YWtlbiBpbiByZWxpYW5jZSBvbiBpdCwgaXMgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2\n" - "ZWQgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlh\n" - "dGVseSBhbmQgZGVsZXRlIHRoZSBlLW1haWwgaW4gaXRzIGVudGlyZXR5IGZyb20geW91ciBzeXN0\n" - ZW0uCg== + "The 10/13/2016 14:09, Jens Axboe wrote:\n" + "> On 10/13/2016 02:06 PM, Dan Williams wrote:\n" + "> >On Thu, Oct 13, 2016 at 12:53 PM, Adam Manzanares\n" + "> ><adam.manzanares@hgst.com> wrote:\n" + "> >>Patch adds an association between iocontext ioprio and the ioprio of a\n" + "> >>request. This value is set in blk_rq_set_prio which takes the request and\n" + "> >>the ioc as arguments. If the ioc is valid in blk_rq_set_prio then the\n" + "> >>iopriority of the request is set as the iopriority of the ioc. In\n" + "> >>init_request_from_bio a check is made to see if the ioprio of the bio is\n" + "> >>valid and if so then the request prio comes from the bio.\n" + "> >>\n" + "> >>Signed-off-by: Adam Manzananares <adam.manzanares@wdc.com>\n" + "> >>---\n" + "> >> block/blk-core.c | 4 +++-\n" + "> >> include/linux/blkdev.h | 14 ++++++++++++++\n" + "> >> 2 files changed, 17 insertions(+), 1 deletion(-)\n" + "> >>\n" + "> >>diff --git a/block/blk-core.c b/block/blk-core.c\n" + "> >>index 14d7c07..361b1b9 100644\n" + "> >>--- a/block/blk-core.c\n" + "> >>+++ b/block/blk-core.c\n" + "> >>@@ -1153,6 +1153,7 @@ static struct request *__get_request(struct request_list *rl, int op,\n" + "> >>\n" + "> >> blk_rq_init(q, rq);\n" + "> >> blk_rq_set_rl(rq, rl);\n" + "> >>+ blk_rq_set_prio(rq, ioc);\n" + "> >> req_set_op_attrs(rq, op, op_flags | REQ_ALLOCED);\n" + "> >>\n" + "> >> /* init elvpriv */\n" + "> >>@@ -1656,7 +1657,8 @@ void init_request_from_bio(struct request *req, struct bio *bio)\n" + "> >>\n" + "> >> req->errors = 0;\n" + "> >> req->__sector = bio->bi_iter.bi_sector;\n" + "> >>- req->ioprio = bio_prio(bio);\n" + "> >>+ if (ioprio_valid(bio_prio(bio)))\n" + "> >>+ req->ioprio = bio_prio(bio);\n" + "> >\n" + "> >Should we use ioprio_best() here? If req->ioprio and bio_prio()\n" + "> >disagree one side has explicitly asked for a higher priority.\n" + "> \n" + "> It's a good question - but if priority has been set in the bio, it makes\n" + "> sense that that would take priority over the general setting for the\n" + "> task/io context. So I think the patch is correct as-is.\n" + "> \n" + "> Adam, you'll want to rewrite the commit message though. A good commit\n" + "> message should explain WHY the change is made, not detail the code\n" + "> implementation of it.\n" + "\n" + "Got it I'll send something out soon.\n" + "\n" + "> \n" + "> -- \n" + "> Jens Axboe\n" + "> \n" + "\n" + "Take care,\n" + Adam -1a9ccf62224d1886d55304781a2c34d3fa83be8d9260bde3bf038f68f6c443d7 +d0f117094a9ee5263b1d2b662ba0d0711cc8a7f2a0ec417069fb8ab530be4846
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.