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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A09B2C433DF for ; Mon, 8 Jun 2020 13:07:50 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 657FB2076C; Mon, 8 Jun 2020 13:07:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sourceforge.net header.i=@sourceforge.net header.b="ObiA/kQT"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=sf.net header.i=@sf.net header.b="XXlTX5ug"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="up27qK9d" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 657FB2076C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-f2fs-devel-bounces@lists.sourceforge.net 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.90_1) (envelope-from ) id 1jiHVF-0003x2-AW; Mon, 08 Jun 2020 13:07:49 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-1.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jiHVE-0003wq-CU for linux-f2fs-devel@lists.sourceforge.net; Mon, 08 Jun 2020 13:07:48 +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=4MvahGenOGrK7TaF9Mk5ljP0kbkHWqkjmsJDndwmKU8=; b=ObiA/kQTw9ijpBBid7A3G7xPrM VmcgNU0rFg0Rl5dtTVhLllopZY2IFvrfOYucBR8Dh7c3RaD/30H9s3SJz7udCC3pE0exYhG4CEXQb vgpdFxx6jUsM14CyMCrCIztWA3qaLV50du2yxiZI+hT7zaw6tfZQ+rbMM+IFkcGKSZNw=; 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=4MvahGenOGrK7TaF9Mk5ljP0kbkHWqkjmsJDndwmKU8=; b=XXlTX5ugnLA0fZOFCt04d3RQy6 +jdX+ZK+B3OI03nIvqnCXw88OU43U5bCgs/dhael/KseCVoJmA/3eL5074BAf2AWD44SzxAW6yMSB xVI0RcoWzDTt1pBB220iX29AtqLeX7P6fXBB7zdR/hQocEQRaX3N0MAVExQoT5vjzhcU=; Received: from mail.kernel.org ([198.145.29.99]) by sfi-mx-4.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.2) id 1jiHVB-00GSjS-66 for linux-f2fs-devel@lists.sourceforge.net; Mon, 08 Jun 2020 13:07:48 +0000 Received: from localhost (unknown [104.132.1.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DF8992076C; Mon, 8 Jun 2020 13:07:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591621655; bh=WB42G6Tb4c/hJxVzP2PTv/3cpqzVlOE3T/nUkDmSCgs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=up27qK9dq0dyu3RAw1CCL3tMTsF6AVIa6Twt+CAmjxZp5hKJ6QzCByVPjjgh49wvR 6ZWiKIYU5+fKvsOwTY+eaWQM2qunLX55Vyt3uyfpdS6SJUCOMJWEjQggm74wrb56B+ k6qBvMzsxYEu+COmBkFjalENt/u20aSWH0QsXBVY= Date: Mon, 8 Jun 2020 06:07:34 -0700 From: Jaegeuk Kim To: Chao Yu Message-ID: <20200608130734.GB200855@google.com> References: <20200605042746.201180-1-daeho43@gmail.com> <36d3c98e-24bb-988c-57a3-82730cc75cbc@huawei.com> <3eade7bf-ce66-e502-24e7-e3a1e548dd77@huawei.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <3eade7bf-ce66-e502-24e7-e3a1e548dd77@huawei.com> X-Headers-End: 1jiHVB-00GSjS-66 Subject: Re: [f2fs-dev] [PATCH] f2fs: add F2FS_IOC_TRIM_FILE ioctl 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-f2fs-devel@lists.sourceforge.net, kernel-team@android.com, Daeho Jeong , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gMDYvMDgsIENoYW8gWXUgd3JvdGU6Cj4gT24gMjAyMC82LzggMTU6MTksIERhZWhvIEplb25n IHdyb3RlOgo+ID4gWWVzLCBJIGFncmVlIHdpdGggeW91IGFib3V0IGVhY2ggdmVuZG9yIGhhcyBk aWZmZXJlbnQgaW1wbGVtZW50YXRpb24gb24gZGlzY2FyZC4KPiA+IFNvLCB3ZSBtaWdodCBiZSBn b25uYSB1c2UgdGhlIGNvbWJpbmF0aW9uIG9mIHplcm9pbmcgYW5kIHNlbmQgZGlzY2FyZHMKPiA+ IGZvciBhIG1vcmUKPiA+IHNlY3VyZSBzb2x1dGlvbi4gOikKPiAKPiBJSVJDLCBjdXJyZW50IHNv bHV0aW9uIGlzOgo+IAo+IC0gcGluIGZpbGUKPiAtIGdldCBhbGwgYmxvY2sgYWRkcmVzc2VzIG9m IGZpbGUKPiAtIHdyaXRlIHplcm8gdG8gYmxvY2sgYWRkcmVzc2VzCj4gLSBpc3N1ZSBkaXNjYXJk Cj4gCj4gSXMgdGhhdCBjb3JyZWN0Pwo+IAo+IENvdWxkIHdlIGhhbmRsZSB0aG9zZSBsb2dpYyAo emVybyBvdXQgJiBkaXNjYXJkKSBpbiBuZXcgaW50ZXJmYWNlCj4gKG1heSBiZSBuYW1lZCBhcyB7 RjJGUyxFWFQ0fV9JT0NfU0VDX1RSSU1fRklMRSk/IHRoZW4gdXNlcnNwYWNlIGxvZ2ljCj4gY291 bGQgYmUgcXVpdGUgc2ltcGxlIGxhdGVyLCBhbmQgYWxzbyBtZW1jcHkgY291bGQgYmUgYXZvaWQg dG8gbWFrZQo+IGRlc3RydWN0aW9uIHByb2Nlc3MgbW9yZSBlZmZpY2llbnQuCgpXaGF0IGFib3V0 IGFkZGluZyBhIGZsYWcgdG8gZGV0ZXJtaW5lIGNhbGxpbmcgdW5tYXAgYW5kL29yIHplcm8gb3V0 PwoKPiAKPiBKdXN0IHJhdyBwcm9wb3NhbC4gOikKPiAKPiBUaGFua3MsCj4gCj4gPiBJIHRoaW5r IHdlIHN0aWxsIG5lZWQgYSBkaXNjYXJkIGludGVyZmFjZSB0byB1bm1hcCBmcm9tIHRoZSBtYXBw aW5nCj4gPiB0YWJsZSBvZiB0aGUgc3RvcmFnZSBkZXZpY2Ugc2lkZS4KPiA+IAo+ID4gVGhhbmtz LAo+ID4gCj4gPiAyMDIw64WEIDbsm5QgOOydvCAo7JuUKSDsmKTtm4QgMzo1NywgQ2hhbyBZdSA8 eXVjaGFvMEBodWF3ZWkuY29tPuuLmOydtCDsnpHshLE6Cj4gPj4KPiA+PiBPbiAyMDIwLzYvOCAx MTozNiwgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPj4+IFllcywgdGhpcyBpcyBmb3Igc2VjdXJpdHkg a2V5IGRlc3RydWN0aW9uLgo+ID4+Pgo+ID4+PiBBRkFJSywgZGlzY2FyZCB3aWxsIHVubWFwIHRo ZSBkYXRhIGJsb2NrIGFuZCwgYWZ0ZXIgZG9uZSBpdCwKPiA+Pj4gd2UgY2FuIHJlYWQgZWl0aGVy IHplcm8gZGF0YSBvciBnYXJiYWdlIGRhdGEgZnJvbSB0aGF0IGJsb2NrIGRlcGVuZGluZwo+ID4+ PiBvbiBlTU1DL1VGUy4KPiA+Pgo+ID4+IFNpbmNlIHNwZWMgZGlkbid0IHJlc3RyaWN0IGhvdyB2 ZW5kb3IgaW1wbGVtZW50IHRoZSBlcmFzZSBpbnRlcmZhY2UsIHNvCj4gPj4gaW4gb3JkZXIgdG8g ZW5oYW5jZSBwZXJmb3JtYW5jZSBvZiBkaXNjYXJkIGludGVyZmFjZSwgdmVuZG9yIGNvdWxkIGlt cGxlbWVudAo+ID4+IGl0IGFzIGFuIGFzeW5jIG9uZSwgd2hpY2ggbWF5IG5vdCB6ZXJvIG1hcHBp bmcgZW50cnkoTDEgdGFibGUpLCBpbnN0ZWFkLCBpdAo+ID4+IGNvdWxkIHNldCByZWxhdGVkIGJp dG1hcCB0byBpbnZhbGlkIHRoYXQgbWFwcGluZyBlbnRyeSwgdGhhbiBsYXRlciBpZiBkZXZpY2UK PiA+PiBhbGxvdyB1c2VyIHRvIGFjY2VzcyB0aGF0IGludmFsaWQgbWFwcGluZyBlbnRyeSwga2V5 IGluZm8gbWF5IGJlIGV4cGxvc2VkLAo+ID4+Cj4gPj4gSXQncyBjb21wbGV0ZWx5IHVwIHRvIGhv dyB2ZW5kb3IgaW1wbGVtZW50IHRoZSBpbnRlcmZhY2UsIHNvIEkgdGhpbmsgdGhlcmUgaXMKPiA+ PiBzdGlsbCByaXNrIHRvIHVzZSBkaXNjYXJkLgo+ID4+Cj4gPj4gVGhhbmtzLAo+ID4+Cj4gPj4+ IEluIGEgdmlldyBwb2ludCBvZiByZWFkIGRhdGEsIGl0IG1pZ2h0IGJlIHRoZSBzYW1lIHdpdGgg emVyb2luZyB0aGUgZGF0YSBibG9jay4KPiA+Pj4gSG93ZXZlciwgc2luY2Ugd2UgY2FuIGV2ZW4g dW5tYXAgdGhhdCBibG9jaywgSSBiZWxpZXZlIGRpc2NhcmQgaXMKPiA+Pj4gc2FmZXIgdGhhbiB6 ZXJvaW5nIG91dC4KPiA+Pj4KPiA+Pj4gMjAyMOuFhCA27JuUIDjsnbwgKOyblCkg7Jik7KCEIDEx OjQ2LCBDaGFvIFl1IDx5dWNoYW8wQGh1YXdlaS5jb20+64uY7J20IOyekeyEsToKPiA+Pj4+Cj4g Pj4+PiBPbiAyMDIwLzYvNSAxMjoyNywgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gPj4+Pj4gRnJvbTog RGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+Pj4+Pgo+ID4+Pj4+IEFkZGVk IGEgbmV3IGlvY3RsIHRvIHNlbmQgZGlzY2FyZCBjb21tYW5kcyB0byB3aG9sZSBkYXRhIGFyZWEg b2YKPiA+Pj4+PiBhIHJlZ3VsYXIgZmlsZSBmb3Igc2VjdXJpdHkgcmVhc29uLgo+ID4+Pj4KPiA+ Pj4+IEkgZ3Vlc3MgdGhpcyBpbnRlcmZhY2UgaXMgaW50cm9kdWNlZCBmb3Igc2VjdXJpdHkga2V5 IGRlc3RydWN0aW9uLCBpZiBJJ20KPiA+Pj4+IHJpZ2h0LCBob3dldmVyLCBJSVJDLCBkaXNjYXJk KGVyYXNlKSBzZW1hbnRpY3MgaW4gZU1NQy9VRlMgc3BlYyB3b24ndAo+ID4+Pj4gZ3VhcmFudGVl IHRoYXQgZGF0YSB3aGljaCB3YXMgZGlzY2FyZCBjb3VsZCBiZSB6ZXJvZWQgb3V0LCBzbyBhZnRl ciBkaXNjYXJkLAo+ID4+Pj4gdGhlIGtleSBzdGlsbCBoYXZlIHJpc2sgb2YgZXhwb3N1cmUuIFNv IGluc3RlYWQsIHNob3VsZCB3ZSB1c2Ugc2JfaXNzdWVfemVyb291dCgpPwo+ID4+Pj4KPiA+Pj4+ IFRoYW5rcywKPiA+Pj4+Cj4gPj4+Pj4KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBEYWVobyBKZW9u ZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4+Pj4+IC0tLQo+ID4+Pj4+ICBmcy9mMmZzL2Yy ZnMuaCB8ICAgMSArCj4gPj4+Pj4gIGZzL2YyZnMvZmlsZS5jIHwgMTI5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+Pj4+PiAgMiBmaWxlcyBjaGFu Z2VkLCAxMzAgaW5zZXJ0aW9ucygrKQo+ID4+Pj4+Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2ZzL2Yy ZnMvZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPiA+Pj4+PiBpbmRleCBjODEyZmI4ZTJkOWMuLjlh ZTgxZDBmZWZhMCAxMDA2NDQKPiA+Pj4+PiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+ID4+Pj4+ICsr KyBiL2ZzL2YyZnMvZjJmcy5oCj4gPj4+Pj4gQEAgLTQzNCw2ICs0MzQsNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgX19oYXNfY3Vyc3VtX3NwYWNlKHN0cnVjdCBmMmZzX2pvdXJuYWwgKmpvdXJuYWws Cj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9SKEYyRlNf SU9DVExfTUFHSUMsIDE4LCBfX3U2NCkKPiA+Pj4+PiAgI2RlZmluZSBGMkZTX0lPQ19SRVNFUlZF X0NPTVBSRVNTX0JMT0NLUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lPUihGMkZTX0lPQ1RMX01BR0lD LCAxOSwgX191NjQpCj4gPj4+Pj4gKyNkZWZpbmUgRjJGU19JT0NfVFJJTV9GSUxFICAgICAgICAg ICBfSU8oRjJGU19JT0NUTF9NQUdJQywgMjApCj4gPj4+Pj4KPiA+Pj4+PiAgI2RlZmluZSBGMkZT X0lPQ19HRVRfVk9MVU1FX05BTUUgICAgIEZTX0lPQ19HRVRGU0xBQkVMCj4gPj4+Pj4gICNkZWZp bmUgRjJGU19JT0NfU0VUX1ZPTFVNRV9OQU1FICAgICBGU19JT0NfU0VURlNMQUJFTAo+ID4+Pj4+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCj4gPj4+Pj4gaW5k ZXggZGZhMWFjMmQ3NTFhLi41ODUwN2JiNTY0OWMgMTAwNjQ0Cj4gPj4+Pj4gLS0tIGEvZnMvZjJm cy9maWxlLmMKPiA+Pj4+PiArKysgYi9mcy9mMmZzL2ZpbGUuYwo+ID4+Pj4+IEBAIC0zNzQ5LDYg KzM3NDksMTMyIEBAIHN0YXRpYyBpbnQgZjJmc19yZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+Pj4gICAgICAgcmV0dXJuIHJl dDsKPiA+Pj4+PiAgfQo+ID4+Pj4+Cj4gPj4+Pj4gK3N0YXRpYyBpbnQgZjJmc190cmltX2ZpbGUo c3RydWN0IGZpbGUgKmZpbHApCj4gPj4+Pj4gK3sKPiA+Pj4+PiArICAgICBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gZmlsZV9pbm9kZShmaWxwKTsKPiA+Pj4+PiArICAgICBzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4+Pj4+ICsgICAgIHN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nID0gaW5vZGUtPmlfbWFwcGluZzsKPiA+Pj4+PiArICAgICBzdHJ1Y3Qg YmlvICpiaW8gPSBOVUxMOwo+ID4+Pj4+ICsgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnByZXZf YmRldiA9IE5VTEw7Cj4gPj4+Pj4gKyAgICAgbG9mZl90IGZpbGVfc2l6ZTsKPiA+Pj4+PiArICAg ICBwZ29mZl90IGluZGV4LCBwZ19zdGFydCA9IDAsIHBnX2VuZDsKPiA+Pj4+PiArICAgICBibG9j a190IHByZXZfYmxvY2sgPSAwLCBsZW4gPSAwOwo+ID4+Pj4+ICsgICAgIGludCByZXQgPSAwOwo+ ID4+Pj4+ICsKPiA+Pj4+PiArICAgICBpZiAoIWYyZnNfaHdfc3VwcG9ydF9kaXNjYXJkKHNiaSkp Cj4gPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPj4+Pj4gKwo+ID4+ Pj4+ICsgICAgIGlmICghU19JU1JFRyhpbm9kZS0+aV9tb2RlKSB8fCBmMmZzX2lzX2F0b21pY19m aWxlKGlub2RlKSB8fAo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX2NvbXByZXNz ZWRfZmlsZShpbm9kZSkpCj4gPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ Pj4+PiArCj4gPj4+Pj4gKyAgICAgaWYgKGYyZnNfcmVhZG9ubHkoc2JpLT5zYikpCj4gPj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVST0ZTOwo+ID4+Pj4+ICsKPiA+Pj4+PiArICAgICByZXQg PSBtbnRfd2FudF93cml0ZV9maWxlKGZpbHApOwo+ID4+Pj4+ICsgICAgIGlmIChyZXQpCj4gPj4+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+Pj4+ICsKPiA+Pj4+PiArICAgICBpbm9k ZV9sb2NrKGlub2RlKTsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgZmlsZV9zaXplID0gaV9zaXpl X3JlYWQoaW5vZGUpOwo+ID4+Pj4+ICsgICAgIGlmICghZmlsZV9zaXplKQo+ID4+Pj4+ICsgICAg ICAgICAgICAgZ290byBlcnI7Cj4gPj4+Pj4gKyAgICAgcGdfZW5kID0gKHBnb2ZmX3Qpcm91bmRf dXAoZmlsZV9zaXplLCBQQUdFX1NJWkUpID4+IFBBR0VfU0hJRlQ7Cj4gPj4+Pj4gKwo+ID4+Pj4+ ICsgICAgIHJldCA9IGYyZnNfY29udmVydF9pbmxpbmVfaW5vZGUoaW5vZGUpOwo+ID4+Pj4+ICsg ICAgIGlmIChyZXQpCj4gPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIGVycjsKPiA+Pj4+PiArCj4g Pj4+Pj4gKyAgICAgZG93bl93cml0ZSgmRjJGU19JKGlub2RlKS0+aV9nY19yd3NlbVtXUklURV0p Owo+ID4+Pj4+ICsgICAgIGRvd25fd3JpdGUoJkYyRlNfSShpbm9kZSktPmlfbW1hcF9zZW0pOwo+ ID4+Pj4+ICsKPiA+Pj4+PiArICAgICByZXQgPSBmaWxlbWFwX3dyaXRlX2FuZF93YWl0KG1hcHBp bmcpOwo+ID4+Pj4+ICsgICAgIGlmIChyZXQpCj4gPj4+Pj4gKyAgICAgICAgICAgICBnb3RvIG91 dDsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgdHJ1bmNhdGVfaW5vZGVfcGFnZXMobWFwcGluZywg MCk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsgICAgIGZvciAoaW5kZXggPSBwZ19zdGFydDsgaW5kZXgg PCBwZ19lbmQ7KSB7Cj4gPj4+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSBk bjsKPiA+Pj4+PiArICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbmRfb2Zmc2V0Owo+ID4+Pj4+ ICsKPiA+Pj4+PiArICAgICAgICAgICAgIHNldF9uZXdfZG5vZGUoJmRuLCBpbm9kZSwgTlVMTCwg TlVMTCwgMCk7Cj4gPj4+Pj4gKyAgICAgICAgICAgICByZXQgPSBmMmZzX2dldF9kbm9kZV9vZl9k YXRhKCZkbiwgaW5kZXgsIExPT0tVUF9OT0RFKTsKPiA+Pj4+PiArICAgICAgICAgICAgIGlmIChy ZXQpCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ID4+Pj4+ICsKPiA+ Pj4+PiArICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBBRERSU19QRVJfUEFHRShkbi5ub2RlX3Bh Z2UsIGlub2RlKTsKPiA+Pj4+PiArICAgICAgICAgICAgIGlmIChwZ19lbmQgPCBlbmRfb2Zmc2V0 ICsgaW5kZXgpCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGVuZF9vZmZzZXQgPSBwZ19l bmQgLSBpbmRleDsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgICAgICAgICBmb3IgKDsgZG4ub2Zz X2luX25vZGUgPCBlbmRfb2Zmc2V0Owo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRuLm9mc19pbl9ub2RlKyssIGluZGV4KyspIHsKPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqY3VyX2JkZXY7Cj4gPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIGJsb2NrX3QgYmxrYWRkciA9IGYyZnNfZGF0YV9ibGthZGRyKCZkbik7Cj4gPj4+ Pj4gKwo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoX19pc192YWxpZF9kYXRhX2Js a2FkZHIoYmxrYWRkcikpIHsKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIWYyZnNfaXNfdmFsaWRfYmxrYWRkcihGMkZTX0lfU0IoaW5vZGUpLAo+ID4+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrYWRkciwgREFUQV9HRU5FUklDX0VO SEFOQ0UpKSB7Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXQgPSAtRUZTQ09SUlVQVEVEOwo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKPiA+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+Pj4+PiArCj4gPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGN1cl9iZGV2ID0gZjJmc190YXJnZXRfZGV2aWNlKHNiaSwgYmxrYWRkciwg TlVMTCk7Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2lzX211bHRpX2Rl dmljZShzYmkpKSB7Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkg PSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBibGthZGRyKTsKPiA+Pj4+PiArCj4gPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxrYWRkciAtPSBGREVWKGkpLnN0YXJ0 X2JsazsKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4+Pj4+ICsKPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbikgewo+ID4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChwcmV2X2JkZXYgPT0gY3VyX2JkZXYgJiYKPiA+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsa2FkZHIgPT0gcHJldl9ibG9jayArIGxl bikgewo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKys7 Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IF9fYmxrZGV2X2lzc3Vl X2Rpc2NhcmQocHJldl9iZGV2LAo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTRUNUT1JfRlJPTV9CTE9DSyhwcmV2X2Jsb2NrKSwKPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVE9SX0ZST01f QkxPQ0sobGVuKSwKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0ZQX05PRlMsIDAsICZiaW8pOwo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPj4+Pj4gKz4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAwOwo+ID4+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgfQo+ID4+Pj4+ICsK PiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFsZW4pIHsKPiA+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2JkZXYgPSBjdXJfYmRldjsKPiA+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2Jsb2NrID0gYmxrYWRkcjsKPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSAxOwo+ID4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICB9Cj4gPj4+Pj4gKyAgICAgICAgICAgICB9Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsg ICAgICAgICAgICAgZjJmc19wdXRfZG5vZGUoJmRuKTsKPiA+Pj4+PiArICAgICB9Cj4gPj4+Pj4g Kwo+ID4+Pj4+ICsgICAgIGlmIChsZW4pCj4gPj4+Pj4gKyAgICAgICAgICAgICByZXQgPSBfX2Js a2Rldl9pc3N1ZV9kaXNjYXJkKHByZXZfYmRldiwKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNFQ1RPUl9GUk9NX0JMT0NLKHByZXZfYmxvY2spLAo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDVE9SX0ZST01fQkxPQ0so bGVuKSwKPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9O T0ZTLCAwLCAmYmlvKTsKPiA+Pj4+PiArb3V0Ogo+ID4+Pj4+ICsgICAgIGlmIChiaW8pIHsKPiA+ Pj4+PiArICAgICAgICAgICAgIHJldCA9IHN1Ym1pdF9iaW9fd2FpdChiaW8pOwo+ID4+Pj4+ICsg ICAgICAgICAgICAgYmlvX3B1dChiaW8pOwo+ID4+Pj4+ICsgICAgIH0KPiA+Pj4+PiArCj4gPj4+ Pj4gKyAgICAgdXBfd3JpdGUoJkYyRlNfSShpbm9kZSktPmlfbW1hcF9zZW0pOwo+ID4+Pj4+ICsg ICAgIHVwX3dyaXRlKCZGMkZTX0koaW5vZGUpLT5pX2djX3J3c2VtW1dSSVRFXSk7Cj4gPj4+Pj4g K2VycjoKPiA+Pj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4+Pj4+ICsgICAgIG1u dF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4gPj4+Pj4gKwo+ID4+Pj4+ICsgICAgIHJldHVybiBy ZXQ7Cj4gPj4+Pj4gK30KPiA+Pj4+PiArCj4gPj4+Pj4gIGxvbmcgZjJmc19pb2N0bChzdHJ1Y3Qg ZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+Pj4g IHsKPiA+Pj4+PiAgICAgICBpZiAodW5saWtlbHkoZjJmc19jcF9lcnJvcihGMkZTX0lfU0IoZmls ZV9pbm9kZShmaWxwKSkpKSkKPiA+Pj4+PiBAQCAtMzgzNSw2ICszOTYxLDggQEAgbG9uZyBmMmZz X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25n IGFyZykKPiA+Pj4+PiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX3JlbGVhc2VfY29tcHJlc3Nf YmxvY2tzKGZpbHAsIGFyZyk7Cj4gPj4+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZFX0NP TVBSRVNTX0JMT0NLUzoKPiA+Pj4+PiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX3Jlc2VydmVf Y29tcHJlc3NfYmxvY2tzKGZpbHAsIGFyZyk7Cj4gPj4+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19U UklNX0ZJTEU6Cj4gPj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZjJmc190cmltX2ZpbGUoZmls cCk7Cj4gPj4+Pj4gICAgICAgZGVmYXVsdDoKPiA+Pj4+PiAgICAgICAgICAgICAgIHJldHVybiAt RU5PVFRZOwo+ID4+Pj4+ICAgICAgIH0KPiA+Pj4+PiBAQCAtNDAwNCw2ICs0MTMyLDcgQEAgbG9u ZyBmMmZzX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwg dW5zaWduZWQgbG9uZyBhcmcpCj4gPj4+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfQ09NUFJF U1NfQkxPQ0tTOgo+ID4+Pj4+ICAgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9DT01QUkVTU19C TE9DS1M6Cj4gPj4+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZFX0NPTVBSRVNTX0JMT0NL UzoKPiA+Pj4+PiArICAgICBjYXNlIEYyRlNfSU9DX1RSSU1fRklMRToKPiA+Pj4+PiAgICAgICAg ICAgICAgIGJyZWFrOwo+ID4+Pj4+ICAgICAgIGRlZmF1bHQ6Cj4gPj4+Pj4gICAgICAgICAgICAg ICByZXR1cm4gLUVOT0lPQ1RMQ01EOwo+ID4+Pj4+Cj4gPj4+IC4KPiA+Pj4KPiA+IC4KPiA+IAo+ IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g TGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBMaW51eC1mMmZzLWRldmVsQGxpc3RzLnNv dXJjZWZvcmdlLm5ldAo+IGh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3Rp bmZvL2xpbnV4LWYyZnMtZGV2ZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1mMmZzLWRl dmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9s aXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg== 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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B13AC433DF for ; Mon, 8 Jun 2020 13:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E100F20774 for ; Mon, 8 Jun 2020 13:07:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591621657; bh=WB42G6Tb4c/hJxVzP2PTv/3cpqzVlOE3T/nUkDmSCgs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=WH9A3ty4vpX4wDHSm5mecYAPD4TAbVmLgfvGhtqiztXEDDAlxMILWl7KXmLFtFym1 3Qlfzf9XwZxu/MW0AaPBhUL6+K5NUycTSgeIjHctPw0SUkR9PavxI04Yylhve40zJH f7vU4rlPZ+cNbzbCZBI3WrjjN6ucg1AClL9FUhN0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729451AbgFHNHh (ORCPT ); Mon, 8 Jun 2020 09:07:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:42268 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728245AbgFHNHg (ORCPT ); Mon, 8 Jun 2020 09:07:36 -0400 Received: from localhost (unknown [104.132.1.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DF8992076C; Mon, 8 Jun 2020 13:07:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1591621655; bh=WB42G6Tb4c/hJxVzP2PTv/3cpqzVlOE3T/nUkDmSCgs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=up27qK9dq0dyu3RAw1CCL3tMTsF6AVIa6Twt+CAmjxZp5hKJ6QzCByVPjjgh49wvR 6ZWiKIYU5+fKvsOwTY+eaWQM2qunLX55Vyt3uyfpdS6SJUCOMJWEjQggm74wrb56B+ k6qBvMzsxYEu+COmBkFjalENt/u20aSWH0QsXBVY= Date: Mon, 8 Jun 2020 06:07:34 -0700 From: Jaegeuk Kim To: Chao Yu Cc: Daeho Jeong , Daeho Jeong , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: Re: [f2fs-dev] [PATCH] f2fs: add F2FS_IOC_TRIM_FILE ioctl Message-ID: <20200608130734.GB200855@google.com> References: <20200605042746.201180-1-daeho43@gmail.com> <36d3c98e-24bb-988c-57a3-82730cc75cbc@huawei.com> <3eade7bf-ce66-e502-24e7-e3a1e548dd77@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3eade7bf-ce66-e502-24e7-e3a1e548dd77@huawei.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/08, Chao Yu wrote: > On 2020/6/8 15:19, Daeho Jeong wrote: > > Yes, I agree with you about each vendor has different implementation on discard. > > So, we might be gonna use the combination of zeroing and send discards > > for a more > > secure solution. :) > > IIRC, current solution is: > > - pin file > - get all block addresses of file > - write zero to block addresses > - issue discard > > Is that correct? > > Could we handle those logic (zero out & discard) in new interface > (may be named as {F2FS,EXT4}_IOC_SEC_TRIM_FILE)? then userspace logic > could be quite simple later, and also memcpy could be avoid to make > destruction process more efficient. What about adding a flag to determine calling unmap and/or zero out? > > Just raw proposal. :) > > Thanks, > > > I think we still need a discard interface to unmap from the mapping > > table of the storage device side. > > > > Thanks, > > > > 2020년 6월 8일 (월) 오후 3:57, Chao Yu 님이 작성: > >> > >> On 2020/6/8 11:36, Daeho Jeong wrote: > >>> Yes, this is for security key destruction. > >>> > >>> AFAIK, discard will unmap the data block and, after done it, > >>> we can read either zero data or garbage data from that block depending > >>> on eMMC/UFS. > >> > >> Since spec didn't restrict how vendor implement the erase interface, so > >> in order to enhance performance of discard interface, vendor could implement > >> it as an async one, which may not zero mapping entry(L1 table), instead, it > >> could set related bitmap to invalid that mapping entry, than later if device > >> allow user to access that invalid mapping entry, key info may be explosed, > >> > >> It's completely up to how vendor implement the interface, so I think there is > >> still risk to use discard. > >> > >> Thanks, > >> > >>> In a view point of read data, it might be the same with zeroing the data block. > >>> However, since we can even unmap that block, I believe discard is > >>> safer than zeroing out. > >>> > >>> 2020년 6월 8일 (월) 오전 11:46, Chao Yu 님이 작성: > >>>> > >>>> On 2020/6/5 12:27, Daeho Jeong wrote: > >>>>> From: Daeho Jeong > >>>>> > >>>>> Added a new ioctl to send discard commands to whole data area of > >>>>> a regular file for security reason. > >>>> > >>>> I guess this interface is introduced for security key destruction, if I'm > >>>> right, however, IIRC, discard(erase) semantics in eMMC/UFS spec won't > >>>> guarantee that data which was discard could be zeroed out, so after discard, > >>>> the key still have risk of exposure. So instead, should we use sb_issue_zeroout()? > >>>> > >>>> Thanks, > >>>> > >>>>> > >>>>> Signed-off-by: Daeho Jeong > >>>>> --- > >>>>> fs/f2fs/f2fs.h | 1 + > >>>>> fs/f2fs/file.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++ > >>>>> 2 files changed, 130 insertions(+) > >>>>> > >>>>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > >>>>> index c812fb8e2d9c..9ae81d0fefa0 100644 > >>>>> --- a/fs/f2fs/f2fs.h > >>>>> +++ b/fs/f2fs/f2fs.h > >>>>> @@ -434,6 +434,7 @@ static inline bool __has_cursum_space(struct f2fs_journal *journal, > >>>>> _IOR(F2FS_IOCTL_MAGIC, 18, __u64) > >>>>> #define F2FS_IOC_RESERVE_COMPRESS_BLOCKS \ > >>>>> _IOR(F2FS_IOCTL_MAGIC, 19, __u64) > >>>>> +#define F2FS_IOC_TRIM_FILE _IO(F2FS_IOCTL_MAGIC, 20) > >>>>> > >>>>> #define F2FS_IOC_GET_VOLUME_NAME FS_IOC_GETFSLABEL > >>>>> #define F2FS_IOC_SET_VOLUME_NAME FS_IOC_SETFSLABEL > >>>>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > >>>>> index dfa1ac2d751a..58507bb5649c 100644 > >>>>> --- a/fs/f2fs/file.c > >>>>> +++ b/fs/f2fs/file.c > >>>>> @@ -3749,6 +3749,132 @@ static int f2fs_reserve_compress_blocks(struct file *filp, unsigned long arg) > >>>>> return ret; > >>>>> } > >>>>> > >>>>> +static int f2fs_trim_file(struct file *filp) > >>>>> +{ > >>>>> + struct inode *inode = file_inode(filp); > >>>>> + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > >>>>> + struct address_space *mapping = inode->i_mapping; > >>>>> + struct bio *bio = NULL; > >>>>> + struct block_device *prev_bdev = NULL; > >>>>> + loff_t file_size; > >>>>> + pgoff_t index, pg_start = 0, pg_end; > >>>>> + block_t prev_block = 0, len = 0; > >>>>> + int ret = 0; > >>>>> + > >>>>> + if (!f2fs_hw_support_discard(sbi)) > >>>>> + return -EOPNOTSUPP; > >>>>> + > >>>>> + if (!S_ISREG(inode->i_mode) || f2fs_is_atomic_file(inode) || > >>>>> + f2fs_compressed_file(inode)) > >>>>> + return -EINVAL; > >>>>> + > >>>>> + if (f2fs_readonly(sbi->sb)) > >>>>> + return -EROFS; > >>>>> + > >>>>> + ret = mnt_want_write_file(filp); > >>>>> + if (ret) > >>>>> + return ret; > >>>>> + > >>>>> + inode_lock(inode); > >>>>> + > >>>>> + file_size = i_size_read(inode); > >>>>> + if (!file_size) > >>>>> + goto err; > >>>>> + pg_end = (pgoff_t)round_up(file_size, PAGE_SIZE) >> PAGE_SHIFT; > >>>>> + > >>>>> + ret = f2fs_convert_inline_inode(inode); > >>>>> + if (ret) > >>>>> + goto err; > >>>>> + > >>>>> + down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); > >>>>> + down_write(&F2FS_I(inode)->i_mmap_sem); > >>>>> + > >>>>> + ret = filemap_write_and_wait(mapping); > >>>>> + if (ret) > >>>>> + goto out; > >>>>> + > >>>>> + truncate_inode_pages(mapping, 0); > >>>>> + > >>>>> + for (index = pg_start; index < pg_end;) { > >>>>> + struct dnode_of_data dn; > >>>>> + unsigned int end_offset; > >>>>> + > >>>>> + set_new_dnode(&dn, inode, NULL, NULL, 0); > >>>>> + ret = f2fs_get_dnode_of_data(&dn, index, LOOKUP_NODE); > >>>>> + if (ret) > >>>>> + goto out; > >>>>> + > >>>>> + end_offset = ADDRS_PER_PAGE(dn.node_page, inode); > >>>>> + if (pg_end < end_offset + index) > >>>>> + end_offset = pg_end - index; > >>>>> + > >>>>> + for (; dn.ofs_in_node < end_offset; > >>>>> + dn.ofs_in_node++, index++) { > >>>>> + struct block_device *cur_bdev; > >>>>> + block_t blkaddr = f2fs_data_blkaddr(&dn); > >>>>> + > >>>>> + if (__is_valid_data_blkaddr(blkaddr)) { > >>>>> + if (!f2fs_is_valid_blkaddr(F2FS_I_SB(inode), > >>>>> + blkaddr, DATA_GENERIC_ENHANCE)) { > >>>>> + ret = -EFSCORRUPTED; > >>>>> + goto out; > >>>>> + } > >>>>> + } else > >>>>> + continue; > >>>>> + > >>>>> + cur_bdev = f2fs_target_device(sbi, blkaddr, NULL); > >>>>> + if (f2fs_is_multi_device(sbi)) { > >>>>> + int i = f2fs_target_device_index(sbi, blkaddr); > >>>>> + > >>>>> + blkaddr -= FDEV(i).start_blk; > >>>>> + } > >>>>> + > >>>>> + if (len) { > >>>>> + if (prev_bdev == cur_bdev && > >>>>> + blkaddr == prev_block + len) { > >>>>> + len++; > >>>>> + } else { > >>>>> + ret = __blkdev_issue_discard(prev_bdev, > >>>>> + SECTOR_FROM_BLOCK(prev_block), > >>>>> + SECTOR_FROM_BLOCK(len), > >>>>> + GFP_NOFS, 0, &bio); > >>>>> + if (ret) > >>>>> + goto out; > >>>>> +> + len = 0; > >>>>> + } > >>>>> + } > >>>>> + > >>>>> + if (!len) { > >>>>> + prev_bdev = cur_bdev; > >>>>> + prev_block = blkaddr; > >>>>> + len = 1; > >>>>> + } > >>>>> + } > >>>>> + > >>>>> + f2fs_put_dnode(&dn); > >>>>> + } > >>>>> + > >>>>> + if (len) > >>>>> + ret = __blkdev_issue_discard(prev_bdev, > >>>>> + SECTOR_FROM_BLOCK(prev_block), > >>>>> + SECTOR_FROM_BLOCK(len), > >>>>> + GFP_NOFS, 0, &bio); > >>>>> +out: > >>>>> + if (bio) { > >>>>> + ret = submit_bio_wait(bio); > >>>>> + bio_put(bio); > >>>>> + } > >>>>> + > >>>>> + up_write(&F2FS_I(inode)->i_mmap_sem); > >>>>> + up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]); > >>>>> +err: > >>>>> + inode_unlock(inode); > >>>>> + mnt_drop_write_file(filp); > >>>>> + > >>>>> + return ret; > >>>>> +} > >>>>> + > >>>>> long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > >>>>> { > >>>>> if (unlikely(f2fs_cp_error(F2FS_I_SB(file_inode(filp))))) > >>>>> @@ -3835,6 +3961,8 @@ long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) > >>>>> return f2fs_release_compress_blocks(filp, arg); > >>>>> case F2FS_IOC_RESERVE_COMPRESS_BLOCKS: > >>>>> return f2fs_reserve_compress_blocks(filp, arg); > >>>>> + case F2FS_IOC_TRIM_FILE: > >>>>> + return f2fs_trim_file(filp); > >>>>> default: > >>>>> return -ENOTTY; > >>>>> } > >>>>> @@ -4004,6 +4132,7 @@ long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > >>>>> case F2FS_IOC_GET_COMPRESS_BLOCKS: > >>>>> case F2FS_IOC_RELEASE_COMPRESS_BLOCKS: > >>>>> case F2FS_IOC_RESERVE_COMPRESS_BLOCKS: > >>>>> + case F2FS_IOC_TRIM_FILE: > >>>>> break; > >>>>> default: > >>>>> return -ENOIOCTLCMD; > >>>>> > >>> . > >>> > > . > > > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel