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

diff --git a/a/1.txt b/N1/1.txt
index 575d6f1..4c9a071 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,26 +1,48 @@
-T24gMTIvMTcvMjAxNiAwMToxMiBBTSwgSmVucyBBeGJvZSB3cm90ZToNCj4gK3N0YXRpYyBib29s
-IGRkX3B1dF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0ICpycSkNCj4gK3sNCj4gKwkvKg0KPiArCcKg
-KiBJZiBpdCdzIGEgcmVhbCByZXF1ZXN0LCB3ZSBqdXN0IGhhdmUgdG8NCmZyZWUgaXQuIEZvciBh
-IHNoYWRvdw0KPiArCcKgKiByZXF1ZXN0LCB3ZSBzaG91bGQgb25seSBmcmVlIGl0IGlmIHdlIGhh
-dmVuJ3Qgc3RhcnRlZCBpdC4gQQ0KPiArCcKgKiBzdGFydGVkIHJlcXVlc3QgaXMgbWFwcGVkIHRv
-IGEgcmVhbCBvbmUsIGFuZCB0aGUNCnJlYWwgb25lIHdpbGwNCj4gKwnCoCogZnJlZSBpdC4gV2Ug
-Y2FuIGdldCBoZXJlIHdpdGggcmVxdWVzdCBtZXJnZXMsIHNpbmNlIHdlIHRoZW4NCj4gKwnCoCog
-ZnJlZSB0aGUgcmVxdWVzdCBiZWZvcmUgd2Ugc3RhcnQvaXNzdWUgaXQuDQo+ICsJwqAqLw0KPiAr
-CQ0KaWYgKCFibGtfbXFfc2NoZWRfcnFfaXNfc2hhZG93KHJxKSkNCj4gKwkJcmV0dXJuIGZhbHNl
-Ow0KPiArDQo+ICsJaWYgKCEocnEtPnJxX2ZsYWdzICYgUlFGX1NUQVJURUQpKSB7DQo+ICsJCXN0
-cnVjdCByZXF1ZXN0X3F1ZXVlICpxDQo9IHJxLT5xOw0KPiArCQlzdHJ1Y3QgZGVhZGxpbmVfZGF0
-YSAqZGQgPSBxLT5lbGV2YXRvci0+ZWxldmF0b3JfZGF0YTsNCj4gKw0KPiArCQkvKg0KPiArCQnC
-oCogSU8gY29tcGxldGlvbiB3b3VsZCBub3JtYWxseSBkbw0KdGhpcywgYnV0IGlmIHdlIG1lcmdl
-DQo+ICsJCcKgKiBhbmQgZnJlZSBiZWZvcmUgd2UgaXNzdWUgdGhlIHJlcXVlc3QsIGRyb3AgYm90
-aCB0aGUNCj4gKwkJwqAqIHRhZyBhbmQgcXVldWUgcmVmDQo+ICsJCcKgKi8NCj4gKwkNCglibGtf
-bXFfc2NoZWRfZnJlZV9zaGFkb3dfcmVxdWVzdChkZC0+dGFncywgcnEpOw0KPiArCQlibGtfcXVl
-dWVfZXhpdChxKTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCg0KSGVsbG8g
-SmVucywNCg0KU2luY2UgdGhpcyBwYXRjaCBpcyB0aGUgZmlyc3QgcGF0Y2ggdGhhdCBpbnRyb2R1
-Y2VzIGEgY2FsbCB0byBibGtfcXVldWVfZXhpdCgpDQpmcm9tIGEgbW9kdWxlIG90aGVyIHRoYW4g
-dGhlIGJsb2NrIGxheWVyIGNvcmUsIHNob3VsZG4ndCB0aGlzIHBhdGNoIGV4cG9ydCB0aGUNCmJs
-a19xdWV1ZV9leGl0KCkgZnVuY3Rpb24/IEFuIGF0dGVtcHQgdG8gYnVpbGQgbXEtZGVhZGxpbmUg
-YXMgYSBtb2R1bGUgcmVzdWx0ZWQNCmluIHRoZSBmb2xsb3dpbmc6DQoNCkVSUk9SOiAiYmxrX3F1
-ZXVlX2V4aXQiIFtibG9jay9tcS1kZWFkbGluZS5rb10gdW5kZWZpbmVkIQ0KbWFrZVsxXTogKioq
-IFtzY3JpcHRzL01ha2VmaWxlLm1vZHBvc3Q6OTE6IF9fbW9kcG9zdF0gRXJyb3IgMQ0KbWFrZTog
-KioqIFtNYWtlZmlsZToxMTk4OiBtb2R1bGVzXSBFcnJvciAyDQpFeGVjdXRpb24gZmFpbGVkOiBt
-YWtlIGFsbA0KDQpCYXJ0Lg==
+On 12/17/2016 01:12 AM, Jens Axboe wrote:
+> +static bool dd_put_request(struct request *rq)
+> +{
+> +	/*
+> +	 * If it's a real request, we just have to
+free it. For a shadow
+> +	 * request, we should only free it if we haven't started it. A
+> +	 * started request is mapped to a real one, and the
+real one will
+> +	 * free it. We can get here with request merges, since we then
+> +	 * free the request before we start/issue it.
+> +	 */
+> +	
+if (!blk_mq_sched_rq_is_shadow(rq))
+> +		return false;
+> +
+> +	if (!(rq->rq_flags & RQF_STARTED)) {
+> +		struct request_queue *q
+= rq->q;
+> +		struct deadline_data *dd = q->elevator->elevator_data;
+> +
+> +		/*
+> +		 * IO completion would normally do
+this, but if we merge
+> +		 * and free before we issue the request, drop both the
+> +		 * tag and queue ref
+> +		 */
+> +	
+	blk_mq_sched_free_shadow_request(dd->tags, rq);
+> +		blk_queue_exit(q);
+> +	}
+> +
+> +	return true;
+> +}
+
+Hello Jens,
+
+Since this patch is the first patch that introduces a call to blk_queue_exit()
+from a module other than the block layer core, shouldn't this patch export the
+blk_queue_exit() function? An attempt to build mq-deadline as a module resulted
+in the following:
+
+ERROR: "blk_queue_exit" [block/mq-deadline.ko] undefined!
+make[1]: *** [scripts/Makefile.modpost:91: __modpost] Error 1
+make: *** [Makefile:1198: modules] Error 2
+Execution failed: make all
+
+Bart.
diff --git a/a/content_digest b/N1/content_digest
index ffed73d..0845efc 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -11,31 +11,53 @@
  " paolo.valente@linaro.org <paolo.valente@linaro.org>\0"
  "\00:1\0"
  "b\0"
