Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp562052ybb; Wed, 1 Apr 2020 05:36:55 -0700 (PDT) X-Google-Smtp-Source: APiQypL8ym646PgzuNwWxv2PpdddzxcfNLLViP2wk6KxkfXdUpgEaoMTZFqT795oeQx+Pu4gOR7k X-Received: by 2002:a54:448a:: with SMTP id v10mr2633455oiv.49.1585744615016; Wed, 01 Apr 2020 05:36:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585744615; cv=none; d=google.com; s=arc-20160816; b=IireALJECjgg2RZVdJ1kRKECnJvKCath0f2CiE3wlmMkN3qwlUTCEFNStmJYLmAeHQ K15afixhFL+CLp0T5m5Eia3wmcHE1Bnltbb8WZwX4csISTKwH/kHDK4gpRNAZDpUTqnl 4I84cj8/0FL2ZY6Fr/8rLIHaLY6GABypybryWGQsrvcqqeA7eQucRepo7nu1h6wZ3E8q U4z5ood7dyqGjmDLYKlURmzBl+WITuLy3hIcXoz39x+77EfdL9k3psviEROQZX7wdI+Y 1CSOtxO2qBN2RmG1L+Dc1JFDZS2bz7F23SCDgLGQtLzJ/8fm3R3C/ZkNLi3Navj+QziE q6ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=uTsGL65lvJuTsIl0dqr7bKucShhojW0xMedUkjqlVzM=; b=TysMMni1glboqbfjWcFRru6Kg29BQCOMDJeEceb21Z59mClXBOSiGzCMA/IitxcuyU b4a+D5UjxMEVJoD7JcjqYmAkASwRgsvLKYLQhG6iqgUOeTjQxrGSDjnyVEg5f8e2EC2K EPBKK6FeKuP6U8I6HDmUlAN8k/wFGo4v2CpmJheHC98UPF3PXOtrExCVSkZqFw537iY7 pT099+PBNlir5pYOHgDblwSiRLD5a4lpphvKGky0cK/m1u1pejC5gTLxNbCyrrIpveYQ Low/Cp+Lkg9/t3YpC335f3MH/NrtRhQ6AB87vZa06JnvsQn50H1wzVZ6+8Qb8LFcOUyD +bzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=temperror (no key for signature) header.i=@szeredi.hu header.s=google header.b=jCJFZ+Hi; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i5si758257otp.103.2020.04.01.05.36.24; Wed, 01 Apr 2020 05:36:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=temperror (no key for signature) header.i=@szeredi.hu header.s=google header.b=jCJFZ+Hi; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726974AbgDAMgJ (ORCPT + 99 others); Wed, 1 Apr 2020 08:36:09 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:45574 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732362AbgDAMgI (ORCPT ); Wed, 1 Apr 2020 08:36:08 -0400 Received: by mail-ed1-f66.google.com with SMTP id u59so29353144edc.12 for ; Wed, 01 Apr 2020 05:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=uTsGL65lvJuTsIl0dqr7bKucShhojW0xMedUkjqlVzM=; b=jCJFZ+HiNEuy/1r56aFNXrn6fHoEK8O3KCSz//LJzZatHHt+nxLGC/hod64eTteDFK seWl4HmqojVkL5q8Bn6tL0NJv+dwEUUj3UALZF1fbSNV+MWwr06bJR7UUSiXzzC1sT8E iCeJq2MPcTQXxneT4OlsyPJ5NPC0xTwgbWYXE= 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; bh=uTsGL65lvJuTsIl0dqr7bKucShhojW0xMedUkjqlVzM=; b=APbucZMUCVrl5itbzIEgEXVnmyJ4VY7883R1+AabMjRbqeIM/HGLeT1wZYidBYlqpj 02GMe3ToDOyJtEC0ID5u+7t2rbN8t6NPBbPXi1uFahynZ980IpgFU6tMKP/gB4RBeM39 3PHyqQ6/XRTFYvOBaoym3d6OlWGvXVj+GCLk/8O8yWu9Aptg6BawakzcCrFtBINHlOXJ cbt2NUHH9jU3p6ZzkaIsAmlrMKheduVPtZLSIxM7vC3pTL4TxTo9ZlUFRaoK0tPZdOh7 xsTTcgiklVbp1tACUH2bzq6Q/UwP6QWl9tblvlJf4yuXSGCRsv8U1bhKTCY60NBF6yjB uFfQ== X-Gm-Message-State: ANhLgQ3cOT/Dwz3A2F3BPYqzqlO2dKVTaDCsG1ojB4cC5i8tWmRB0gKX WT2WI4As2ZMdSV5flX9MCZa1E7i4+tn/dtflOkB1MA== X-Received: by 2002:a50:c341:: with SMTP id q1mr21103698edb.247.1585744565376; Wed, 01 Apr 2020 05:36:05 -0700 (PDT) MIME-Version: 1.0 References: <158454408854.2864823.5910520544515668590.stgit@warthog.procyon.org.uk> <50caf93782ba1d66bd6acf098fb8dcb0ecc98610.camel@themaw.net> <2465266.1585729649@warthog.procyon.org.uk> In-Reply-To: From: Miklos Szeredi Date: Wed, 1 Apr 2020 14:35:54 +0200 Message-ID: Subject: Re: [PATCH 00/13] VFS: Filesystem information [ver #19] To: David Howells Cc: Ian Kent , Linus Torvalds , Al Viro , Linux NFS list , Andreas Dilger , Anna Schumaker , "Theodore Ts'o" , Linux API , linux-ext4@vger.kernel.org, Trond Myklebust , Miklos Szeredi , Christian Brauner , Jann Horn , "Darrick J. Wong" , Karel Zak , Jeff Layton , linux-fsdevel@vger.kernel.org, LSM , linux-kernel@vger.kernel.org Content-Type: multipart/mixed; boundary="00000000000086676005a239ed40" Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org --00000000000086676005a239ed40 Content-Type: text/plain; charset="UTF-8" On Wed, Apr 1, 2020 at 10:37 AM Miklos Szeredi wrote: > > On Wed, Apr 1, 2020 at 10:27 AM David Howells wrote: > > > > Miklos Szeredi wrote: > > > > > According to dhowell's measurements processing 100k mounts would take > > > about a few seconds of system time (that's the time spent by the > > > kernel to retrieve the data, > > > > But the inefficiency of mountfs - at least as currently implemented - scales > > up with the number of individual values you want to retrieve, both in terms of > > memory usage and time taken. > > I've taken that into account when guesstimating a "few seconds per > 100k entries". My guess is that there's probably an order of > magnitude difference between the performance of a fs based interface > and a binary syscall based interface. That could be reduced somewhat > with a readfile(2) type API. And to show that I'm not completely off base, attached a patch that adds a limited readfile(2) syscall and uses it in the p2 method. Results are promising: ./test-fsinfo-perf /tmp/a 30000 --- make mounts --- --- test fsinfo by path --- sum(mnt_id) = 930000 --- test fsinfo by mnt_id --- sum(mnt_id) = 930000 --- test /proc/fdinfo --- sum(mnt_id) = 930000 --- test mountfs --- sum(mnt_id) = 930000 For 30000 mounts, f= 146400us f2= 136766us p= 1406569us p2= 221669us; p=9.6*f p=10.3*f2 p=6.3*p2 --- umount --- This is about a 2 fold increase in speed compared to open + read + close. Is someone still worried about performance, or can we move on to more interesting parts of the design? Thanks, Miklos --00000000000086676005a239ed40 Content-Type: text/x-patch; charset="US-ASCII"; name="fsmount-readfile.patch" Content-Disposition: attachment; filename="fsmount-readfile.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8hbbx3t0 SW5kZXg6IGxpbnV4L2ZzL21vdW50ZnMvc3VwZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC5vcmln L2ZzL21vdW50ZnMvc3VwZXIuYwkyMDIwLTA0LTAxIDE0OjIxOjI0LjYwOTk1NTA3MiArMDIwMAor KysgbGludXgvZnMvbW91bnRmcy9zdXBlci5jCTIwMjAtMDQtMDEgMTQ6MjE6NDIuNDI2MTUxNTQ1 ICswMjAwCkBAIC01MSwxMCArNTEsMTEgQEAgc3RhdGljIGJvb2wgbW91bnRmc19lbnRyeV92aXNp YmxlKHN0cnVjdAogCiAJcmV0dXJuIHZpc2libGU7CiB9CisKIHN0YXRpYyBpbnQgbW91bnRmc19h dHRyX3Nob3coc3RydWN0IHNlcV9maWxlICpzZiwgdm9pZCAqdikKIHsKIAljb25zdCBjaGFyICpu YW1lID0gc2YtPmZpbGUtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lOwotCXN0cnVjdCBtb3Vu dGZzX2VudHJ5ICplbnRyeSA9IHNmLT5wcml2YXRlOworCXN0cnVjdCBtb3VudGZzX2VudHJ5ICpl bnRyeSA9IGZpbGVfaW5vZGUoc2YtPmZpbGUpLT5pX3ByaXZhdGU7CiAJc3RydWN0IG1vdW50ICpt bnQ7CiAJc3RydWN0IHZmc21vdW50ICptOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CkBAIC0x NDAsMTIgKzE0MSw0MCBAQCBzdGF0aWMgaW50IG1vdW50ZnNfYXR0cl9zaG93KHN0cnVjdCBzZXFf CiAJcmV0dXJuIGVycjsKIH0KIAorc3NpemVfdCBtb3VudGZzX2F0dHJfcmVhZGZpbGUoc3RydWN0 IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBz ZXFfZmlsZSBtID0geyAuc2l6ZSA9IFBBR0VfU0laRSwgLmZpbGUgPSBmaWxlIH07CisJc3NpemVf dCByZXQ7CisKK3JldHJ5OgorCW0uYnVmID0ga3ZtYWxsb2MobS5zaXplLCBHRlBfS0VSTkVMKTsK KwlpZiAoIW0uYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IG1vdW50ZnNfYXR0cl9z aG93KCZtLCBOVUxMKTsKKwlpZiAoIXJldCkgeworCQlpZiAobS5jb3VudCA9PSBtLnNpemUpIHsK KwkJCWt2ZnJlZShtLmJ1Zik7CisJCQltLnNpemUgPDw9IDE7CisJCQltLmNvdW50ID0gMDsKKwkJ CWdvdG8gcmV0cnk7CisJCX0KKwkJcmV0ID0gbWluKG0uY291bnQsIHNpemUpOworCQlpZiAoY29w eV90b191c2VyKGJ1ZiwgbS5idWYsIHJldCkpCisJCQlyZXQgPSAtRUZBVUxUOworCX0KKworCWt2 ZnJlZShtLmJ1Zik7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBtb3VudGZzX2F0dHJf b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlyZXR1cm4g c2luZ2xlX29wZW4oZmlsZSwgbW91bnRmc19hdHRyX3Nob3csIGlub2RlLT5pX3ByaXZhdGUpOwor CXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBtb3VudGZzX2F0dHJfc2hvdywgTlVMTCk7CiB9CiAK IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIG1vdW50ZnNfYXR0cl9mb3BzID0g eworCS5yZWFkZmlsZQk9IG1vdW50ZnNfYXR0cl9yZWFkZmlsZSwKIAkub3BlbgkJPSBtb3VudGZz X2F0dHJfb3BlbiwKIAkucmVhZAkJPSBzZXFfcmVhZCwKIAkubGxzZWVrCQk9IHNlcV9sc2VlaywK SW5kZXg6IGxpbnV4L3NhbXBsZXMvdmZzL3Rlc3QtZnNpbmZvLXBlcmYuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBsaW51eC5vcmlnL3NhbXBsZXMvdmZzL3Rlc3QtZnNpbmZvLXBlcmYuYwkyMDIwLTA0LTAxIDE0 OjIxOjI0LjYwOTk1NTA3MiArMDIwMAorKysgbGludXgvc2FtcGxlcy92ZnMvdGVzdC1mc2luZm8t cGVyZi5jCTIwMjAtMDQtMDEgMTQ6MjE6NDIuNDI2MTUxNTQ1ICswMjAwCkBAIC0xNzIsNiArMTcy LDEyIEBAIHN0YXRpYyB2b2lkIGdldF9pZF9ieV9wcm9jKGludCBpeCwgY29uc3QKIAkvL3ByaW50 ZigiWyV1XSAldVxuIiwgaXgsIHgpOwogfQogCitzdGF0aWMgbG9uZyByZWFkZmlsZShpbnQgZGZk LCBjb25zdCBjaGFyICpuYW1lLCBjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLAorCQkgICAgIGlu dCBmbGFncykKK3sKKwlyZXR1cm4gc3lzY2FsbChfX05SX3JlYWRmaWxlLCBkZmQsIG5hbWUsIGJ1 ZmZlciwgc2l6ZSwgZmxhZ3MpOworfQorCiBzdGF0aWMgdm9pZCBnZXRfaWRfYnlfZnNpbmZvXzIo dm9pZCkKIHsKIAlzdHJ1Y3QgZnNpbmZvX21vdW50X3RvcG9sb2d5IHQ7CkBAIC0zMDAsMTEgKzMw Niw4IEBAIHN0YXRpYyB2b2lkIGdldF9pZF9ieV9tb3VudGZzKHZvaWQpCiAJCX0KIAogCQlzcHJp bnRmKHByb2NmaWxlLCAiJXUvcGFyZW50IiwgbW50X2lkKTsKLQkJZmQgPSBvcGVuYXQobW50ZmQs IHByb2NmaWxlLCBPX1JET05MWSk7Ci0JCUVSUihmZCwgcHJvY2ZpbGUpOwotCQlsZW4gPSByZWFk KGZkLCBidWZmZXIsIHNpemVvZihidWZmZXIpIC0gMSk7Ci0JCUVSUihsZW4sICJyZWFkL3BhcmVu dCIpOwotCQljbG9zZShmZCk7CisJCWxlbiA9IHJlYWRmaWxlKG1udGZkLCBwcm9jZmlsZSwgYnVm ZmVyLCBzaXplb2YoYnVmZmVyKSwgMCk7CisJCUVSUihsZW4sICJyZWFkZmlsZS9wYXJlbnQiKTsK IAkJaWYgKGxlbiA+IDAgJiYgYnVmZmVyW2xlbiAtIDFdID09ICdcbicpCiAJCQlsZW4tLTsKIAkJ YnVmZmVyW2xlbl0gPSAwOwpAQCAtMzE5LDExICszMjIsOCBAQCBzdGF0aWMgdm9pZCBnZXRfaWRf YnlfbW91bnRmcyh2b2lkKQogCQlzdW1fY2hlY2sgKz0geDsKIAogCQlzcHJpbnRmKHByb2NmaWxl LCAiJXUvY291bnRlciIsIG1udF9pZCk7Ci0JCWZkID0gb3BlbmF0KG1udGZkLCBwcm9jZmlsZSwg T19SRE9OTFkpOwotCQlFUlIoZmQsIHByb2NmaWxlKTsKLQkJbGVuID0gcmVhZChmZCwgYnVmZmVy LCBzaXplb2YoYnVmZmVyKSAtIDEpOwotCQlFUlIobGVuLCAicmVhZC9jb3VudGVyIik7Ci0JCWNs b3NlKGZkKTsKKwkJbGVuID0gcmVhZGZpbGUobW50ZmQsIHByb2NmaWxlLCBidWZmZXIsIHNpemVv ZihidWZmZXIpIC0gMSwgMCk7CisJCUVSUihsZW4sICJyZWFkZmlsZS9jb3VudGVyIik7CiAJCWlm IChsZW4gPiAwICYmIGJ1ZmZlcltsZW4gLSAxXSA9PSAnXG4nKQogCQkJbGVuLS07CiAJCWJ1ZmZl cltsZW5dID0gMDsKSW5kZXg6IGxpbnV4L2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxf NjQudGJsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4Lm9yaWcvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMv c3lzY2FsbF82NC50YmwJMjAyMC0wNC0wMSAxNDoyMTozNy4yODQwOTQ4NDAgKzAyMDAKKysrIGxp bnV4L2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsCTIwMjAtMDQtMDEgMTQ6 MjE6NDIuNDEyMTUxMzkwICswMjAwCkBAIC0zNjIsNiArMzYyLDcgQEAKIDQzOQljb21tb24Jd2F0 Y2hfbW91bnQJCV9feDY0X3N5c193YXRjaF9tb3VudAogNDQwCWNvbW1vbgl3YXRjaF9zYgkJX194 NjRfc3lzX3dhdGNoX3NiCiA0NDEJY29tbW9uCWZzaW5mbwkJCV9feDY0X3N5c19mc2luZm8KKzQ0 Mgljb21tb24JcmVhZGZpbGUJCV9feDY0X3N5c19yZWFkZmlsZQogCiAjCiAjIHgzMi1zcGVjaWZp YyBzeXN0ZW0gY2FsbCBudW1iZXJzIHN0YXJ0IGF0IDUxMiB0byBhdm9pZCBjYWNoZSBpbXBhY3QK SW5kZXg6IGxpbnV4L2ZzL29wZW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC5vcmlnL2ZzL29wZW4u YwkyMDIwLTA0LTAxIDE0OjIxOjM3LjI4NDA5NDg0MCArMDIwMAorKysgbGludXgvZnMvb3Blbi5j CTIwMjAtMDQtMDEgMTQ6MjE6NDIuNDI0MTUxNTIzICswMjAwCkBAIC0xMzQwLDMgKzEzNDAsMjUg QEAgaW50IHN0cmVhbV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cgogfQogCiBFWFBPUlRf U1lNQk9MKHN0cmVhbV9vcGVuKTsKKworU1lTQ0FMTF9ERUZJTkU1KHJlYWRmaWxlLCBpbnQsIGRm ZCwgY29uc3QgY2hhciBfX3VzZXIgKiwgZmlsZW5hbWUsCisJCWNoYXIgX191c2VyICosIGJ1ZmZl ciwgc2l6ZV90LCBidWZzaXplLCBpbnQsIGZsYWdzKQoreworCXNzaXplX3QgcmV0OworCXN0cnVj dCBmaWxlIGZpbGUgPSB7fTsKKworCWlmIChmbGFncykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwly ZXQgPSB1c2VyX3BhdGhfYXQoZGZkLCBmaWxlbmFtZSwgMCwgJmZpbGUuZl9wYXRoKTsKKwlpZiAo IXJldCkgeworCQlmaWxlLmZfaW5vZGUgPSBmaWxlLmZfcGF0aC5kZW50cnktPmRfaW5vZGU7CisJ CWZpbGUuZl9vcCA9IGZpbGUuZl9pbm9kZS0+aV9mb3A7CisJCXJldCA9IC1FT1BOT1RTVVBQOwor CQlpZiAoZmlsZS5mX29wLT5yZWFkZmlsZSkKKwkJCXJldCA9IGZpbGUuZl9vcC0+cmVhZGZpbGUo JmZpbGUsIGJ1ZmZlciwgYnVmc2l6ZSk7CisJCXBhdGhfcHV0KCZmaWxlLmZfcGF0aCk7CisJfQor CisJcmV0dXJuIHJldDsKK30KSW5kZXg6IGxpbnV4L2luY2x1ZGUvbGludXgvc3lzY2FsbHMuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBsaW51eC5vcmlnL2luY2x1ZGUvbGludXgvc3lzY2FsbHMuaAkyMDIwLTA0 LTAxIDE0OjIxOjM3LjI4NDA5NDg0MCArMDIwMAorKysgbGludXgvaW5jbHVkZS9saW51eC9zeXNj YWxscy5oCTIwMjAtMDQtMDEgMTQ6MjE6NDIuNDEzMTUxNDAxICswMjAwCkBAIC0xMDExLDYgKzEw MTEsOCBAQCBhc21saW5rYWdlIGxvbmcgc3lzX3dhdGNoX3NiKGludCBkZmQsIGNvCiBhc21saW5r YWdlIGxvbmcgc3lzX2ZzaW5mbyhpbnQgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aG5hbWUs CiAJCQkgICBzdHJ1Y3QgZnNpbmZvX3BhcmFtcyBfX3VzZXIgKnBhcmFtcywgc2l6ZV90IHBhcmFt c19zaXplLAogCQkJICAgdm9pZCBfX3VzZXIgKnJlc3VsdF9idWZmZXIsIHNpemVfdCByZXN1bHRf YnVmX3NpemUpOworYXNtbGlua2FnZSBsb25nIHN5c19yZWFkZmlsZShpbnQgZGZkLCBjb25zdCBj aGFyIF9fdXNlciAqZmlsZW5hbWUsCisJCQkgICAgIGNoYXIgX191c2VyICpidWZmZXIsIHNpemVf dCBidWZzaXplLCBpbnQgZmxhZ3MpOwogCiAvKgogICogQXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN5 c3RlbSBjYWxscwpJbmRleDogbGludXgvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5o Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4Lm9yaWcvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0 ZC5oCTIwMjAtMDQtMDEgMTQ6MjE6MzcuMjg0MDk0ODQwICswMjAwCisrKyBsaW51eC9pbmNsdWRl L3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgJMjAyMC0wNC0wMSAxNDoyMTo0Mi40MTMxNTE0MDEg KzAyMDAKQEAgLTg2MSw5ICs4NjEsMTEgQEAgX19TWVNDQUxMKF9fTlJfd2F0Y2hfbW91bnQsIHN5 c193YXRjaF9tbwogX19TWVNDQUxMKF9fTlJfd2F0Y2hfc2IsIHN5c193YXRjaF9zYikKICNkZWZp bmUgX19OUl9mc2luZm8gNDQxCiBfX1NZU0NBTEwoX19OUl9mc2luZm8sIHN5c19mc2luZm8pCisj ZGVmaW5lIF9fTlJfcmVhZGZpbGUgNDQyCitfX1NZU0NBTEwoX19OUl9yZWFkZmlsZSwgc3lzX3Jl YWRmaWxlKQogCiAjdW5kZWYgX19OUl9zeXNjYWxscwotI2RlZmluZSBfX05SX3N5c2NhbGxzIDQ0 MgorI2RlZmluZSBfX05SX3N5c2NhbGxzIDQ0MwogCiAvKgogICogMzIgYml0IHN5c3RlbXMgdHJh ZGl0aW9uYWxseSB1c2VkIGRpZmZlcmVudApJbmRleDogbGludXgvaW5jbHVkZS9saW51eC9mcy5o Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4Lm9yaWcvaW5jbHVkZS9saW51eC9mcy5oCTIwMjAtMDQtMDEg MTQ6MjE6MTkuMTQ0ODk0ODA0ICswMjAwCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgJMjAy MC0wNC0wMSAxNDoyMTo0Mi40MjUxNTE1MzQgKzAyMDAKQEAgLTE4NjgsNiArMTg2OCw3IEBAIHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgewogCQkJCSAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9m Zl90IHBvc19vdXQsCiAJCQkJICAgbG9mZl90IGxlbiwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdz KTsKIAlpbnQgKCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsK Kwlzc2l6ZV90ICgqcmVhZGZpbGUpKHN0cnVjdCBmaWxlICosIGNoYXIgX191c2VyICosIHNpemVf dCk7CiB9IF9fcmFuZG9taXplX2xheW91dDsKIAogc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewo= --00000000000086676005a239ed40--