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=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,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 DE80FC4361B for ; Tue, 8 Dec 2020 03:59:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8B3D623A5E for ; Tue, 8 Dec 2020 03:59:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727193AbgLHD7x (ORCPT ); Mon, 7 Dec 2020 22:59:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725853AbgLHD7x (ORCPT ); Mon, 7 Dec 2020 22:59:53 -0500 Received: from mail-lj1-x243.google.com (mail-lj1-x243.google.com [IPv6:2a00:1450:4864:20::243]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCABEC061793 for ; Mon, 7 Dec 2020 19:59:12 -0800 (PST) Received: by mail-lj1-x243.google.com with SMTP id f11so5293926ljm.8 for ; Mon, 07 Dec 2020 19:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=RsbzU4sGnz6t/Szy1M4PvE8spsRqzZ/20pYbEvVr59TaK7F6NezcB8ZWbF827mAJ5P q/wnbd11Qf8tqrcjpb7i1M8VfsQLXhOjnMpi6SkKomDYbdKT7fMoW4/DTa5oHpAWvx3/ 2YJYllYDw93ukact1Z23YCH8SBFVAcMXQ4h/Tc/i1Crf1114Kbmykd77gVMFzDfqPXx4 e1epz7sR8fJ7uI8F7ihHzFmcCX7etHkgm5tKhN0fkS4Ejw0XVUzhc14PjpXti/70wMmY BNRkCetdBl3EAScmPRaJYsGxoKlQ3bNDhycDiL8028tnHGqKUeSp1Q4uPeCET23rv8gX emEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=mz0WLB7DZW7ZzLFQ6Qi7b5vlz+4KHCejrvNRM2KGubtgDDA66fUz20aUpQaFtDYjq9 +YOBs81eps6Hl/6OPQt2ZrB4ELXREVLo7H71uW26sipD2+isLUHbAUDFFYH9JBALs6Ka TYF4xS8ztccRLPBHCzC63ZqO+bSgZ5TfSdIcWOBcm2hkCKeDEd4W2sQ1WjLBgsCdoFZA URfHIX+I0GjeHHXVBexMqAgueUk3pwkOh6sKFG3+fdLaibmr+rBPsUklNVu898Fncf+E OLKDrpzFOE/RErWNDVvjp/eeijsYsmK2LWf2UFurMyeFgBAwpbE7t/AfvVHZVgfKGN2Z VDGA== X-Gm-Message-State: AOAM530mubKlBwY4VRFApdujTeptrIs1vPyZpEav2n11lUrZo/AcdIKu fepVOHBlQl61+dpCyOSx0Vb7joLTcSrkK8flqQPvTweV/o4= X-Google-Smtp-Source: ABdhPJxlXzN73dX72TWO+dei0zl1RDf8jnUnx5NKLSs/3jJWZQDr4zagOWcVd9TYXCnqZ/yrzrXxx1cwFyBMUAsUs+0= X-Received: by 2002:a2e:a0cb:: with SMTP id f11mr2943869ljm.363.1607399951348; Mon, 07 Dec 2020 19:59:11 -0800 (PST) MIME-Version: 1.0 References: <20201201040803.3590442-1-daeho43@gmail.com> In-Reply-To: From: Daeho Jeong Date: Tue, 8 Dec 2020 12:59:00 +0900 Message-ID: Subject: Re: [f2fs-dev] [PATCH v2 1/2] f2fs: add compress_mode mount option To: Eric Biggers Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com, Daeho Jeong Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org compression enabled regular files have different formats of node metadata on disk. So, using the "compress_mode=3Duser,compress_extension=3D*" mount option, we want to make the metadata of files ready for compression and make them compressed whenever the user wants using new ioctls. 2020=EB=85=84 12=EC=9B=94 8=EC=9D=BC (=ED=99=94) =EC=98=A4=ED=9B=84 12:51, = Eric Biggers =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > > On Tue, Dec 01, 2020 at 01:08:02PM +0900, Daeho Jeong wrote: > > From: Daeho Jeong > > > > We will add a new "compress_mode" mount option to control file > > compression mode. This supports "fs" and "user". In "fs" mode (default)= , > > f2fs does automatic compression on the compression enabled files. > > In "user" mode, f2fs disables the automaic compression and gives the > > user discretion of choosing the target file and the timing. It means > > the user can do manual compression/decompression on the compression > > enabled files using ioctls. > > > > Signed-off-by: Daeho Jeong > > --- > > v2: changed mount option name and added more explanation of mount optio= n > > --- > > Documentation/filesystems/f2fs.rst | 35 ++++++++++++++++++++++++++++++ > > fs/f2fs/compress.c | 2 +- > > fs/f2fs/data.c | 2 +- > > fs/f2fs/f2fs.h | 30 +++++++++++++++++++++++++ > > fs/f2fs/segment.c | 2 +- > > fs/f2fs/super.c | 23 ++++++++++++++++++++ > > 6 files changed, 91 insertions(+), 3 deletions(-) > > > > diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesys= tems/f2fs.rst > > index b8ee761c9922..5eb8d63439ec 100644 > > --- a/Documentation/filesystems/f2fs.rst > > +++ b/Documentation/filesystems/f2fs.rst > > @@ -260,6 +260,13 @@ compress_extension=3D%s Support adding specifi= ed extension, so that f2fs can enab > > For other files, we can still enable compression= via ioctl. > > Note that, there is one reserved special extensi= on '*', it > > can be set to enable compression for all files. > > +compress_mode=3D%s Control file compression mode. This supports "= fs" and "user" > > + modes. In "fs" mode (default), f2fs does automat= ic compression > > + on the compression enabled files. In "user" mode= , f2fs disables > > + the automaic compression and gives the user disc= retion of > > + choosing the target file and the timing. The use= r can do manual > > + compression/decompression on the compression ena= bled files using > > + ioctls. > > inlinecrypt When possible, encrypt/decrypt the contents of e= ncrypted > > files using the blk-crypto framework rather than > > filesystem-layer encryption. This allows the use= of > > @@ -810,6 +817,34 @@ Compress metadata layout:: > > | data length | data chksum | reserved | compressed data = | > > +-------------+-------------+----------+-------------------------= ---+ > > > > +Compression mode > > +-------------------------- > > + > > +f2fs supports "fs" and "user" compression modes with "compression_mode= " mount option. > > +With this option, f2fs provides a choice to select the way how to comp= ress the > > +compression enabled files (refer to "Compression implementation" secti= on for how to > > +enable compression on a regular inode). > > + > > +1) compress_mode=3Dfs > > +This is the default option. f2fs does automatic compression in the wri= teback of the > > +compression enabled files. > > + > > +2) compress_mode=3Duser > > +This disables the automaic compression and gives the user discretion o= f choosing the > > +target file and the timing. The user can do manual compression/decompr= ession on the > > +compression enabled files using F2FS_IOC_DECOMPRESS_FILE and F2FS_IOC_= COMPRESS_FILE > > +ioctls like the below. > > + > > +To decompress a file, > > + > > +fd =3D open(filename, O_WRONLY, 0); > > +ret =3D ioctl(fd, F2FS_IOC_DECOMPRESS_FILE); > > + > > +To compress a file, > > + > > +fd =3D open(filename, O_WRONLY, 0); > > +ret =3D ioctl(fd, F2FS_IOC_COMPRESS_FILE); > > + > > Why doesn't compress_mode=3Duser just cause regular files to not inherit = the > compression flag? Then users could set or clear the compression flag usi= ng > FS_IOC_SETFLAGS, without any need for these new ioctls. > > - Eric 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=-10.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_NONE 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 5F45FC4361B for ; Tue, 8 Dec 2020 04:13:23 +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 0734E239EB; Tue, 8 Dec 2020 04:13:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0734E239EB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com 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-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.90_1) (envelope-from ) id 1kmUNN-0001wo-Hy; Tue, 08 Dec 2020 04:13:21 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kmUMy-0001t0-8y for linux-f2fs-devel@lists.sourceforge.net; Tue, 08 Dec 2020 04:12:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:Cc:To: Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version: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=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=lBgds7PKguHLpufNXOGOnQIurN o5mlKB9xPuWyuQ/HebcisIJuF06yKrc+uLqqmSpiIsDK47xV5p4noZQpGvYvnRio64w9G7mqysCzU KKrn+mhsZ+G+XjN3fkocP46yG5PYzsmQsHEgZVGjXhVIE3HsNDmZohDIRJVEHzebdciE=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:Cc:To:Subject:Message-ID:Date:From :In-Reply-To:References:MIME-Version: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=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=SNd91p3W7iE50Ik+AyR2eYcPya Bdp5Yf3j26ohZqZzS0yP5UWxG7Y9gpJgNfgVB47Kw8H+Pu1EDOQV6MmjrNzXsS7OzE0XPX20gqRfd xleVJYKs8JhgBC4bVjg+5MdoUPGjJIk5VPPo5V7twPeRn9a41T5SxJKeDQ5IUwy7mryI=; Received: from mail-lj1-f193.google.com ([209.85.208.193]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.92.2) id 1kmU9m-002wG7-0R for linux-f2fs-devel@lists.sourceforge.net; Tue, 08 Dec 2020 03:59:25 +0000 Received: by mail-lj1-f193.google.com with SMTP id m13so1369062ljo.11 for ; Mon, 07 Dec 2020 19:59:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=RsbzU4sGnz6t/Szy1M4PvE8spsRqzZ/20pYbEvVr59TaK7F6NezcB8ZWbF827mAJ5P q/wnbd11Qf8tqrcjpb7i1M8VfsQLXhOjnMpi6SkKomDYbdKT7fMoW4/DTa5oHpAWvx3/ 2YJYllYDw93ukact1Z23YCH8SBFVAcMXQ4h/Tc/i1Crf1114Kbmykd77gVMFzDfqPXx4 e1epz7sR8fJ7uI8F7ihHzFmcCX7etHkgm5tKhN0fkS4Ejw0XVUzhc14PjpXti/70wMmY BNRkCetdBl3EAScmPRaJYsGxoKlQ3bNDhycDiL8028tnHGqKUeSp1Q4uPeCET23rv8gX emEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=qZ3sT96+VaeWT9VitA7FsIMHux1rYKs7g2DqKKiiN3E=; b=WjrH6yoHFjFTTlJ3xtbfbviesjSl5pCtnUbkeftfjCYjxegJwVXE9Bm2eyIZaL9VXz HeUP26QVZpqPPM8EsQw/zVtt81Jme3U+yS4PtaTFG/KTc8tNinlA9E8ikRTnIrAZ0AxV Q3u5dQ6H6Gmif5stPPj8yXF7fG1E/Mm5O//4AXl7UqUy+FRUQTX1i8CYpxW/0BIDyKit LoAE9jvJxy6lLEvr4WG4L3THKXlnFB44ZQtEnslhROBtjCWbau5g96Y+3DI4XCQJj/mL VlvhU3LH6I3pUmMm4FvQkb+N5lVlHtbe5vRUDXc3ZmSZoLODXAkuHLlQ/8lmNZvuKTSw lEmQ== X-Gm-Message-State: AOAM532Yv9I4qllvn+8okzz/YixMtOqG5e0NteILIdun2HAu74WTRKIy 6KexFfcAWZlJtpSbl5fiJEc+xVDcIJEkS5K1Oiw= X-Google-Smtp-Source: ABdhPJxlXzN73dX72TWO+dei0zl1RDf8jnUnx5NKLSs/3jJWZQDr4zagOWcVd9TYXCnqZ/yrzrXxx1cwFyBMUAsUs+0= X-Received: by 2002:a2e:a0cb:: with SMTP id f11mr2943869ljm.363.1607399951348; Mon, 07 Dec 2020 19:59:11 -0800 (PST) MIME-Version: 1.0 References: <20201201040803.3590442-1-daeho43@gmail.com> In-Reply-To: From: Daeho Jeong Date: Tue, 8 Dec 2020 12:59:00 +0900 Message-ID: To: Eric Biggers X-Headers-End: 1kmU9m-002wG7-0R Subject: Re: [f2fs-dev] [PATCH v2 1/2] f2fs: add compress_mode mount option 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: Daeho Jeong , kernel-team@android.com, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net Y29tcHJlc3Npb24gZW5hYmxlZCByZWd1bGFyIGZpbGVzIGhhdmUgZGlmZmVyZW50IGZvcm1hdHMg b2Ygbm9kZQptZXRhZGF0YSBvbiBkaXNrLiBTbywgdXNpbmcgdGhlCiJjb21wcmVzc19tb2RlPXVz ZXIsY29tcHJlc3NfZXh0ZW5zaW9uPSoiIG1vdW50IG9wdGlvbiwgd2Ugd2FudCB0bwptYWtlIHRo ZSBtZXRhZGF0YSBvZiBmaWxlcyByZWFkeSBmb3IgY29tcHJlc3Npb24gYW5kIG1ha2UgdGhlbQpj b21wcmVzc2VkIHdoZW5ldmVyIHRoZSB1c2VyIHdhbnRzIHVzaW5nIG5ldyBpb2N0bHMuCgoyMDIw 64WEIDEy7JuUIDjsnbwgKO2ZlCkg7Jik7ZuEIDEyOjUxLCBFcmljIEJpZ2dlcnMgPGViaWdnZXJz QGtlcm5lbC5vcmc+64uY7J20IOyekeyEsToKPgo+IE9uIFR1ZSwgRGVjIDAxLCAyMDIwIGF0IDAx OjA4OjAyUE0gKzA5MDAsIERhZWhvIEplb25nIHdyb3RlOgo+ID4gRnJvbTogRGFlaG8gSmVvbmcg PGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+Cj4gPiBXZSB3aWxsIGFkZCBhIG5ldyAiY29tcHJl c3NfbW9kZSIgbW91bnQgb3B0aW9uIHRvIGNvbnRyb2wgZmlsZQo+ID4gY29tcHJlc3Npb24gbW9k ZS4gVGhpcyBzdXBwb3J0cyAiZnMiIGFuZCAidXNlciIuIEluICJmcyIgbW9kZSAoZGVmYXVsdCks Cj4gPiBmMmZzIGRvZXMgYXV0b21hdGljIGNvbXByZXNzaW9uIG9uIHRoZSBjb21wcmVzc2lvbiBl bmFibGVkIGZpbGVzLgo+ID4gSW4gInVzZXIiIG1vZGUsIGYyZnMgZGlzYWJsZXMgdGhlIGF1dG9t YWljIGNvbXByZXNzaW9uIGFuZCBnaXZlcyB0aGUKPiA+IHVzZXIgZGlzY3JldGlvbiBvZiBjaG9v c2luZyB0aGUgdGFyZ2V0IGZpbGUgYW5kIHRoZSB0aW1pbmcuIEl0IG1lYW5zCj4gPiB0aGUgdXNl ciBjYW4gZG8gbWFudWFsIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gb24gdGhlIGNvbXByZXNz aW9uCj4gPiBlbmFibGVkIGZpbGVzIHVzaW5nIGlvY3Rscy4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5 OiBEYWVobyBKZW9uZyA8ZGFlaG9qZW9uZ0Bnb29nbGUuY29tPgo+ID4gLS0tCj4gPiB2MjogY2hh bmdlZCBtb3VudCBvcHRpb24gbmFtZSBhbmQgYWRkZWQgbW9yZSBleHBsYW5hdGlvbiBvZiBtb3Vu dCBvcHRpb24KPiA+IC0tLQo+ID4gIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5yc3Qg fCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBmcy9mMmZzL2NvbXByZXNz LmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiA+ICBmcy9mMmZzL2RhdGEuYyAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KPiA+ICBmcy9mMmZzL2YyZnMuaCAgICAgICAgICAgICAgICAgICAg IHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGZzL2YyZnMvc2VnbWVudC5jICAg ICAgICAgICAgICAgICAgfCAgMiArLQo+ID4gIGZzL2YyZnMvc3VwZXIuYyAgICAgICAgICAgICAg ICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKwo+ID4gIDYgZmlsZXMgY2hhbmdlZCwgOTEg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMv ZjJmcy5yc3QKPiA+IGluZGV4IGI4ZWU3NjFjOTkyMi4uNWViOGQ2MzQzOWVjIDEwMDY0NAo+ID4g LS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gKysrIGIvRG9jdW1l bnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gQEAgLTI2MCw2ICsyNjAsMTMgQEAgY29t cHJlc3NfZXh0ZW5zaW9uPSVzICAgICBTdXBwb3J0IGFkZGluZyBzcGVjaWZpZWQgZXh0ZW5zaW9u LCBzbyB0aGF0IGYyZnMgY2FuIGVuYWIKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG90 aGVyIGZpbGVzLCB3ZSBjYW4gc3RpbGwgZW5hYmxlIGNvbXByZXNzaW9uIHZpYSBpb2N0bC4KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0LCB0aGVyZSBpcyBvbmUgcmVzZXJ2ZWQg c3BlY2lhbCBleHRlbnNpb24gJyonLCBpdAo+ID4gICAgICAgICAgICAgICAgICAgICAgICBjYW4g YmUgc2V0IHRvIGVuYWJsZSBjb21wcmVzc2lvbiBmb3IgYWxsIGZpbGVzLgo+ID4gK2NvbXByZXNz X21vZGU9JXMgICAgICBDb250cm9sIGZpbGUgY29tcHJlc3Npb24gbW9kZS4gVGhpcyBzdXBwb3J0 cyAiZnMiIGFuZCAidXNlciIKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgbW9kZXMuIEluICJm cyIgbW9kZSAoZGVmYXVsdCksIGYyZnMgZG9lcyBhdXRvbWF0aWMgY29tcHJlc3Npb24KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgb24gdGhlIGNvbXByZXNzaW9uIGVuYWJsZWQgZmlsZXMuIElu ICJ1c2VyIiBtb2RlLCBmMmZzIGRpc2FibGVzCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHRo ZSBhdXRvbWFpYyBjb21wcmVzc2lvbiBhbmQgZ2l2ZXMgdGhlIHVzZXIgZGlzY3JldGlvbiBvZgo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBjaG9vc2luZyB0aGUgdGFyZ2V0IGZpbGUgYW5kIHRo ZSB0aW1pbmcuIFRoZSB1c2VyIGNhbiBkbyBtYW51YWwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBvbiB0aGUgY29tcHJlc3Npb24gZW5hYmxlZCBm aWxlcyB1c2luZwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpb2N0bHMuCj4gPiAgaW5saW5l Y3J5cHQgICAgICAgICAgIFdoZW4gcG9zc2libGUsIGVuY3J5cHQvZGVjcnlwdCB0aGUgY29udGVu dHMgb2YgZW5jcnlwdGVkCj4gPiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIHVzaW5nIHRo ZSBibGstY3J5cHRvIGZyYW1ld29yayByYXRoZXIgdGhhbgo+ID4gICAgICAgICAgICAgICAgICAg ICAgICBmaWxlc3lzdGVtLWxheWVyIGVuY3J5cHRpb24uIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YK PiA+IEBAIC04MTAsNiArODE3LDM0IEBAIENvbXByZXNzIG1ldGFkYXRhIGxheW91dDo6Cj4gPiAg ICAgICB8IGRhdGEgbGVuZ3RoIHwgZGF0YSBjaGtzdW0gfCByZXNlcnZlZCB8ICAgICAgY29tcHJl c3NlZCBkYXRhICAgICAgIHwKPiA+ICAgICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4KPiA+ICtDb21wcmVz c2lvbiBtb2RlCj4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICsKPiA+ICtmMmZz IHN1cHBvcnRzICJmcyIgYW5kICJ1c2VyIiBjb21wcmVzc2lvbiBtb2RlcyB3aXRoICJjb21wcmVz c2lvbl9tb2RlIiBtb3VudCBvcHRpb24uCj4gPiArV2l0aCB0aGlzIG9wdGlvbiwgZjJmcyBwcm92 aWRlcyBhIGNob2ljZSB0byBzZWxlY3QgdGhlIHdheSBob3cgdG8gY29tcHJlc3MgdGhlCj4gPiAr Y29tcHJlc3Npb24gZW5hYmxlZCBmaWxlcyAocmVmZXIgdG8gIkNvbXByZXNzaW9uIGltcGxlbWVu dGF0aW9uIiBzZWN0aW9uIGZvciBob3cgdG8KPiA+ICtlbmFibGUgY29tcHJlc3Npb24gb24gYSBy ZWd1bGFyIGlub2RlKS4KPiA+ICsKPiA+ICsxKSBjb21wcmVzc19tb2RlPWZzCj4gPiArVGhpcyBp cyB0aGUgZGVmYXVsdCBvcHRpb24uIGYyZnMgZG9lcyBhdXRvbWF0aWMgY29tcHJlc3Npb24gaW4g dGhlIHdyaXRlYmFjayBvZiB0aGUKPiA+ICtjb21wcmVzc2lvbiBlbmFibGVkIGZpbGVzLgo+ID4g Kwo+ID4gKzIpIGNvbXByZXNzX21vZGU9dXNlcgo+ID4gK1RoaXMgZGlzYWJsZXMgdGhlIGF1dG9t YWljIGNvbXByZXNzaW9uIGFuZCBnaXZlcyB0aGUgdXNlciBkaXNjcmV0aW9uIG9mIGNob29zaW5n IHRoZQo+ID4gK3RhcmdldCBmaWxlIGFuZCB0aGUgdGltaW5nLiBUaGUgdXNlciBjYW4gZG8gbWFu dWFsIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gb24gdGhlCj4gPiArY29tcHJlc3Npb24gZW5h YmxlZCBmaWxlcyB1c2luZyBGMkZTX0lPQ19ERUNPTVBSRVNTX0ZJTEUgYW5kIEYyRlNfSU9DX0NP TVBSRVNTX0ZJTEUKPiA+ICtpb2N0bHMgbGlrZSB0aGUgYmVsb3cuCj4gPiArCj4gPiArVG8gZGVj b21wcmVzcyBhIGZpbGUsCj4gPiArCj4gPiArZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1dST05MWSwg MCk7Cj4gPiArcmV0ID0gaW9jdGwoZmQsIEYyRlNfSU9DX0RFQ09NUFJFU1NfRklMRSk7Cj4gPiAr Cj4gPiArVG8gY29tcHJlc3MgYSBmaWxlLAo+ID4gKwo+ID4gK2ZkID0gb3BlbihmaWxlbmFtZSwg T19XUk9OTFksIDApOwo+ID4gK3JldCA9IGlvY3RsKGZkLCBGMkZTX0lPQ19DT01QUkVTU19GSUxF KTsKPiA+ICsKPgo+IFdoeSBkb2Vzbid0IGNvbXByZXNzX21vZGU9dXNlciBqdXN0IGNhdXNlIHJl Z3VsYXIgZmlsZXMgdG8gbm90IGluaGVyaXQgdGhlCj4gY29tcHJlc3Npb24gZmxhZz8gIFRoZW4g dXNlcnMgY291bGQgc2V0IG9yIGNsZWFyIHRoZSBjb21wcmVzc2lvbiBmbGFnIHVzaW5nCj4gRlNf SU9DX1NFVEZMQUdTLCB3aXRob3V0IGFueSBuZWVkIGZvciB0aGVzZSBuZXcgaW9jdGxzLgo+Cj4g LSBFcmljCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K TGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3Vy Y2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8v bGludXgtZjJmcy1kZXZlbAo=