From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id EC9A4C7EE22 for ; Thu, 18 May 2023 01:05:56 +0000 (UTC) Received: from [127.0.0.1] (helo=sfs-ml-1.v29.lw.sourceforge.com) by sfs-ml-1.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1pzS5Z-0005W3-FO; Thu, 18 May 2023 01:05:54 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pzS5Y-0005Vx-Se for linux-f2fs-devel@lists.sourceforge.net; Thu, 18 May 2023 01:05:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=In-Reply-To:Content-Transfer-Encoding:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Ba/lu2+1/dGply0nfby3337KT+rUocrhTmIDvrpo9dw=; b=g12ohInBijH/m8kWW4sArMVUQ/ FF44wHC63sisGucuru+f56IjrNnYuqx4v07WI9eAUXjyIQBQ+SEDFUsKaMl9QQ4wPYkwan9T1rk9R Lc1cgWhbIRAqgdmxDlXlCtfVtxZgCDcf2tCaj3sp1utbVmFv7Ov+SyRFZQ4HfEwPh+dc=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Ba/lu2+1/dGply0nfby3337KT+rUocrhTmIDvrpo9dw=; b=cpaWJ1FAaB5Sb2lQf339ur51cu ku1pilELb6UvAtMqKcN1kDQ0zh/8Hf8v1JunI1q15GVAOsPL4xuoJf9jnLoe8o43BV/4oC6ANnwfg JbfrkSv2CF+yy/wNSHCmMqIc3cvGcdmqj/fL3q5JKbq5Rl3tcMtZm4AqqtTtONq66JE0=; Received: from dfw.source.kernel.org ([139.178.84.217]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1pzS5Y-00BhTf-NJ for linux-f2fs-devel@lists.sourceforge.net; Thu, 18 May 2023 01:05:53 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id DCB2464659; Thu, 18 May 2023 01:05:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F2F79C433EF; Thu, 18 May 2023 01:05:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684371946; bh=xt3Hpg03EBIFU3chzx2Jv3j7LizWB5huuXLL7P52kpk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IqbmavJ6p11BKKgn4KbdAJYTzhGnsJZ3UOSx1FIny0IW3zrT+E67LdN7X9N0oSu1F GppMo4U8FepLYTQ5J/zSYLlAg7Tkte9q9U8fby8vItPR50lplvXSr/1dDhKcJepqkI VkKF7zXcnY2fxB77uWZ2aiYt6OCCUY6klIVsPnxdtkyMkUn214Op5eBWiWlZb0+Gfk jn1mlySe8oS31P8Qklrt9atGqG+MdUH5ZisXPMJ52Uu0m0IlJ+xFIrAOswWt4lFNrQ sbBMEsVEJpEOzYMtSBtcBDGctxAYobaT92+OGvRnX38a8cdWcgzITCm+Ru9ePuIjMd M9q0LK3k57DGg== Date: Wed, 17 May 2023 18:05:44 -0700 From: Jaegeuk Kim To: Daejun Park Message-ID: References: <20230508081042epcms2p8a637deae7de1829f54614e09d5fde5e5@epcms2p8> <20230511052416epcms2p617838faa71a203da6978c89ffd216e91@epcms2p6> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230511052416epcms2p617838faa71a203da6978c89ffd216e91@epcms2p6> X-Headers-End: 1pzS5Y-00BhTf-NJ Subject: Re: [f2fs-dev] (2) [PATCH v6] f2fs: add async reset zone command support X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linux-kernel@vger.kernel.org" , "rostedt@goodmis.org" , "linux-f2fs-devel@lists.sourceforge.net" , "mhiramat@kernel.org" , Seokhwan Kim , beomsu kim , "linux-trace-kernel@vger.kernel.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gMDUvMTEsIERhZWp1biBQYXJrIHdyb3RlOgo+ID4gU2VuZGVyIDogSmFlZ2V1ayBLaW3CoDxq YWVnZXVrQGtlcm5lbC5vcmc+Cj4gPiBEYXRlIDogMjAyMy0wNS0xMCAwMzo1MyAoR01UKzkpCj4g PiBUaXRsZSA6IFJlOiBbUEFUQ0ggdjZdIGYyZnM6IGFkZCBhc3luYyByZXNldCB6b25lIGNvbW1h bmQgc3VwcG9ydAo+ID4gVG8gOiDrsJXrjIDspIA8ZGFlanVuNy5wYXJrQHNhbXN1bmcuY29tPgo+ ID4gQ0MgOiBjaGFvQGtlcm5lbC5vcmc8Y2hhb0BrZXJuZWwub3JnPiwgcm9zdGVkdEBnb29kbWlz Lm9yZzxyb3N0ZWR0QGdvb2RtaXMub3JnPiwgbWhpcmFtYXRAa2VybmVsLm9yZzxtaGlyYW1hdEBr ZXJuZWwub3JnPiwgbGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ8bGludXgt ZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+LCBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+LCBsaW51eC10cmFjZS1rZXJuZWxA dmdlci5rZXJuZWwub3JnPGxpbnV4LXRyYWNlLWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+LCDquYDs hJ3tmZg8c3Vra2Eua2ltQHNhbXN1bmcuY29tPiwg7Iah7Jqp6ri4PHlvbmdnaWwuc29uZ0BzYW1z dW5nLmNvbT4sIOq5gOuylOyImDxiZW9tc3U3LmtpbUBzYW1zdW5nLmNvbT4KPiA+IMKgCj4gPiBP biAwNS8wOCwgRGFlanVuIFBhcmsgd3JvdGU6Cj4gPiA+IHY1IC0+IHY2Cj4gPiA+IEFkZGVkIHRy YWNlX2YyZnNfaW9zdGF0IHN1cHBvcnQgZm9yIHpvbmUgcmVzZXQgY29tbWFuZC4KPiA+ID4gCj4g PiA+IHY0IC0+IHY1Cj4gPiA+IEFkZGVkIGYyZnMgaW9zdGF0IGZvciB6b25lIHJlc2V0IGNvbW1h bmQuCj4gPiA+IAo+ID4gPiB2MyAtPiB2NAo+ID4gPiBGaXhlZCBidWlsZCBlcnJvciBjYXVzZWQg YnkgdW51c2VkIGZ1bmN0aW9uLgo+ID4gPiAKPiA+ID4gdjIgLT4gdjMKPiA+ID4gTW9kaWZpZWQg YXJndW1lbnRzIHRvIGJlIGNvcnJlY3QgZm9yIGZ0cmFjZSBwYXJhbWV0ZXIuCj4gPiA+IENoYW5n ZWQgX19zdWJtaXRfem9uZV9yZXNldF9jbWQgdG8gdm9pZCByZXR1cm4uCj4gPiA+IFJlZmFjdG9y ZWQgdGhlIGYyZnNfd2FpdF9kaXNjYXJkX2JpbyBmdW5jdGlvbi4KPiA+ID4gRml4ZWQgY29kZSB0 aGF0IHdhcyBwcmV2aW91c2x5IGluY29ycmVjdGx5IG1lcmdlZC4KPiA+ID4gCj4gPiA+IHYxIC0+ IHYyCj4gPiA+IENoYW5nZWQgdG8gYXBwbHkgdGhlIG9wdGlvbmFsIGFzeW5jIHJlc2V0IHdyaXRl IHBvaW50ZXIgYnkgZGVmYXVsdC4KPiA+IAo+ID4gRG9uJ3QgYWRkIHRoZSBoaXN0b3J5IGluIHRo ZSBwYXRjaCBkZXNjcmlwdGlvbi4KPiAKPiBPSywgSSB3aWxsIGRvLgo+IAo+ID4gPiAKPiA+ID4g VGhpcyBwYXRjaCBlbmFibGVzIHN1Ym1pdCByZXNldCB6b25lIGNvbW1hbmQgYXN5bmNob3Jub3Vz bHkuIEl0IGhlbHBzCj4gPiA+IGRlY3JlYXNlIGF2ZXJhZ2UgbGF0ZW5jeSBvZiB3cml0ZSBJT3Mg aW4gaGlnaCB1dGlsaXphdGlvbiBzY2VuYXJpbyBieQo+ID4gPiBmYXN0ZXIgY2hlY2twb2ludGlu Zy4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IERhZWp1biBQYXJrIDxkYWVqdW43LnBhcmtA c2Ftc3VuZy5jb20+Cj4gPiA+IC0tLQo+ID4gPiDCoGZzL2YyZnMvZjJmcy5oIMKgIMKgIMKgIMKg IMKgIMKgIMKgfCDCoDEgKwo+ID4gPiDCoGZzL2YyZnMvaW9zdGF0LmMgwqAgwqAgwqAgwqAgwqAg wqB8IMKgMSArCj4gPiA+IMKgZnMvZjJmcy9zZWdtZW50LmMgwqAgwqAgwqAgwqAgwqAgfCA4NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiA+IMKgaW5jbHVkZS90cmFj ZS9ldmVudHMvZjJmcy5oIHwgMjQgKysrKysrKysrLS0KPiA+ID4gwqA0IGZpbGVzIGNoYW5nZWQs IDEwNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2ZzL2YyZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPiA+ID4gaW5kZXggZDIxMWVlODlj MTU4Li41MWI2OGE2Mjk4MTQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPiA+ ICsrKyBiL2ZzL2YyZnMvZjJmcy5oCj4gPiA+IEBAIC0xMTc1LDYgKzExNzUsNyBAQCBlbnVtIGlv c3RhdF90eXBlIHsKPiA+ID4gwqAgwqAgwqAgwqAgwqAvKiBvdGhlciAqLwo+ID4gPiDCoCDCoCDC oCDCoCDCoEZTX0RJU0NBUkRfSU8sIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg LyogZGlzY2FyZCAqLwo+ID4gPiDCoCDCoCDCoCDCoCDCoEZTX0ZMVVNIX0lPLCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIGZsdXNoICovCj4gPiA+ICsgwqAgwqAgwqAgwqBG U19aT05FX1JFU0VUX0lPLCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIHpvbmUgcmVzZXQgKi8K PiA+ID4gwqAgwqAgwqAgwqAgwqBOUl9JT19UWVBFLAo+ID4gPiDCoH07Cj4gPiA+IMKgCj4gPiA+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL2lvc3RhdC5jIGIvZnMvZjJmcy9pb3N0YXQuYwo+ID4gPiBp bmRleCAzZDViZmIxYWQ1ODUuLmY4NzAzMDM4ZTFkOCAxMDA2NDQKPiA+ID4gLS0tIGEvZnMvZjJm cy9pb3N0YXQuYwo+ID4gPiArKysgYi9mcy9mMmZzL2lvc3RhdC5jCj4gPiA+IEBAIC04MCw2ICs4 MCw3IEBAIGludCBfX21heWJlX3VudXNlZCBpb3N0YXRfaW5mb19zZXFfc2hvdyhzdHJ1Y3Qgc2Vx X2ZpbGUgKnNlcSwgdm9pZCAqb2Zmc2V0KQo+ID4gPiDCoCDCoCDCoCDCoCDCoHNlcV9wdXRzKHNl cSwgIltPVEhFUl1cbiIpOwo+ID4gPiDCoCDCoCDCoCDCoCDCoElPU1RBVF9JTkZPX1NIT1coImZz IGRpc2NhcmQiLCBGU19ESVNDQVJEX0lPKTsKPiA+ID4gwqAgwqAgwqAgwqAgwqBJT1NUQVRfSU5G T19TSE9XKCJmcyBmbHVzaCIsIEZTX0ZMVVNIX0lPKTsKPiA+ID4gKyDCoCDCoCDCoCDCoElPU1RB VF9JTkZPX1NIT1coImZzIHpvbmUgcmVzZXQiLCBGU19aT05FX1JFU0VUX0lPKTsKPiA+ID4gwqAK PiA+ID4gwqAgwqAgwqAgwqAgwqByZXR1cm4gMDsKPiA+ID4gwqB9Cj4gPiA+IGRpZmYgLS1naXQg YS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4gPiA+IGluZGV4IDZkYjQx MGYxYmI4Yy4uNDgwMmIwNWE3OTViIDEwMDY0NAo+ID4gPiAtLS0gYS9mcy9mMmZzL3NlZ21lbnQu Ywo+ID4gPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gPiBAQCAtMTE5Niw2ICsxMTk2LDQ1 IEBAIHN0YXRpYyB2b2lkIF9faW5pdF9kaXNjYXJkX3BvbGljeShzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4gPiA+IMKgc3RhdGljIHZvaWQgX191cGRhdGVfZGlzY2FyZF90cmVlX3JhbmdlKHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibG9ja190 IGxzdGFydCwKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBibG9ja190IHN0YXJ0LCBibG9ja190IGxlbik7Cj4gPiA+ICsKPiA+ID4gKyNpZmRl ZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4gPiArc3RhdGljIHZvaWQgX19zdWJtaXRfem9uZV9y ZXNldF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gCj4gPiBXaHkgY2FuJ3Qgd2Ug dXNlIF9fZjJmc19pc3N1ZV9kaXNjYXJkX3pvbmUoKT8KPiAKPiBJbiBteSB1bmRlcnN0YW5kaW5n LCBfX2YyZnNfaXNzdWVfZGlzY2FyZF96b25lIGlzIHVzZWQgdG8gcXVldWUgdGhlIHpvbmUgcmVz ZXQgY29tbWFuZC4KPiBXaGljaCBwb2ludCBkbyB5b3UgdGhpbmsgaXMgdGhlIGlzc3VlPwoKVGhh dCBhY3R1YWxseSBjYWxscyBibGtkZXZfem9uZV9tZ210KCkgd2hpY2ggaXMgZG9pbmcgdGhlIHNh bWUgdGhpbmcuCgo+IAo+ID4gCj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RydWN0IGRpc2NhcmRfY21kICpkYywgYmxrX29wZl90IGZs YWcsCj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgc3RydWN0IGxpc3RfaGVhZCAqd2FpdF9saXN0LAo+ID4gPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVuc2lnbmVkIGludCAqaXNzdWVk KQo+ID4gPiArewo+ID4gPiArIMKgIMKgIMKgIMKgc3RydWN0IGRpc2NhcmRfY21kX2NvbnRyb2wg KmRjYyA9IFNNX0koc2JpKS0+ZGNjX2luZm87Cj4gPiA+ICsgwqAgwqAgwqAgwqBzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2ID0gZGMtPmJkZXY7Cj4gPiA+ICsgwqAgwqAgwqAgwqBzdHJ1Y3QgYmlv ICpiaW8gPSBiaW9fYWxsb2MoYmRldiwgMCwgUkVRX09QX1pPTkVfUkVTRVQgfCBmbGFnLCBHRlBf Tk9GUyk7Cj4gPiA+ICsgwqAgwqAgwqAgwqB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gPiArCj4g PiA+ICsgwqAgwqAgwqAgwqB0cmFjZV9mMmZzX2lzc3VlX3Jlc2V0X3pvbmUoYmRldiwgZGMtPmRp LnN0YXJ0KTsKPiA+ID4gKwo+ID4gPiArIMKgIMKgIMKgIMKgc3Bpbl9sb2NrX2lycXNhdmUoJmRj LT5sb2NrLCBmbGFncyk7Cj4gPiA+ICsgwqAgwqAgwqAgwqBkYy0+c3RhdGUgPSBEX1NVQk1JVDsK PiA+ID4gKyDCoCDCoCDCoCDCoGRjLT5iaW9fcmVmKys7Cj4gPiA+ICsgwqAgwqAgwqAgwqBzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkYy0+bG9jaywgZmxhZ3MpOwo+ID4gPiArCj4gPiA+ICsgwqAg wqAgwqAgwqBpZiAoaXNzdWVkKQo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKCppc3N1 ZWQpKys7Cj4gPiA+ICsKPiA+ID4gKyDCoCDCoCDCoCDCoGF0b21pY19pbmMoJmRjYy0+cXVldWVk X2Rpc2NhcmQpOwo+ID4gPiArIMKgIMKgIMKgIMKgZGMtPnF1ZXVlZCsrOwo+ID4gPiArIMKgIMKg IMKgIMKgbGlzdF9tb3ZlX3RhaWwoJmRjLT5saXN0LCB3YWl0X2xpc3QpOwo+ID4gPiArCj4gPiA+ ICsgwqAgwqAgwqAgwqAvKiBzYW5pdHkgY2hlY2sgb24gZGlzY2FyZCByYW5nZSAqLwo+ID4gPiAr IMKgIMKgIMKgIMKgX19jaGVja19zaXRfYml0bWFwKHNiaSwgZGMtPmRpLmxzdGFydCwgZGMtPmRp LmxzdGFydCArIGRjLT5kaS5sZW4pOwo+ID4gPiArCj4gPiA+ICsgwqAgwqAgwqAgwqBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soZGMtPmRpLnN0YXJ0KTsKPiA+ID4g KyDCoCDCoCDCoCDCoGJpby0+YmlfcHJpdmF0ZSA9IGRjOwo+ID4gPiArIMKgIMKgIMKgIMKgYmlv LT5iaV9lbmRfaW8gPSBmMmZzX3N1Ym1pdF9kaXNjYXJkX2VuZGlvOwo+ID4gPiArIMKgIMKgIMKg IMKgc3VibWl0X2JpbyhiaW8pOwo+ID4gPiArCj4gPiA+ICsgwqAgwqAgwqAgwqBhdG9taWNfaW5j KCZkY2MtPmlzc3VlZF9kaXNjYXJkKTsKPiA+ID4gKyDCoCDCoCDCoCDCoGYyZnNfdXBkYXRlX2lv c3RhdChzYmksIE5VTEwsIEZTX1pPTkVfUkVTRVRfSU8sIGRjLT5kaS5sZW4gKiBGMkZTX0JMS1NJ WkUpOwo+ID4gPiArfQo+ID4gPiArI2VuZGlmCj4gPiA+ICsKPiA+ID4gwqAvKiB0aGlzIGZ1bmN0 aW9uIGlzIGNvcGllZCBmcm9tIGJsa2Rldl9pc3N1ZV9kaXNjYXJkIGZyb20gYmxvY2svYmxrLWxp Yi5jICovCj4gPiA+IMKgc3RhdGljIGludCBfX3N1Ym1pdF9kaXNjYXJkX2NtZChzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgc3RydWN0IGRpc2NhcmRfcG9saWN5ICpkcG9saWN5LAo+ID4gPiBAQCAt MTIxNyw2ICsxMjU2LDEzIEBAIHN0YXRpYyBpbnQgX19zdWJtaXRfZGlzY2FyZF9jbWQoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gPiDCoCDCoCDCoCDCoCDCoGlmIChpc19zYmlfZmxhZ19z ZXQoc2JpLCBTQklfTkVFRF9GU0NLKSkKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXR1cm4gMDsKPiA+ID4gwqAKPiA+ID4gKyNpZmRlZiBDT05GSUdfQkxLX0RFVl9aT05FRAo+ID4g PiArIMKgIMKgIMKgIMKgaWYgKGYyZnNfc2JfaGFzX2Jsa3pvbmVkKHNiaSkgJiYgYmRldl9pc196 b25lZChiZGV2KSkgewo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgX19zdWJtaXRfem9u ZV9yZXNldF9jbWQoc2JpLCBkYywgZmxhZywgd2FpdF9saXN0LCBpc3N1ZWQpOwo+ID4gPiArIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIDA7Cj4gPiA+ICsgwqAgwqAgwqAgwqB9Cj4gPiA+ ICsjZW5kaWYKPiA+ID4gKwo+ID4gPiDCoCDCoCDCoCDCoCDCoHRyYWNlX2YyZnNfaXNzdWVfZGlz Y2FyZChiZGV2LCBkYy0+ZGkuc3RhcnQsIGRjLT5kaS5sZW4pOwo+ID4gPiDCoAo+ID4gPiDCoCDC oCDCoCDCoCDCoGxzdGFydCA9IGRjLT5kaS5sc3RhcnQ7Cj4gPiA+IEBAIC0xNDYxLDYgKzE1MDcs MTkgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfZGlzY2FyZF90cmVlX3JhbmdlKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKPiA+ID4gwqAgwqAgwqAgwqAgwqB9Cj4gPiA+IMKgfQo+ID4gPiDCoAo+ ID4gPiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4gPiA+ICtzdGF0aWMgdm9pZCBfX3F1 ZXVlX3pvbmVfcmVzZXRfY21kKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ID4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsb2NrX3QgYmxr c3RhcnQsIGJsb2NrX3QgbGJsa3N0YXJ0LAo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg YmxvY2tfdCBibGtsZW4pCj4gPiA+ICt7Cj4gPiA+ICsgwqAgwqAgwqAgwqB0cmFjZV9mMmZzX3F1 ZXVlX3Jlc2V0X3pvbmUoYmRldiwgYmxrc3RhcnQpOwo+ID4gPiArCj4gPiA+ICsgwqAgwqAgwqAg wqBtdXRleF9sb2NrKCZTTV9JKHNiaSktPmRjY19pbmZvLT5jbWRfbG9jayk7Cj4gPiA+ICsgwqAg wqAgwqAgwqBfX2luc2VydF9kaXNjYXJkX2NtZChzYmksIGJkZXYsIGxibGtzdGFydCwgYmxrc3Rh cnQsIGJsa2xlbik7Cj4gPiA+ICsgwqAgwqAgwqAgwqBtdXRleF91bmxvY2soJlNNX0koc2JpKS0+ ZGNjX2luZm8tPmNtZF9sb2NrKTsKPiA+ID4gK30KPiA+ID4gKyNlbmRpZgo+ID4gPiArCj4gPiA+ IMKgc3RhdGljIHZvaWQgX19xdWV1ZV9kaXNjYXJkX2NtZChzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwgYmxvY2tfdCBibGtzdGFydCwgYmxvY2tfdCBibGtsZW4pCj4gPiA+IMKgewo+ID4gPiBA QCAtMTcyNCw2ICsxNzgzLDE5IEBAIHN0YXRpYyB2b2lkIGYyZnNfd2FpdF9kaXNjYXJkX2Jpbyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRkcikKPiA+ID4gwqAKPiA+ID4g wqAgwqAgwqAgwqAgwqBtdXRleF9sb2NrKCZkY2MtPmNtZF9sb2NrKTsKPiA+ID4gwqAgwqAgwqAg wqAgwqBkYyA9IF9fbG9va3VwX2Rpc2NhcmRfY21kKHNiaSwgYmxrYWRkcik7Cj4gPiA+ICsjaWZk ZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPiA+ID4gKyDCoCDCoCDCoCDCoGlmIChkYyAmJiBmMmZz X3NiX2hhc19ibGt6b25lZChzYmkpICYmIGJkZXZfaXNfem9uZWQoZGMtPmJkZXYpKSB7Cj4gPiA+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAvKiBmb3JjZSBzdWJtaXQgem9uZSByZXNldCAqLwo+ ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGRjLT5zdGF0ZSA9PSBEX1BSRVApCj4g PiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX3N1Ym1pdF96b25lX3Jl c2V0X2NtZChzYmksIGRjLCBSRVFfU1lOQywKPiA+ID4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCZkY2MtPndh aXRfbGlzdCwgTlVMTCk7Cj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkYy0+cmVmKys7 Cj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBtdXRleF91bmxvY2soJmRjYy0+Y21kX2xv Y2spOwo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgLyogd2FpdCB6b25lIHJlc2V0ICov Cj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX3dhaXRfb25lX2Rpc2NhcmRfYmlvKHNi aSwgZGMpOwo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuOwo+ID4gPiArIMKg IMKgIMKgIMKgfQo+ID4gPiArI2VuZGlmCj4gPiA+IMKgIMKgIMKgIMKgIMKgaWYgKGRjKSB7Cj4g PiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGRjLT5zdGF0ZSA9PSBEX1BSRVApIHsK PiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX3B1bmNoX2Rpc2Nh cmRfY21kKHNiaSwgZGMsIGJsa2FkZHIpOwo+ID4gPiBAQCAtMTg3Niw5ICsxOTQ4LDE1IEBAIHN0 YXRpYyBpbnQgX19mMmZzX2lzc3VlX2Rpc2NhcmRfem9uZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpz YmksCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGJsa3N0YXJ0LCBibGtsZW4pOwo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoHJldHVybiAtRUlPOwo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0K PiA+ID4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRyYWNlX2YyZnNfaXNzdWVfcmVzZXRfem9u ZShiZGV2LCBibGtzdGFydCk7Cj4gPiA+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4g YmxrZGV2X3pvbmVfbWdtdChiZGV2LCBSRVFfT1BfWk9ORV9SRVNFVCwKPiA+ID4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHNlY3Rv ciwgbnJfc2VjdHMsIEdGUF9OT0ZTKTsKPiA+ID4gKwo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9QT1JfRE9JTkcpKSkg ewo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdHJhY2VfZjJmc19p c3N1ZV9yZXNldF96b25lKGJkZXYsIGJsa3N0YXJ0KTsKPiA+ID4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiBibGtkZXZfem9uZV9tZ210KGJkZXYsIFJFUV9PUF9a T05FX1JFU0VULAo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc2VjdG9yLCBucl9zZWN0cywgR0ZQX05P RlMpOwo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfQo+ID4gPiArCj4gPiA+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBfX3F1ZXVlX3pvbmVfcmVzZXRfY21kKHNiaSwgYmRldiwgYmxr c3RhcnQsIGxibGtzdGFydCwgYmxrbGVuKTsKPiA+ID4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oHJldHVybiAwOwo+ID4gPiDCoCDCoCDCoCDCoCDCoH0KPiA+ID4gwqAKPiA+ID4gwqAgwqAgwqAg wqAgwqAvKiBGb3IgY29udmVudGlvbmFsIHpvbmVzLCB1c2UgcmVndWxhciBkaXNjYXJkIGlmIHN1 cHBvcnRlZCAqLwo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5o IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oCj4gPiA+IGluZGV4IDk5Y2JjNTk0OWUzYy4u NzkzZjgyY2MxNTE1IDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZz LmgKPiA+ID4gKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oCj4gPiA+IEBAIC0xNTEy LDcgKzE1MTIsNyBAQCBERUZJTkVfRVZFTlQoZjJmc19kaXNjYXJkLCBmMmZzX3JlbW92ZV9kaXNj YXJkLAo+ID4gPiDCoCDCoCDCoCDCoCDCoFRQX0FSR1MoZGV2LCBibGtzdGFydCwgYmxrbGVuKQo+ ID4gPiDCoCk7Cj4gPiA+IMKgCj4gPiA+IC1UUkFDRV9FVkVOVChmMmZzX2lzc3VlX3Jlc2V0X3pv bmUsCj4gPiA+ICtERUNMQVJFX0VWRU5UX0NMQVNTKGYyZnNfcmVzZXRfem9uZSwKPiA+ID4gwqAK PiA+ID4gwqAgwqAgwqAgwqAgwqBUUF9QUk9UTyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpkZXYsIGJs b2NrX3QgYmxrc3RhcnQpLAo+ID4gPiDCoAo+ID4gPiBAQCAtMTUyOCwxMSArMTUyOCwyNSBAQCBU UkFDRV9FVkVOVChmMmZzX2lzc3VlX3Jlc2V0X3pvbmUsCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgX19lbnRyeS0+Ymxrc3RhcnQgPSBibGtzdGFydDsKPiA+ID4gwqAgwqAgwqAgwqAg wqApLAo+ID4gPiDCoAo+ID4gPiAtIMKgIMKgIMKgIMKgVFBfcHJpbnRrKCJkZXYgPSAoJWQsJWQp LCByZXNldCB6b25lIGF0IGJsb2NrID0gMHglbGx4IiwKPiA+ID4gKyDCoCDCoCDCoCDCoFRQX3By aW50aygiZGV2ID0gKCVkLCVkKSwgem9uZSBhdCBibG9jayA9IDB4JWxseCIsCj4gPiA+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgc2hvd19kZXYoX19lbnRyeS0+ZGV2KSwKPiA+ID4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAodW5zaWduZWQgbG9uZyBsb25nKV9fZW50cnktPmJsa3N0YXJ0 KQo+ID4gPiDCoCk7Cj4gPiA+IMKgCj4gPiA+ICtERUZJTkVfRVZFTlQoZjJmc19yZXNldF96b25l LCBmMmZzX3F1ZXVlX3Jlc2V0X3pvbmUsCj4gPiA+ICsKPiA+ID4gKyDCoCDCoCDCoCDCoFRQX1BS T1RPKHN0cnVjdCBibG9ja19kZXZpY2UgKmRldiwgYmxvY2tfdCBibGtzdGFydCksCj4gPiA+ICsK PiA+ID4gKyDCoCDCoCDCoCDCoFRQX0FSR1MoZGV2LCBibGtzdGFydCkKPiA+ID4gKyk7Cj4gPiA+ ICsKPiA+ID4gK0RFRklORV9FVkVOVChmMmZzX3Jlc2V0X3pvbmUsIGYyZnNfaXNzdWVfcmVzZXRf em9uZSwKPiA+ID4gKwo+ID4gPiArIMKgIMKgIMKgIMKgVFBfUFJPVE8oc3RydWN0IGJsb2NrX2Rl dmljZSAqZGV2LCBibG9ja190IGJsa3N0YXJ0KSwKPiA+ID4gKwo+ID4gPiArIMKgIMKgIMKgIMKg VFBfQVJHUyhkZXYsIGJsa3N0YXJ0KQo+ID4gPiArKTsKPiA+ID4gKwo+ID4gPiDCoFRSQUNFX0VW RU5UKGYyZnNfaXNzdWVfZmx1c2gsCj4gPiA+IMKgCj4gPiA+IMKgIMKgIMKgIMKgIMKgVFBfUFJP VE8oc3RydWN0IGJsb2NrX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbm9iYXJyaWVyLAo+ID4g PiBAQCAtMTk3OSw2ICsxOTkzLDcgQEAgVFJBQ0VfRVZFTlQoZjJmc19pb3N0YXQsCj4gPiA+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgX19maWVsZCh1bnNpZ25lZCBsb25nIGxvbmcsIMKgIMKg IMKgIMKgZnNfbnJpbykKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX2ZpZWxkKHVu c2lnbmVkIGxvbmcgbG9uZywgwqAgwqAgwqAgwqBmc19tcmlvKQo+ID4gPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoF9fZmllbGQodW5zaWduZWQgbG9uZyBsb25nLCDCoCDCoCDCoCDCoGZzX2Rp c2NhcmQpCj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX2ZpZWxkKHVuc2lnbmVkIGxv bmcgbG9uZywgwqAgwqAgwqAgwqBmc19yZXNldF96b25lKQo+ID4gPiDCoCDCoCDCoCDCoCDCoCks Cj4gPiA+IMKgCj4gPiA+IMKgIMKgIMKgIMKgIMKgVFBfZmFzdF9hc3NpZ24oCj4gPiA+IEBAIC0y MDEwLDEyICsyMDI1LDE0IEBAIFRSQUNFX0VWRU5UKGYyZnNfaW9zdGF0LAo+ID4gPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50cnktPmZzX25yaW8gwqAgwqAgwqAgwqA9IGlvc3RhdFtG U19OT0RFX1JFQURfSU9dOwo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50cnkt PmZzX21yaW8gwqAgwqAgwqAgwqA9IGlvc3RhdFtGU19NRVRBX1JFQURfSU9dOwo+ID4gPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50cnktPmZzX2Rpc2NhcmQgwqAgwqAgwqAgwqA9IGlv c3RhdFtGU19ESVNDQVJEX0lPXTsKPiA+ID4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50 cnktPmZzX3Jlc2V0X3pvbmUgwqAgwqAgwqAgwqA9IGlvc3RhdFtGU19aT05FX1JFU0VUX0lPXTsK PiA+ID4gwqAgwqAgwqAgwqAgwqApLAo+ID4gPiDCoAo+ID4gPiDCoCDCoCDCoCDCoCDCoFRQX3By aW50aygiZGV2ID0gKCVkLCVkKSwgIgo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJh cHAgW3dyaXRlPSVsbHUgKGRpcmVjdD0lbGx1LCBidWZmZXJlZD0lbGx1KSwgbWFwcGVkPSVsbHUs ICIKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiY29tcHIoYnVmZmVyZWQ9JWxsdSwg bWFwcGVkPSVsbHUpXSwgIgo+ID4gPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgImZzIFtkYXRh PSVsbHUsIGNkYXRhPSVsbHUsIG5vZGU9JWxsdSwgbWV0YT0lbGx1LCBkaXNjYXJkPSVsbHVdLCAi Cj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiZnMgW2RhdGE9JWxsdSwgY2RhdGE9JWxs dSwgbm9kZT0lbGx1LCBtZXRhPSVsbHUsIGRpc2NhcmQ9JWxsdSwgIgo+ID4gPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgInJlc2V0X3pvbmU9JWxsdV0sICIKPiA+ID4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAiZ2MgW2RhdGE9JWxsdSwgbm9kZT0lbGx1XSwgIgo+ID4gPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCJjcCBbZGF0YT0lbGx1LCBub2RlPSVsbHUsIG1ldGE9JWxsdV0sICIK PiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiYXBwIFtyZWFkPSVsbHUgKGRpcmVjdD0l bGx1LCBidWZmZXJlZD0lbGx1KSwgbWFwcGVkPSVsbHVdLCAiCj4gPiA+IEBAIC0yMDI2LDYgKzIw NDMsNyBAQCBUUkFDRV9FVkVOVChmMmZzX2lvc3RhdCwKPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBfX2VudHJ5LT5hcHBfYmlvLCBfX2VudHJ5LT5hcHBfbWlvLCBfX2VudHJ5LT5hcHBf YmNkaW8sCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgX19lbnRyeS0+YXBwX21jZGlv LCBfX2VudHJ5LT5mc19kaW8sIF9fZW50cnktPmZzX2NkaW8sCj4gPiA+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgX19lbnRyeS0+ZnNfbmlvLCBfX2VudHJ5LT5mc19taW8sIF9fZW50cnktPmZz X2Rpc2NhcmQsCj4gPiA+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBfX2VudHJ5LT5mc19yZXNl dF96b25lLAo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoF9fZW50cnktPmZzX2djX2Rp bywgX19lbnRyeS0+ZnNfZ2NfbmlvLCBfX2VudHJ5LT5mc19jcF9kaW8sCj4gPiA+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgX19lbnRyeS0+ZnNfY3BfbmlvLCBfX2VudHJ5LT5mc19jcF9taW8s Cj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgX19lbnRyeS0+YXBwX3JpbywgX19lbnRy eS0+YXBwX2RyaW8sIF9fZW50cnktPmFwcF9icmlvLAo+ID4gPiAtLSAKPiA+ID4gMi4yNS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJm cy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5u ZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJm cy1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05A95C77B7A for ; Thu, 18 May 2023 01:05:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229485AbjERBFu (ORCPT ); Wed, 17 May 2023 21:05:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229452AbjERBFt (ORCPT ); Wed, 17 May 2023 21:05:49 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67C0530F3; Wed, 17 May 2023 18:05:47 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E2711647DC; Thu, 18 May 2023 01:05:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F2F79C433EF; Thu, 18 May 2023 01:05:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684371946; bh=xt3Hpg03EBIFU3chzx2Jv3j7LizWB5huuXLL7P52kpk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IqbmavJ6p11BKKgn4KbdAJYTzhGnsJZ3UOSx1FIny0IW3zrT+E67LdN7X9N0oSu1F GppMo4U8FepLYTQ5J/zSYLlAg7Tkte9q9U8fby8vItPR50lplvXSr/1dDhKcJepqkI VkKF7zXcnY2fxB77uWZ2aiYt6OCCUY6klIVsPnxdtkyMkUn214Op5eBWiWlZb0+Gfk jn1mlySe8oS31P8Qklrt9atGqG+MdUH5ZisXPMJ52Uu0m0IlJ+xFIrAOswWt4lFNrQ sbBMEsVEJpEOzYMtSBtcBDGctxAYobaT92+OGvRnX38a8cdWcgzITCm+Ru9ePuIjMd M9q0LK3k57DGg== Date: Wed, 17 May 2023 18:05:44 -0700 From: Jaegeuk Kim To: Daejun Park Cc: "chao@kernel.org" , "rostedt@goodmis.org" , "mhiramat@kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" , "linux-kernel@vger.kernel.org" , "linux-trace-kernel@vger.kernel.org" , Seokhwan Kim , Yonggil Song , beomsu kim Subject: Re: (2) [PATCH v6] f2fs: add async reset zone command support Message-ID: References: <20230508081042epcms2p8a637deae7de1829f54614e09d5fde5e5@epcms2p8> <20230511052416epcms2p617838faa71a203da6978c89ffd216e91@epcms2p6> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20230511052416epcms2p617838faa71a203da6978c89ffd216e91@epcms2p6> Precedence: bulk List-ID: X-Mailing-List: linux-trace-kernel@vger.kernel.org On 05/11, Daejun Park wrote: > > Sender : Jaegeuk Kim  > > Date : 2023-05-10 03:53 (GMT+9) > > Title : Re: [PATCH v6] f2fs: add async reset zone command support > > To : 박대준 > > CC : chao@kernel.org, rostedt@goodmis.org, mhiramat@kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, 김석환, 송용길, 김범수 > >   > > On 05/08, Daejun Park wrote: > > > v5 -> v6 > > > Added trace_f2fs_iostat support for zone reset command. > > > > > > v4 -> v5 > > > Added f2fs iostat for zone reset command. > > > > > > v3 -> v4 > > > Fixed build error caused by unused function. > > > > > > v2 -> v3 > > > Modified arguments to be correct for ftrace parameter. > > > Changed __submit_zone_reset_cmd to void return. > > > Refactored the f2fs_wait_discard_bio function. > > > Fixed code that was previously incorrectly merged. > > > > > > v1 -> v2 > > > Changed to apply the optional async reset write pointer by default. > > > > Don't add the history in the patch description. > > OK, I will do. > > > > > > > This patch enables submit reset zone command asynchornously. It helps > > > decrease average latency of write IOs in high utilization scenario by > > > faster checkpointing. > > > > > > Signed-off-by: Daejun Park > > > --- > > >  fs/f2fs/f2fs.h              |  1 + > > >  fs/f2fs/iostat.c            |  1 + > > >  fs/f2fs/segment.c           | 84 +++++++++++++++++++++++++++++++++++-- > > >  include/trace/events/f2fs.h | 24 +++++++++-- > > >  4 files changed, 104 insertions(+), 6 deletions(-) > > > > > > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > > > index d211ee89c158..51b68a629814 100644 > > > --- a/fs/f2fs/f2fs.h > > > +++ b/fs/f2fs/f2fs.h > > > @@ -1175,6 +1175,7 @@ enum iostat_type { > > >          /* other */ > > >          FS_DISCARD_IO,                        /* discard */ > > >          FS_FLUSH_IO,                        /* flush */ > > > +        FS_ZONE_RESET_IO,                /* zone reset */ > > >          NR_IO_TYPE, > > >  }; > > >   > > > diff --git a/fs/f2fs/iostat.c b/fs/f2fs/iostat.c > > > index 3d5bfb1ad585..f8703038e1d8 100644 > > > --- a/fs/f2fs/iostat.c > > > +++ b/fs/f2fs/iostat.c > > > @@ -80,6 +80,7 @@ int __maybe_unused iostat_info_seq_show(struct seq_file *seq, void *offset) > > >          seq_puts(seq, "[OTHER]\n"); > > >          IOSTAT_INFO_SHOW("fs discard", FS_DISCARD_IO); > > >          IOSTAT_INFO_SHOW("fs flush", FS_FLUSH_IO); > > > +        IOSTAT_INFO_SHOW("fs zone reset", FS_ZONE_RESET_IO); > > >   > > >          return 0; > > >  } > > > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c > > > index 6db410f1bb8c..4802b05a795b 100644 > > > --- a/fs/f2fs/segment.c > > > +++ b/fs/f2fs/segment.c > > > @@ -1196,6 +1196,45 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi, > > >  static void __update_discard_tree_range(struct f2fs_sb_info *sbi, > > >                                  struct block_device *bdev, block_t lstart, > > >                                  block_t start, block_t len); > > > + > > > +#ifdef CONFIG_BLK_DEV_ZONED > > > +static void __submit_zone_reset_cmd(struct f2fs_sb_info *sbi, > > > > Why can't we use __f2fs_issue_discard_zone()? > > In my understanding, __f2fs_issue_discard_zone is used to queue the zone reset command. > Which point do you think is the issue? That actually calls blkdev_zone_mgmt() which is doing the same thing. > > > > > > +                                   struct discard_cmd *dc, blk_opf_t flag, > > > +                                   struct list_head *wait_list, > > > +                                   unsigned int *issued) > > > +{ > > > +        struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; > > > +        struct block_device *bdev = dc->bdev; > > > +        struct bio *bio = bio_alloc(bdev, 0, REQ_OP_ZONE_RESET | flag, GFP_NOFS); > > > +        unsigned long flags; > > > + > > > +        trace_f2fs_issue_reset_zone(bdev, dc->di.start); > > > + > > > +        spin_lock_irqsave(&dc->lock, flags); > > > +        dc->state = D_SUBMIT; > > > +        dc->bio_ref++; > > > +        spin_unlock_irqrestore(&dc->lock, flags); > > > + > > > +        if (issued) > > > +                (*issued)++; > > > + > > > +        atomic_inc(&dcc->queued_discard); > > > +        dc->queued++; > > > +        list_move_tail(&dc->list, wait_list); > > > + > > > +        /* sanity check on discard range */ > > > +        __check_sit_bitmap(sbi, dc->di.lstart, dc->di.lstart + dc->di.len); > > > + > > > +        bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(dc->di.start); > > > +        bio->bi_private = dc; > > > +        bio->bi_end_io = f2fs_submit_discard_endio; > > > +        submit_bio(bio); > > > + > > > +        atomic_inc(&dcc->issued_discard); > > > +        f2fs_update_iostat(sbi, NULL, FS_ZONE_RESET_IO, dc->di.len * F2FS_BLKSIZE); > > > +} > > > +#endif > > > + > > >  /* this function is copied from blkdev_issue_discard from block/blk-lib.c */ > > >  static int __submit_discard_cmd(struct f2fs_sb_info *sbi, > > >                                  struct discard_policy *dpolicy, > > > @@ -1217,6 +1256,13 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi, > > >          if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) > > >                  return 0; > > >   > > > +#ifdef CONFIG_BLK_DEV_ZONED > > > +        if (f2fs_sb_has_blkzoned(sbi) && bdev_is_zoned(bdev)) { > > > +                __submit_zone_reset_cmd(sbi, dc, flag, wait_list, issued); > > > +                return 0; > > > +        } > > > +#endif > > > + > > >          trace_f2fs_issue_discard(bdev, dc->di.start, dc->di.len); > > >   > > >          lstart = dc->di.lstart; > > > @@ -1461,6 +1507,19 @@ static void __update_discard_tree_range(struct f2fs_sb_info *sbi, > > >          } > > >  } > > >   > > > +#ifdef CONFIG_BLK_DEV_ZONED > > > +static void __queue_zone_reset_cmd(struct f2fs_sb_info *sbi, > > > +                struct block_device *bdev, block_t blkstart, block_t lblkstart, > > > +                block_t blklen) > > > +{ > > > +        trace_f2fs_queue_reset_zone(bdev, blkstart); > > > + > > > +        mutex_lock(&SM_I(sbi)->dcc_info->cmd_lock); > > > +        __insert_discard_cmd(sbi, bdev, lblkstart, blkstart, blklen); > > > +        mutex_unlock(&SM_I(sbi)->dcc_info->cmd_lock); > > > +} > > > +#endif > > > + > > >  static void __queue_discard_cmd(struct f2fs_sb_info *sbi, > > >                  struct block_device *bdev, block_t blkstart, block_t blklen) > > >  { > > > @@ -1724,6 +1783,19 @@ static void f2fs_wait_discard_bio(struct f2fs_sb_info *sbi, block_t blkaddr) > > >   > > >          mutex_lock(&dcc->cmd_lock); > > >          dc = __lookup_discard_cmd(sbi, blkaddr); > > > +#ifdef CONFIG_BLK_DEV_ZONED > > > +        if (dc && f2fs_sb_has_blkzoned(sbi) && bdev_is_zoned(dc->bdev)) { > > > +                /* force submit zone reset */ > > > +                if (dc->state == D_PREP) > > > +                        __submit_zone_reset_cmd(sbi, dc, REQ_SYNC, > > > +                                                &dcc->wait_list, NULL); > > > +                dc->ref++; > > > +                mutex_unlock(&dcc->cmd_lock); > > > +                /* wait zone reset */ > > > +                __wait_one_discard_bio(sbi, dc); > > > +                return; > > > +        } > > > +#endif > > >          if (dc) { > > >                  if (dc->state == D_PREP) { > > >                          __punch_discard_cmd(sbi, dc, blkaddr); > > > @@ -1876,9 +1948,15 @@ static int __f2fs_issue_discard_zone(struct f2fs_sb_info *sbi, > > >                                   blkstart, blklen); > > >                          return -EIO; > > >                  } > > > -                trace_f2fs_issue_reset_zone(bdev, blkstart); > > > -                return blkdev_zone_mgmt(bdev, REQ_OP_ZONE_RESET, > > > -                                        sector, nr_sects, GFP_NOFS); > > > + > > > +                if (unlikely(is_sbi_flag_set(sbi, SBI_POR_DOING))) { > > > +                        trace_f2fs_issue_reset_zone(bdev, blkstart); > > > +                        return blkdev_zone_mgmt(bdev, REQ_OP_ZONE_RESET, > > > +                                                sector, nr_sects, GFP_NOFS); > > > +                } > > > + > > > +                __queue_zone_reset_cmd(sbi, bdev, blkstart, lblkstart, blklen); > > > +                return 0; > > >          } > > >   > > >          /* For conventional zones, use regular discard if supported */ > > > diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h > > > index 99cbc5949e3c..793f82cc1515 100644 > > > --- a/include/trace/events/f2fs.h > > > +++ b/include/trace/events/f2fs.h > > > @@ -1512,7 +1512,7 @@ DEFINE_EVENT(f2fs_discard, f2fs_remove_discard, > > >          TP_ARGS(dev, blkstart, blklen) > > >  ); > > >   > > > -TRACE_EVENT(f2fs_issue_reset_zone, > > > +DECLARE_EVENT_CLASS(f2fs_reset_zone, > > >   > > >          TP_PROTO(struct block_device *dev, block_t blkstart), > > >   > > > @@ -1528,11 +1528,25 @@ TRACE_EVENT(f2fs_issue_reset_zone, > > >                  __entry->blkstart = blkstart; > > >          ), > > >   > > > -        TP_printk("dev = (%d,%d), reset zone at block = 0x%llx", > > > +        TP_printk("dev = (%d,%d), zone at block = 0x%llx", > > >                  show_dev(__entry->dev), > > >                  (unsigned long long)__entry->blkstart) > > >  ); > > >   > > > +DEFINE_EVENT(f2fs_reset_zone, f2fs_queue_reset_zone, > > > + > > > +        TP_PROTO(struct block_device *dev, block_t blkstart), > > > + > > > +        TP_ARGS(dev, blkstart) > > > +); > > > + > > > +DEFINE_EVENT(f2fs_reset_zone, f2fs_issue_reset_zone, > > > + > > > +        TP_PROTO(struct block_device *dev, block_t blkstart), > > > + > > > +        TP_ARGS(dev, blkstart) > > > +); > > > + > > >  TRACE_EVENT(f2fs_issue_flush, > > >   > > >          TP_PROTO(struct block_device *dev, unsigned int nobarrier, > > > @@ -1979,6 +1993,7 @@ TRACE_EVENT(f2fs_iostat, > > >                  __field(unsigned long long,        fs_nrio) > > >                  __field(unsigned long long,        fs_mrio) > > >                  __field(unsigned long long,        fs_discard) > > > +                __field(unsigned long long,        fs_reset_zone) > > >          ), > > >   > > >          TP_fast_assign( > > > @@ -2010,12 +2025,14 @@ TRACE_EVENT(f2fs_iostat, > > >                  __entry->fs_nrio        = iostat[FS_NODE_READ_IO]; > > >                  __entry->fs_mrio        = iostat[FS_META_READ_IO]; > > >                  __entry->fs_discard        = iostat[FS_DISCARD_IO]; > > > +                __entry->fs_reset_zone        = iostat[FS_ZONE_RESET_IO]; > > >          ), > > >   > > >          TP_printk("dev = (%d,%d), " > > >                  "app [write=%llu (direct=%llu, buffered=%llu), mapped=%llu, " > > >                  "compr(buffered=%llu, mapped=%llu)], " > > > -                "fs [data=%llu, cdata=%llu, node=%llu, meta=%llu, discard=%llu], " > > > +                "fs [data=%llu, cdata=%llu, node=%llu, meta=%llu, discard=%llu, " > > > +                "reset_zone=%llu], " > > >                  "gc [data=%llu, node=%llu], " > > >                  "cp [data=%llu, node=%llu, meta=%llu], " > > >                  "app [read=%llu (direct=%llu, buffered=%llu), mapped=%llu], " > > > @@ -2026,6 +2043,7 @@ TRACE_EVENT(f2fs_iostat, > > >                  __entry->app_bio, __entry->app_mio, __entry->app_bcdio, > > >                  __entry->app_mcdio, __entry->fs_dio, __entry->fs_cdio, > > >                  __entry->fs_nio, __entry->fs_mio, __entry->fs_discard, > > > +                __entry->fs_reset_zone, > > >                  __entry->fs_gc_dio, __entry->fs_gc_nio, __entry->fs_cp_dio, > > >                  __entry->fs_cp_nio, __entry->fs_cp_mio, > > >                  __entry->app_rio, __entry->app_drio, __entry->app_brio, > > > -- > > > 2.25.1