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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 07D6DC48BF6 for ; Mon, 26 Feb 2024 22:47:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 55D8A4401CA; Mon, 26 Feb 2024 17:47:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 50D3A44017F; Mon, 26 Feb 2024 17:47:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3AE024401CA; Mon, 26 Feb 2024 17:47:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2476A44017F for ; Mon, 26 Feb 2024 17:47:19 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EADFB1C097D for ; Mon, 26 Feb 2024 22:47:18 +0000 (UTC) X-FDA: 81835442556.26.0CF74F4 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) by imf22.hostedemail.com (Postfix) with ESMTP id D44D3C000A for ; Mon, 26 Feb 2024 22:47:16 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=dCI3WteX; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.41 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708987637; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Mapi+yKgf2BbFbObl206XXPY0pTKrfs2l+OnjEP7vGQ=; b=baWkjiyudmJs/6HA0aCgco5Kop7JGln6cAJTh+Be74r+vc96XwuyucfOHu17mA1Qp72UPh fOnXDRrQUodNo7//dONjdYccQrCK/ublkECXyKx3s7t86skgI1/KhIApSF/xxWwetHVU1w qMybAOHrH1nGlZuL9TltlmhHqlhASg4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708987637; a=rsa-sha256; cv=none; b=2haE0CORGtqgUEnFTMwAhksfmY73pka97+qvv3r3uJd5wZO8qB8IjQxbqFYgkX+LRMcIgr 637f2YwcJ9FeGXD7IxIvewfm8O92+3l2JidsyWUosRsjaa1qWgbx53Yjhdyfxghjdi+IOQ 7wrO4dugjuh/yD1Zqrue7uHUx8emY/4= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=dCI3WteX; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.41 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5645960cd56so4183212a12.1 for ; Mon, 26 Feb 2024 14:47:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1708987635; x=1709592435; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Mapi+yKgf2BbFbObl206XXPY0pTKrfs2l+OnjEP7vGQ=; b=dCI3WteXTNOS6aw7/CC4gZd5SlArNwcu8ZdwcUOp+xtUvhrGOesbFC1YQjBF8p7MJu TWbb8vdxCH7MekJpy6wkVi5cTvwRvG4qVUl+lD03nrQBJqjV8g5h1ewKKQYoG4WJmI4Z LhSQK12OnZxFLc3OhcVywYgh6OK1RVNHEklJc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708987635; x=1709592435; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Mapi+yKgf2BbFbObl206XXPY0pTKrfs2l+OnjEP7vGQ=; b=UMcSf2GQKRy+i8HiQd1utdDWI9dqpTKA17rdhv/houT0nTf+NDBfGvVK1CQjgaSkzQ 9AKTyrw4TpYdnfvqB0IPvwa0W3jaf/R+mTAOFM0Rjqm9whFU3yKJqmvkOi61K0faWQ4h jISaCt004kY2O1tOMQ7rECZGsqtvNOhMdeBAMrsm7PMjEM2ONYLhzh/khgNi6Y5wsFdN WgnV4Q6danywsSiYyMp9cpxD//Q4y4eHfx783/I3wxlm1GSDW0/eslD+ENFIkpQCvZl3 kxTRjx07RlS2KJs0fCWxCylgw2h7Xokrj9AUgif64mQtMMiwymqoFq40VAcLmdSZHstj vMaA== X-Forwarded-Encrypted: i=1; AJvYcCUdshC8ELqaxZaTcJ1soBelW7KpgEYU4ENPdWpz9aZqXjviFUlQX43Hy/tXel7uS2BDh5DzMbxYDtUMDdGY6IGCmao= X-Gm-Message-State: AOJu0YwkU8uX1YSitT8rVvqt9JOSIOIutb0fsQdfDa4xTZS37z5Z5fku f4XA2SD7QkbEnXi0AkEwKcwiLcXg1jEZ/pjuef1lq8Ct8jEPkTXUdhv2llq4/8eiROwmv7eJI2z 007wQxA== X-Google-Smtp-Source: AGHT+IHx8ufYpuuHIANDh6dP0DkuZisabNEzuIj4xj+TKrdCPiobx4n5z6ANOYMqTK30WFn2Z03Xcg== X-Received: by 2002:a05:6402:b12:b0:565:76b6:9206 with SMTP id bm18-20020a0564020b1200b0056576b69206mr5720120edb.10.1708987635041; Mon, 26 Feb 2024 14:47:15 -0800 (PST) Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com. [209.85.218.54]) by smtp.gmail.com with ESMTPSA id j8-20020aa7c408000000b0056200715130sm175621edq.54.2024.02.26.14.47.13 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 Feb 2024 14:47:13 -0800 (PST) Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a2f22bfb4e6so489650366b.0 for ; Mon, 26 Feb 2024 14:47:13 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVzwJmhwA9ICjUWRap/7/WDjAOnDueCjt3G1y4oxM3/xMpk7mclmJsCG75qKVdAIRppqRnjKMmR9eQ1J9lsgImIXGg= X-Received: by 2002:a17:906:2f14:b0:a3f:ac2f:893a with SMTP id v20-20020a1709062f1400b00a3fac2f893amr5153910eji.73.1708987632904; Mon, 26 Feb 2024 14:47:12 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Linus Torvalds Date: Mon, 26 Feb 2024 14:46:56 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [LSF/MM/BPF TOPIC] Measuring limits and enhancing buffered IO To: Al Viro Cc: Kent Overstreet , Matthew Wilcox , Luis Chamberlain , lsf-pc@lists.linux-foundation.org, linux-fsdevel@vger.kernel.org, linux-mm , Daniel Gomez , Pankaj Raghav , Jens Axboe , Dave Chinner , Christoph Hellwig , Chris Mason , Johannes Weiner Content-Type: multipart/mixed; boundary="000000000000c91180061250b052" X-Rspamd-Queue-Id: D44D3C000A X-Rspam-User: X-Stat-Signature: kyftmwoe46s3ttezyxpiisyfsjx4cbqu X-Rspamd-Server: rspam03 X-HE-Tag: 1708987636-94497 X-HE-Meta: U2FsdGVkX19BQjR2g2xO8TjFUHO3I7lH/4LIW8/Is6VcXJw2SC1xDCtqD6xZM0fgM4rpg7tkdm30/mLul9VfW9l1nZIrLd5JjxegFzivnMkWLKb8eAx4d2kBZfcvSOcyqPbU7eA46ADg8xW4VZHth9w9IZbb1AXP2YyQgS+Goxz6LT2X09ACriFFYSCxKpI+IvQiHtflXXjIvB2udH14pZJnoOh+/bJKH1iy88Tq6B68Pc25xKV/snIUhXdWLVqi1AYWJacQuaCvw2pBKdSBBAbu/BnLq9BfhsTV8xdL3/ZutWHk0Oh+vYEd4QQz9aouB2IjJd+lIl/oZH3LgoiC3fpDijjyh78qneaWx/6JOzvuyK1kgVPqRAWCQjt5iATFK5hVzGrsmjf7Cxq0VrOE7SpiU+NIx+QBPcbGAu5xg89dt4IS+gOZsHzKmhE2Cwr7jba4xR96CA3RbuNI0wbelRNMUXTF0edwPXSxwOTiarmxBD/y7ldpEMOl2gqoeaOyNrgU1z3BaRMbb2dQTx2BCKlCRaAFXOiNc3sFOcvhN1qZ6UuWHPMfc7z+EHZBLogRfjQACjXgmLWJJ5onIIYH/UYaCyn9eLjkpTxFbMZ1lFJtIGrw8jbs3C/5Ms5/eD3ftUdc9PUBC2NwfWgjwyAAl45OeNMYXfIvk6+Ur3y8GCR0ISN5mAdTwEqexRFz8jWOuLH8TgRYl6cV9siEhxtWMP07AXw3RPXpL2bDfF9vAc+B6EpyzH0pta9hXjxM/JojFxJWmpIOkwykAQDPGhV6O42sFapsZCf481R+r8eNxaZkAk9eO3ZAPiDRY0bfpFuJwXw84u5QZWyN/KR6MKLaLtYXW39nPz4isDM74g54MnmlXD+8l8qWIr7gx6efH/KfVwkV7tvGrmR6/lQ2nyzvkqr6+JkkAHINyfO21cNN4iU3iRjBMuF816EstZpPPLum3V/Ov8CoivCNh3UOHFx 3t8roUBa wxzsESdbRa/Z/dS7A4AsUhWksy4uoMK6K2MUHIfsN9ce0hhMddL6rnv9Rob53QyTP1GDXNKGjBIzE67Ib23g9m7mogUvC5T/W1kGdlkkSf5vOQjru7vJhkGquhLRKtgXDp0uR+G2emctDJavhG01j0bV/sEhemDeAW0z3EDYMp12Jxf4enlmURB0phFiyLmSYT/XfVdE0lJZXb286+igPliDuskoTft+NuTWJX5IdbBPLdxhISJvUtm0iebdWzRCGwjO+s9ufJW4j92Y7d5wAecMh+8Qbq1O9BmOqCwjHAshdB4e9FccC9eBJR5kWzzmKikavKlZ225Rc4cBqIfXAtxTrHugmWfxjVRfgIez4ymL6CFSzTwNkjf73lrn/ZfG1zDcwlWL/D6uSRAclp2eGvbm9GWjKRlrDO1xrzDkm0FRd0Z51scSDLlfuRAE+kKeGJrWY1FNgO46s4Wd452nDMNepxF7wVNaBa2fkMKe1057Kvxx36FyttQmG1TwX4awHPLHw9pItAwuuvCGNsyclv7RqA7edhXeA2EEJs/Kf6G4uBe2C4quCdko2AjPBuI6anbo7rx2UKbzNem8DEy26WfY6xou5NRRZqjZzheOFsZ56jCL99YW8lDK7fsvaF2HYE+byiECfZM1LoMT+5fTXz19tsHvob2OUXFLSqmdcPkkvwvGTKDYVfH928vDAC9aACJZnq+SPRGN/4y9UPccuWREpF5Ca3lRVXAZgU5PiwNC784IafQljszXT1nbRvwsxm9hLUyYtd7g9NTk39aSRs6bxYId700fHtkbA X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --000000000000c91180061250b052 Content-Type: text/plain; charset="UTF-8" On Mon, 26 Feb 2024 at 09:17, Linus Torvalds wrote: > > Are tiny reads (handwaving: 100 bytes or less) really worth optimizing > for to that degree? So this ended up just bothering me, and dammit, we already *have* that stack buffer, except it's that 'folio batch' buffer. Which is already 128 bytes of stack space (on 64-bit). So, just hypothetically, let's say that *before* we start using that folio batch buffer for folios, we use it as a dummy buffer for small reads. So we'd make that 'fbatch' thing be a union with a temporary byte buffer. That hypothetical patch might look something like this TOTALLY UNTESTED CRAP. Anybody interested in seeing if something like this might actually work? I do want to emphasize the "something like this". This pile of random thoughts ends up compiling for me, and I _tried_ to think of all the cases, but there might be obvious thinkos, and there might be things I just didn't think about at all. I really haven't tested this AT ALL. I'm much too scared. But I don't actually hate how the code looks nearly as much as I *thought* I'd hate it. Linus --000000000000c91180061250b052 Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lt3j26330 IG1tL2ZpbGVtYXAuYyB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCsp LCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFw LmMKaW5kZXggNzUwZTc3OWMyM2RiLi41ZjY2ZmQxYmM4MmQgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVt YXAuYworKysgYi9tbS9maWxlbWFwLmMKQEAgLTI1NDMsNiArMjU0Myw4NSBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgcG9zX3NhbWVfZm9saW8obG9mZl90IHBvczEsIGxvZmZfdCBwb3MyLCBzdHJ1Y3Qg Zm9saW8gKmZvbGlvKQogCXJldHVybiAocG9zMSA+PiBzaGlmdCA9PSBwb3MyID4+IHNoaWZ0KTsK IH0KIAorLyoKKyAqIEkgY2FuJ3QgYmUgYm90aGVyZWQgdG8gY2FyZSBhYm91dCBISUdITUVNIGZv ciB0aGUgZmFzdCByZWFkIGNhc2UKKyAqLworI2lmZGVmIENPTkZJR19ISUdITUVNCisjZGVmaW5l IGZpbGVtYXBfZmFzdF9yZWFkKG1hcHBpbmcsIHBvcywgYnVmZmVyLCBzaXplKSAwCisjZWxzZQor CisvKgorICogQ2FsbGVkIHVuZGVyIFJDVSB3aXRoIHNpemUgbGltaXRlZCB0byB0aGUgZmlsZSBz aXplIGFuZCBvbmUKKyAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcgZmlsZW1hcF9mb2xpb19jb3B5 X3JjdShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHBvcywgY2hhciAqYnVm ZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwlYQV9TVEFURSh4YXMsICZtYXBwaW5nLT5pX3BhZ2VzLCBw b3MgPj4gUEFHRV9TSElGVCk7CisJc3RydWN0IGZvbGlvICpmb2xpbzsKKwlzaXplX3Qgb2Zmc2V0 OworCisJeGFzX3Jlc2V0KCZ4YXMpOworCWZvbGlvID0geGFzX2xvYWQoJnhhcyk7CisJaWYgKHhh c19yZXRyeSgmeGFzLCBmb2xpbykpCisJCXJldHVybiAwOworCisJaWYgKCFmb2xpbyB8fCB4YV9p c192YWx1ZShmb2xpbykpCisJCXJldHVybiAwOworCisJaWYgKCFmb2xpb190ZXN0X3VwdG9kYXRl KGZvbGlvKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBObyBmYXN0LWNhc2UgaWYgd2UgYXJlIHN1cHBv c2VkIHRvIHN0YXJ0IHJlYWRhaGVhZCAqLworCWlmIChmb2xpb190ZXN0X3JlYWRhaGVhZChmb2xp bykpCisJCXJldHVybiAwOworCS8qIC4uIG9yIG1hcmsgaXQgYWNjZXNzZWQgKi8KKwlpZiAoIWZv bGlvX3Rlc3RfcmVmZXJlbmNlZChmb2xpbykpCisJCXJldHVybiAwOworCisJLyogRG8gdGhlIGRh dGEgY29weSAqLworCW9mZnNldCA9IHBvcyAmIChmb2xpb19zaXplKGZvbGlvKSAtIDEpOworCW1l bWNweShidWZmZXIsIGZvbGlvX2FkZHJlc3MoZm9saW8pICsgb2Zmc2V0LCBzaXplKTsKKworCS8q IFdlIHNob3VsZCBwcm9iYWJseSBkbyBzb21lIHNpbGx5IG1lbW9yeSBiYXJyaWVyIGhlcmUgKi8K KwlpZiAodW5saWtlbHkoZm9saW8gIT0geGFzX3JlbG9hZCgmeGFzKSkpCisJCXJldHVybiAwOwor CisJcmV0dXJuIHNpemU7Cit9CisKKy8qCisgKiBJZmYgd2UgY2FuIGNvbXBsZXRlIHRoZSByZWFk IGNvbXBsZXRlbHkgaW4gb25lIGF0b21pYyBnbyB1bmRlciBSQ1UsCisgKiBkbyBzbyBoZXJlLiBP dGhlcndpc2UgcmV0dXJuIDAgKG5vIHBhcnRpYWwgcmVhZHMsIHBsZWFzZSAtIHRoaXMgaXMKKyAq IHB1cmVseSBmb3IgdGhlIHRyaXZpYWwgZmFzdCBjYXNlKS4KKyAqLworc3RhdGljIHVuc2lnbmVk IGxvbmcgZmlsZW1hcF9mYXN0X3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxv ZmZfdCBwb3MsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCit7CisJc3RydWN0IGlub2RlICpp bm9kZTsKKwlsb2ZmX3QgZmlsZV9zaXplOworCXVuc2lnbmVkIGxvbmcgcGdvZmY7CisKKwkvKiBE b24ndCBldmVuIHRyeSBmb3IgcGFnZS1jcm9zc2VycyAqLworCXBnb2ZmID0gcG9zICYgflBBR0Vf TUFTSzsKKwlpZiAocGdvZmYgKyBzaXplID4gUEFHRV9TSVpFKQorCQlyZXR1cm4gMDsKKworCS8q IExpbWl0IGl0IHRvIHRoZSBmaWxlIHNpemUgKi8KKwlpbm9kZSA9IG1hcHBpbmctPmhvc3Q7CisJ ZmlsZV9zaXplID0gaV9zaXplX3JlYWQoaW5vZGUpOworCWlmICh1bmxpa2VseShwb3MgPj0gZmls ZV9zaXplKSkKKwkJcmV0dXJuIDA7CisJZmlsZV9zaXplIC09IHBvczsKKwlpZiAoZmlsZV9zaXpl IDwgc2l6ZSkKKwkJc2l6ZSA9IGZpbGVfc2l6ZTsKKworCS8qIExldCdzIHNlZSBpZiB3ZSBjYW4g anVzdCBkbyB0aGUgcmVhZCB1bmRlciBSQ1UgKi8KKwlyY3VfcmVhZF9sb2NrKCk7CisJc2l6ZSA9 IGZpbGVtYXBfZm9saW9fY29weV9yY3UobWFwcGluZywgcG9zLCBidWZmZXIsIHNpemUpOworCXJj dV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIHNpemU7Cit9CisjZW5kaWYgLyogIUhJR0hNRU0g Ki8KKwogLyoqCiAgKiBmaWxlbWFwX3JlYWQgLSBSZWFkIGRhdGEgZnJvbSB0aGUgcGFnZSBjYWNo ZS4KICAqIEBpb2NiOiBUaGUgaW9jYiB0byByZWFkLgpAQCAtMjU2Myw3ICsyNjQyLDEwIEBAIHNz aXplX3QgZmlsZW1hcF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpp dGVyLAogCXN0cnVjdCBmaWxlX3JhX3N0YXRlICpyYSA9ICZmaWxwLT5mX3JhOwogCXN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZmlscC0+Zl9tYXBwaW5nOwogCXN0cnVjdCBpbm9kZSAq aW5vZGUgPSBtYXBwaW5nLT5ob3N0OwotCXN0cnVjdCBmb2xpb19iYXRjaCBmYmF0Y2g7CisJdW5p b24geworCQlzdHJ1Y3QgZm9saW9fYmF0Y2ggZmJhdGNoOworCQlfX0RFQ0xBUkVfRkxFWF9BUlJB WShjaGFyLCBidWZmZXIpOworCX0gYXJlYTsKIAlpbnQgaSwgZXJyb3IgPSAwOwogCWJvb2wgd3Jp dGFibHlfbWFwcGVkOwogCWxvZmZfdCBpc2l6ZSwgZW5kX29mZnNldDsKQEAgLTI1NzUsNyArMjY1 NywyMiBAQCBzc2l6ZV90IGZpbGVtYXBfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBp b3ZfaXRlciAqaXRlciwKIAkJcmV0dXJuIDA7CiAKIAlpb3ZfaXRlcl90cnVuY2F0ZShpdGVyLCBp bm9kZS0+aV9zYi0+c19tYXhieXRlcyk7Ci0JZm9saW9fYmF0Y2hfaW5pdCgmZmJhdGNoKTsKKwor CWlmIChpb3ZfaXRlcl9jb3VudChpdGVyKSA8IHNpemVvZihhcmVhKSkgeworCQl1bnNpZ25lZCBs b25nIGNvdW50ID0gaW92X2l0ZXJfY291bnQoaXRlcik7CisKKwkJY291bnQgPSBmaWxlbWFwX2Zh c3RfcmVhZChtYXBwaW5nLCBpb2NiLT5raV9wb3MsIGFyZWEuYnVmZmVyLCBjb3VudCk7CisJCWlm IChjb3VudCkgeworCQkJc2l6ZV90IGNvcGllZCA9IGNvcHlfdG9faXRlcihhcmVhLmJ1ZmZlciwg Y291bnQsIGl0ZXIpOworCQkJaWYgKHVubGlrZWx5KCFjb3BpZWQpKQorCQkJCXJldHVybiBhbHJl YWR5X3JlYWQgPyBhbHJlYWR5X3JlYWQgOiAtRUZBVUxUOworCQkJcmEtPnByZXZfcG9zID0gaW9j Yi0+a2lfcG9zICs9IGNvcGllZDsKKwkJCWZpbGVfYWNjZXNzZWQoZmlscCk7CisJCQlyZXR1cm4g Y29waWVkICsgYWxyZWFkeV9yZWFkOworCQl9CisJfQorCisJZm9saW9fYmF0Y2hfaW5pdCgmYXJl YS5mYmF0Y2gpOwogCiAJZG8gewogCQljb25kX3Jlc2NoZWQoKTsKQEAgLTI1OTEsNyArMjY4OCw3 IEBAIHNzaXplX3QgZmlsZW1hcF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9p dGVyICppdGVyLAogCQlpZiAodW5saWtlbHkoaW9jYi0+a2lfcG9zID49IGlfc2l6ZV9yZWFkKGlu b2RlKSkpCiAJCQlicmVhazsKIAotCQllcnJvciA9IGZpbGVtYXBfZ2V0X3BhZ2VzKGlvY2IsIGl0 ZXItPmNvdW50LCAmZmJhdGNoLCBmYWxzZSk7CisJCWVycm9yID0gZmlsZW1hcF9nZXRfcGFnZXMo aW9jYiwgaXRlci0+Y291bnQsICZhcmVhLmZiYXRjaCwgZmFsc2UpOwogCQlpZiAoZXJyb3IgPCAw KQogCQkJYnJlYWs7CiAKQEAgLTI2MjgsMTEgKzI3MjUsMTEgQEAgc3NpemVfdCBmaWxlbWFwX3Jl YWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAJCSAqIG1hcmsg aXQgYXMgYWNjZXNzZWQgdGhlIGZpcnN0IHRpbWUuCiAJCSAqLwogCQlpZiAoIXBvc19zYW1lX2Zv bGlvKGlvY2ItPmtpX3BvcywgbGFzdF9wb3MgLSAxLAotCQkJCSAgICBmYmF0Y2guZm9saW9zWzBd KSkKLQkJCWZvbGlvX21hcmtfYWNjZXNzZWQoZmJhdGNoLmZvbGlvc1swXSk7CisJCQkJICAgIGFy ZWEuZmJhdGNoLmZvbGlvc1swXSkpCisJCQlmb2xpb19tYXJrX2FjY2Vzc2VkKGFyZWEuZmJhdGNo LmZvbGlvc1swXSk7CiAKLQkJZm9yIChpID0gMDsgaSA8IGZvbGlvX2JhdGNoX2NvdW50KCZmYmF0 Y2gpOyBpKyspIHsKLQkJCXN0cnVjdCBmb2xpbyAqZm9saW8gPSBmYmF0Y2guZm9saW9zW2ldOwor CQlmb3IgKGkgPSAwOyBpIDwgZm9saW9fYmF0Y2hfY291bnQoJmFyZWEuZmJhdGNoKTsgaSsrKSB7 CisJCQlzdHJ1Y3QgZm9saW8gKmZvbGlvID0gYXJlYS5mYmF0Y2guZm9saW9zW2ldOwogCQkJc2l6 ZV90IGZzaXplID0gZm9saW9fc2l6ZShmb2xpbyk7CiAJCQlzaXplX3Qgb2Zmc2V0ID0gaW9jYi0+ a2lfcG9zICYgKGZzaXplIC0gMSk7CiAJCQlzaXplX3QgYnl0ZXMgPSBtaW5fdChsb2ZmX3QsIGVu ZF9vZmZzZXQgLSBpb2NiLT5raV9wb3MsCkBAIC0yNjYzLDkgKzI3NjAsOSBAQCBzc2l6ZV90IGZp bGVtYXBfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqaXRlciwKIAkJ CX0KIAkJfQogcHV0X2ZvbGlvczoKLQkJZm9yIChpID0gMDsgaSA8IGZvbGlvX2JhdGNoX2NvdW50 KCZmYmF0Y2gpOyBpKyspCi0JCQlmb2xpb19wdXQoZmJhdGNoLmZvbGlvc1tpXSk7Ci0JCWZvbGlv X2JhdGNoX2luaXQoJmZiYXRjaCk7CisJCWZvciAoaSA9IDA7IGkgPCBmb2xpb19iYXRjaF9jb3Vu dCgmYXJlYS5mYmF0Y2gpOyBpKyspCisJCQlmb2xpb19wdXQoYXJlYS5mYmF0Y2guZm9saW9zW2ld KTsKKwkJZm9saW9fYmF0Y2hfaW5pdCgmYXJlYS5mYmF0Y2gpOwogCX0gd2hpbGUgKGlvdl9pdGVy X2NvdW50KGl0ZXIpICYmIGlvY2ItPmtpX3BvcyA8IGlzaXplICYmICFlcnJvcik7CiAKIAlmaWxl X2FjY2Vzc2VkKGZpbHApOwo= --000000000000c91180061250b052--