- "T24gMTIvMTcvMjAxNiAwMToxMiBBTSwgSmVucyBBeGJvZSB3cm90ZToNCj4gK3N0YXRpYyBib29s\n"
- "IGRkX3B1dF9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0ICpycSkNCj4gK3sNCj4gKwkvKg0KPiArCcKg\n"
- "KiBJZiBpdCdzIGEgcmVhbCByZXF1ZXN0LCB3ZSBqdXN0IGhhdmUgdG8NCmZyZWUgaXQuIEZvciBh\n"
- "IHNoYWRvdw0KPiArCcKgKiByZXF1ZXN0LCB3ZSBzaG91bGQgb25seSBmcmVlIGl0IGlmIHdlIGhh\n"
- "dmVuJ3Qgc3RhcnRlZCBpdC4gQQ0KPiArCcKgKiBzdGFydGVkIHJlcXVlc3QgaXMgbWFwcGVkIHRv\n"
- "IGEgcmVhbCBvbmUsIGFuZCB0aGUNCnJlYWwgb25lIHdpbGwNCj4gKwnCoCogZnJlZSBpdC4gV2Ug\n"
- "Y2FuIGdldCBoZXJlIHdpdGggcmVxdWVzdCBtZXJnZXMsIHNpbmNlIHdlIHRoZW4NCj4gKwnCoCog\n"
- "ZnJlZSB0aGUgcmVxdWVzdCBiZWZvcmUgd2Ugc3RhcnQvaXNzdWUgaXQuDQo+ICsJwqAqLw0KPiAr\n"
- "CQ0KaWYgKCFibGtfbXFfc2NoZWRfcnFfaXNfc2hhZG93KHJxKSkNCj4gKwkJcmV0dXJuIGZhbHNl\n"
- "Ow0KPiArDQo+ICsJaWYgKCEocnEtPnJxX2ZsYWdzICYgUlFGX1NUQVJURUQpKSB7DQo+ICsJCXN0\n"
- "cnVjdCByZXF1ZXN0X3F1ZXVlICpxDQo9IHJxLT5xOw0KPiArCQlzdHJ1Y3QgZGVhZGxpbmVfZGF0\n"
- "YSAqZGQgPSBxLT5lbGV2YXRvci0+ZWxldmF0b3JfZGF0YTsNCj4gKw0KPiArCQkvKg0KPiArCQnC\n"
- "oCogSU8gY29tcGxldGlvbiB3b3VsZCBub3JtYWxseSBkbw0KdGhpcywgYnV0IGlmIHdlIG1lcmdl\n"
- "DQo+ICsJCcKgKiBhbmQgZnJlZSBiZWZvcmUgd2UgaXNzdWUgdGhlIHJlcXVlc3QsIGRyb3AgYm90\n"
- "aCB0aGUNCj4gKwkJwqAqIHRhZyBhbmQgcXVldWUgcmVmDQo+ICsJCcKgKi8NCj4gKwkNCglibGtf\n"
- "bXFfc2NoZWRfZnJlZV9zaGFkb3dfcmVxdWVzdChkZC0+dGFncywgcnEpOw0KPiArCQlibGtfcXVl\n"
- "dWVfZXhpdChxKTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gdHJ1ZTsNCj4gK30NCg0KSGVsbG8g\n"
- "SmVucywNCg0KU2luY2UgdGhpcyBwYXRjaCBpcyB0aGUgZmlyc3QgcGF0Y2ggdGhhdCBpbnRyb2R1\n"
- "Y2VzIGEgY2FsbCB0byBibGtfcXVldWVfZXhpdCgpDQpmcm9tIGEgbW9kdWxlIG90aGVyIHRoYW4g\n"
- "dGhlIGJsb2NrIGxheWVyIGNvcmUsIHNob3VsZG4ndCB0aGlzIHBhdGNoIGV4cG9ydCB0aGUNCmJs\n"
- "a19xdWV1ZV9leGl0KCkgZnVuY3Rpb24/IEFuIGF0dGVtcHQgdG8gYnVpbGQgbXEtZGVhZGxpbmUg\n"
- "YXMgYSBtb2R1bGUgcmVzdWx0ZWQNCmluIHRoZSBmb2xsb3dpbmc6DQoNCkVSUk9SOiAiYmxrX3F1\n"
- "ZXVlX2V4aXQiIFtibG9jay9tcS1kZWFkbGluZS5rb10gdW5kZWZpbmVkIQ0KbWFrZVsxXTogKioq\n"
- "IFtzY3JpcHRzL01ha2VmaWxlLm1vZHBvc3Q6OTE6IF9fbW9kcG9zdF0gRXJyb3IgMQ0KbWFrZTog\n"
- "KioqIFtNYWtlZmlsZToxMTk4OiBtb2R1bGVzXSBFcnJvciAyDQpFeGVjdXRpb24gZmFpbGVkOiBt\n"
- YWtlIGFsbA0KDQpCYXJ0Lg==
+ "On 12/17/2016 01:12 AM, Jens Axboe wrote:\n"
+ "> +static bool dd_put_request(struct request *rq)\n"
+ "> +{\n"
+ "> +\t/*\n"
+ "> +\t\302\240* If it's a real request, we just have to\n"
+ "free it. For a shadow\n"
+ "> +\t\302\240* request, we should only free it if we haven't started it. A\n"
+ "> +\t\302\240* started request is mapped to a real one, and the\n"
+ "real one will\n"
+ "> +\t\302\240* free it. We can get here with request merges, since we then\n"
+ "> +\t\302\240* free the request before we start/issue it.\n"
+ "> +\t\302\240*/\n"
+ "> +\t\n"
+ "if (!blk_mq_sched_rq_is_shadow(rq))\n"
+ "> +\t\treturn false;\n"
+ "> +\n"
+ "> +\tif (!(rq->rq_flags & RQF_STARTED)) {\n"
+ "> +\t\tstruct request_queue *q\n"
+ "= rq->q;\n"
+ "> +\t\tstruct deadline_data *dd = q->elevator->elevator_data;\n"
+ "> +\n"
+ "> +\t\t/*\n"
+ "> +\t\t\302\240* IO completion would normally do\n"
+ "this, but if we merge\n"
+ "> +\t\t\302\240* and free before we issue the request, drop both the\n"
+ "> +\t\t\302\240* tag and queue ref\n"
+ "> +\t\t\302\240*/\n"
+ "> +\t\n"
+ "\tblk_mq_sched_free_shadow_request(dd->tags, rq);\n"
+ "> +\t\tblk_queue_exit(q);\n"
+ "> +\t}\n"
+ "> +\n"
+ "> +\treturn true;\n"
+ "> +}\n"
+ "\n"
+ "Hello Jens,\n"
+ "\n"
+ "Since this patch is the first patch that introduces a call to blk_queue_exit()\n"
+ "from a module other than the block layer core, shouldn't this patch export the\n"
+ "blk_queue_exit() function? An attempt to build mq-deadline as a module resulted\n"
+ "in the following:\n"
+ "\n"
+ "ERROR: \"blk_queue_exit\" [block/mq-deadline.ko] undefined!\n"
+ "make[1]: *** [scripts/Makefile.modpost:91: __modpost] Error 1\n"
+ "make: *** [Makefile:1198: modules] Error 2\n"
+ "Execution failed: make all\n"
+ "\n"
+ Bart.
 
-82b519a8e5e90082f17ed2c48cdde4204be435053000daa492e3a7390bf0d937
+fb7be90f92404f8228a40c7375b9f5feb755f9bced88c586897886a87dbdfdd8

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.