From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0293F156C69 for ; Fri, 23 Aug 2024 15:17:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724426258; cv=none; b=a2eWJrBZt+B3b2OVHjCWU4brogMeCY2v2XvQY7y5inR8m9VmHuiW9fedGZo3gszAhMFwqBo/L7LklEyQOyU003cOrY/lJDtzA8diw+JP1LZjQO3GnO+V64c0dzHQEUWePneajx+Zt4PJ4LK6+dHqMulZbrrqREfK3oEX5x7v5pU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724426258; c=relaxed/simple; bh=OptJ1J+KR2HYYVOtbLzzZA4wctiDRVhPU8Wec3HgHPw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=jiHfoxmRubSRrgE3MvT/8nQFGcvHSCkY+dRHb1OJ2J9E0wpWfyzcpYAwBbdmSfT0OzRrHV9S9J+6XLgXx/qXHB5W8j6VBBhtptZUZRnccM/LaILliWkswcpeEvF5N1UuH5uE8eIZ23Xwa3S1oTJdl9A1TBdzKJAlTtt6N3Qc61E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=toxicpanda.com; spf=none smtp.mailfrom=toxicpanda.com; dkim=pass (2048-bit key) header.d=toxicpanda-com.20230601.gappssmtp.com header.i=@toxicpanda-com.20230601.gappssmtp.com header.b=Pbyo4rcA; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=toxicpanda.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=toxicpanda.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=toxicpanda-com.20230601.gappssmtp.com header.i=@toxicpanda-com.20230601.gappssmtp.com header.b="Pbyo4rcA" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-7094641d4e6so1081230a34.3 for ; Fri, 23 Aug 2024 08:17:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toxicpanda-com.20230601.gappssmtp.com; s=20230601; t=1724426256; x=1725031056; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=Pbyo4rcAMhFhjg09pqeZZ9SYgPjsxTpNzsVSiuCzKlpPsxqMcvMZqrPvsHCVi9g5Ff 5o3Rgr1MOwVP0s0BX9cgC7WS0i1YjgnKs9LnczqAd8XzaVy1ybn+9cCJH3gAoxFD9zXI 8HbV3am7pApn9lpdoyALYgL2eWjgZfGlem9/JNzOhGiBa6D+JyCjPqONw5V7Y+V3Fx7k op8VKt3i6FlPUbvm5Qqkz8L2jE/NalkudH8oDEDbgwW5/OKmvbm65xASpcdpOIadIWNY Te+7/Mfesz/hVWaNPtFkXPYlb6pz9fAkdJEpmXNkwmoU4Txxgo7C2JRQ7m/E1lZD4SLP a5Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724426256; x=1725031056; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=tISE3E7YqHoaGeaRhRL5Rk0r34FDLfDle2T9NlcE81DoAcGPR63QhcoSwCyHOCioBo 4Sb+oZy4jh87ZPIn0uDA8jAIQpxunNqpYFiCcKEpVeCSWJ8CPCqo1iV3MYXfnPEORycc 0nTrtmp9CY/fZdUPsQa/LbZXeFF2WT2bQlXW+ZvJGqhkaj2nrpzJYBdabKUwvHhEvxRm m8bGhKioY/hxa0gPwF6nt287ld+unV5MyDXGUFGjFTDgCRahMUCcFvRmf/fLYyrpFOnI kuFL2ieEsNKM7kaenc880TaqNJVcjSt0fHn5AeQA3nRFcdgdj4oP5WQD1pTREXHR3Evn ck4A== X-Forwarded-Encrypted: i=1; AJvYcCXCrcGcyxDGoLxXwWMRUH9sOWqwzUQrdRmyAdmE/jqWw/hG15QjGIboR/5Ff4aUGEp29T4w8S6AujFYjg==@vger.kernel.org X-Gm-Message-State: AOJu0YxxqMsZ1mkEluWGnJY70qm2kXzwcgyDfwUquGGQyAD4qgpRN4lZ 90prIeDp3tfOFNAkHjnFXgUcVlzPo5FkjL6BPQAkA2+72HhP1130EaohT6OlsKU= X-Google-Smtp-Source: AGHT+IG8Fm82VABdYczpwnZazgSBY53cfYwx8usVNQ4UDHH85sJ8NsypfnBCHAXtWEf+TlIObLxeJw== X-Received: by 2002:a05:6830:6183:b0:709:61c1:374c with SMTP id 46e09a7af769-70e0eb88668mr3202201a34.20.1724426256087; Fri, 23 Aug 2024 08:17:36 -0700 (PDT) Received: from localhost (syn-076-182-020-124.res.spectrum.com. [76.182.20.124]) by smtp.gmail.com with ESMTPSA id 00721157ae682-6c39b1f114dsm5740597b3.74.2024.08.23.08.17.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2024 08:17:35 -0700 (PDT) Date: Fri, 23 Aug 2024 11:17:34 -0400 From: Josef Bacik To: Matthew Wilcox Cc: Qu Wenruo , Li Zetao , clm@fb.com, dsterba@suse.com, terrelln@fb.com, linux-btrfs@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Subject: Re: [PATCH 02/14] btrfs: convert get_next_extent_buffer() to take a folio Message-ID: <20240823151734.GB2234629@perftesting> References: <20240822013714.3278193-1-lizetao1@huawei.com> <20240822013714.3278193-3-lizetao1@huawei.com> <0f643b0f-f1c2-48b7-99d5-809b8b7f0aac@gmx.com> Precedence: bulk X-Mailing-List: linux-btrfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Thu, Aug 22, 2024 at 01:07:52PM +0100, Matthew Wilcox wrote: > On Thu, Aug 22, 2024 at 08:28:09PM +0930, Qu Wenruo wrote: > > 在 2024/8/22 12:35, Matthew Wilcox 写道: > > > > - while (cur < page_start + PAGE_SIZE) { > > > > + while (cur < folio_start + PAGE_SIZE) { > > > > > > Presumably we want to support large folios in btrfs at some point? > > > > Yes, and we're already working towards that direction. > > > > > I certainly want to remove CONFIG_READ_ONLY_THP_FOR_FS soon and that'll > > > be a bit of a regression for btrfs if it doesn't have large folio > > > support. So shouldn't we also s/PAGE_SIZE/folio_size(folio)/ ? > > > > AFAIK we're only going to support larger folios to support larger than > > PAGE_SIZE sector size so far. > > Why do you not want the performance gains from using larger folios? > > > So every folio is still in a fixed size (sector size, >= PAGE_SIZE). > > > > Not familiar with transparent huge page, I thought transparent huge page > > is transparent to fs. > > > > Or do we need some special handling? > > My uneducated guess is, we will get a larger folio passed to readpage > > call back directly? > > Why do you choose to remain uneducated? It's not like I've been keeping > all of this to myself for the past five years. I've given dozens of > presentations on it, including plenary sessions at LSFMM. As a filesystem > developer, you must want to not know about it at this point. > Or, a more charitable read, is that this particular developer has never been to LSFMMBPF/Plumbers/anywhere you've given a talk. This stuff is complicated, I don't even know what's going on half the time, much less a developer who exclusively works on btrfs internals. There's a lot of things to know in this space, we can't all know what's going on in every corner. As for the topic at hand, I'm moving us in the direction of an iomap conversion so we can have the large folio support, regardless of the underlying sectorsize/metadata block size. Unfortunately there's a lot of fundamental changes that need to be made to facilitate that, and those are going to take some time to test and validate to make sure we didn't break anything. In the meantime we're going to be in this weird limbo states while I tackle the individual problem areas. My priorities are split between getting this to work and fuse improvements to eventually no longer need to have file systems in the kernel to avoid all this in general, so it's going to be spurty, but I hope to have this work done by the next LSFMMBPF. Thanks, Josef 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 03A90C52D7C for ; Fri, 23 Aug 2024 18:11:27 +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 1shYkv-0007h2-9q; Fri, 23 Aug 2024 18:11:26 +0000 Received: from [172.30.29.66] (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 1shYkt-0007gv-Fu for linux-f2fs-devel@lists.sourceforge.net; Fri, 23 Aug 2024 18:11:24 +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=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=A7A/W74P1WDDIbjJNTSVF/legm ki+SyLspOzRx/9V66MRlSptXmZuTj3zQ6ZF2rnjVdJf8WLrLmmO2ibMVl0SfvczEP1qjRsPo3EWPN d0ucEI+al42XVfnOL4BceNlja8REWjCQeV0WRk0D1ooNmmX1Flly3IugrBkPDoJGTNAM=; 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=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=PGTO4atzVuVKZK7mPVjS1kf7qz cqRLxCXICD+CrvUXiIGx82bseZUzdnC5j64wz/p6Hu4R88+p3EupZLD8ISkh4CXa+yT778h63Vc59 V3uAwzNXAlYJRocmNED2xauqUT/c7kU//aeHzgRPhvsupLi1M9fxCtvAGFKBGl41a+34=; Received: from mail-il1-f169.google.com ([209.85.166.169]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1shYkt-0006TT-5U for linux-f2fs-devel@lists.sourceforge.net; Fri, 23 Aug 2024 18:11:24 +0000 Received: by mail-il1-f169.google.com with SMTP id e9e14a558f8ab-39b0826298cso7859145ab.2 for ; Fri, 23 Aug 2024 11:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toxicpanda-com.20230601.gappssmtp.com; s=20230601; t=1724436677; x=1725041477; darn=lists.sourceforge.net; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=uRAPAwIk/PwhLkyurO8Bl3oJjH3ayDlcNfT56DAbRweo0RAcZCRxvoxv12qhS/Se9v 0Saoabteq6Kkna/AdfL8Cd2/ThZiOeXMEsI0S3L5Ro+WGk+70l+/SQPLCVtxk0CfeR1f Ab6VvRKiL30bSRKinFJ4C6ofJMxpIlrcWHiSdApIi3FnkXne+0ETRAq4ozV9kzJh/LG8 R2PMdvrgMdhZWY96kx/Mqflqa7w3F7WAD1wtxAug2OpTDKPi0aCfdxqRANU5rlIEmBdu cEpAARCtb7tg8aDLCQIl8mRrYAgHpTNGlZntTiVBlyQlN7pk8SVRFAjc+Twp/QkS2BTe wo2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724436677; x=1725041477; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PavImyZBpQ0ihxMWSk5vea6sJaOx+LLDGLk4+jUyTQM=; b=WrsCcWXvcFu8gUjrqSML3n4iMCa5w1VSEleaZjyPY0kqWuF9dbroLxii2s3AegxSDb EsUhzKdckxaZu7Wpphyk5pNRnTF/SZ3g970pNRwew3hPlxWba//GSDOrcDiq8XEkbKdX eJUw1389rZg9pChUnrI5dVMi56gSyR+6VIzBLmpfwOQxGgahOr3Z0KaPh446vDxoh04x KKf95uROUUOzh/4CQtoAepCRMMueQ/BIm2u2CMhI0PJmV+7lxppXgK2eO3rH/+kCaVfX QdrpFllBXuoOcAxMaXz3RphhWo5yvoNTECwVVBvExS/We+eDByGttpr3mnzZm0UFuLT/ 9ryQ== X-Forwarded-Encrypted: i=1; AJvYcCVGq0a9VuZ6yQ6HdaHZR/oUPwwQLE23Xz1/qEzGAZWRaymUnPUVTax90UdHwjt0ZGAC59Nt5lalEqa3qqbgUWRh@lists.sourceforge.net X-Gm-Message-State: AOJu0Yy8Vk/6euYtFUD0vaNsm2QTCvEOKNz4F+BV1DiwtMNZ8nQ9qgLl TZ/05vFsMYo2MiXOw17dqsPIJaaIIifQIm/JBzCg9iCVtd45otnGsqnjXX4BMrF0FOrar6o7mRY Y X-Google-Smtp-Source: AGHT+IG8Fm82VABdYczpwnZazgSBY53cfYwx8usVNQ4UDHH85sJ8NsypfnBCHAXtWEf+TlIObLxeJw== X-Received: by 2002:a05:6830:6183:b0:709:61c1:374c with SMTP id 46e09a7af769-70e0eb88668mr3202201a34.20.1724426256087; Fri, 23 Aug 2024 08:17:36 -0700 (PDT) Received: from localhost (syn-076-182-020-124.res.spectrum.com. [76.182.20.124]) by smtp.gmail.com with ESMTPSA id 00721157ae682-6c39b1f114dsm5740597b3.74.2024.08.23.08.17.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2024 08:17:35 -0700 (PDT) Date: Fri, 23 Aug 2024 11:17:34 -0400 From: Josef Bacik To: Matthew Wilcox Message-ID: <20240823151734.GB2234629@perftesting> References: <20240822013714.3278193-1-lizetao1@huawei.com> <20240822013714.3278193-3-lizetao1@huawei.com> <0f643b0f-f1c2-48b7-99d5-809b8b7f0aac@gmx.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Headers-End: 1shYkt-0006TT-5U Subject: Re: [f2fs-dev] [PATCH 02/14] btrfs: convert get_next_extent_buffer() to take a folio 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: Qu Wenruo , linux-f2fs-devel@lists.sourceforge.net, clm@fb.com, terrelln@fb.com, dsterba@suse.com, linux-btrfs@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net T24gVGh1LCBBdWcgMjIsIDIwMjQgYXQgMDE6MDc6NTJQTSArMDEwMCwgTWF0dGhldyBXaWxjb3gg d3JvdGU6Cj4gT24gVGh1LCBBdWcgMjIsIDIwMjQgYXQgMDg6Mjg6MDlQTSArMDkzMCwgUXUgV2Vu cnVvIHdyb3RlOgo+ID4g5ZyoIDIwMjQvOC8yMiAxMjozNSwgTWF0dGhldyBXaWxjb3gg5YaZ6YGT Ogo+ID4gPiA+IC0Jd2hpbGUgKGN1ciA8IHBhZ2Vfc3RhcnQgKyBQQUdFX1NJWkUpIHsKPiA+ID4g PiArCXdoaWxlIChjdXIgPCBmb2xpb19zdGFydCArIFBBR0VfU0laRSkgewo+ID4gPiAKPiA+ID4g UHJlc3VtYWJseSB3ZSB3YW50IHRvIHN1cHBvcnQgbGFyZ2UgZm9saW9zIGluIGJ0cmZzIGF0IHNv bWUgcG9pbnQ/Cj4gPiAKPiA+IFllcywgYW5kIHdlJ3JlIGFscmVhZHkgd29ya2luZyB0b3dhcmRz IHRoYXQgZGlyZWN0aW9uLgo+ID4gCj4gPiA+IEkgY2VydGFpbmx5IHdhbnQgdG8gcmVtb3ZlIENP TkZJR19SRUFEX09OTFlfVEhQX0ZPUl9GUyBzb29uIGFuZCB0aGF0J2xsCj4gPiA+IGJlIGEgYml0 IG9mIGEgcmVncmVzc2lvbiBmb3IgYnRyZnMgaWYgaXQgZG9lc24ndCBoYXZlIGxhcmdlIGZvbGlv Cj4gPiA+IHN1cHBvcnQuICBTbyBzaG91bGRuJ3Qgd2UgYWxzbyBzL1BBR0VfU0laRS9mb2xpb19z aXplKGZvbGlvKS8gPwo+ID4gCj4gPiBBRkFJSyB3ZSdyZSBvbmx5IGdvaW5nIHRvIHN1cHBvcnQg bGFyZ2VyIGZvbGlvcyB0byBzdXBwb3J0IGxhcmdlciB0aGFuCj4gPiBQQUdFX1NJWkUgc2VjdG9y IHNpemUgc28gZmFyLgo+IAo+IFdoeSBkbyB5b3Ugbm90IHdhbnQgdGhlIHBlcmZvcm1hbmNlIGdh aW5zIGZyb20gdXNpbmcgbGFyZ2VyIGZvbGlvcz8KPiAKPiA+IFNvIGV2ZXJ5IGZvbGlvIGlzIHN0 aWxsIGluIGEgZml4ZWQgc2l6ZSAoc2VjdG9yIHNpemUsID49IFBBR0VfU0laRSkuCj4gPiAKPiA+ IE5vdCBmYW1pbGlhciB3aXRoIHRyYW5zcGFyZW50IGh1Z2UgcGFnZSwgSSB0aG91Z2h0IHRyYW5z cGFyZW50IGh1Z2UgcGFnZQo+ID4gaXMgdHJhbnNwYXJlbnQgdG8gZnMuCj4gPiAKPiA+IE9yIGRv IHdlIG5lZWQgc29tZSBzcGVjaWFsIGhhbmRsaW5nPwo+ID4gTXkgdW5lZHVjYXRlZCBndWVzcyBp cywgd2Ugd2lsbCBnZXQgYSBsYXJnZXIgZm9saW8gcGFzc2VkIHRvIHJlYWRwYWdlCj4gPiBjYWxs IGJhY2sgZGlyZWN0bHk/Cj4gCj4gV2h5IGRvIHlvdSBjaG9vc2UgdG8gcmVtYWluIHVuZWR1Y2F0 ZWQ/ICBJdCdzIG5vdCBsaWtlIEkndmUgYmVlbiBrZWVwaW5nCj4gYWxsIG9mIHRoaXMgdG8gbXlz ZWxmIGZvciB0aGUgcGFzdCBmaXZlIHllYXJzLiAgSSd2ZSBnaXZlbiBkb3plbnMgb2YKPiBwcmVz ZW50YXRpb25zIG9uIGl0LCBpbmNsdWRpbmcgcGxlbmFyeSBzZXNzaW9ucyBhdCBMU0ZNTS4gIEFz IGEgZmlsZXN5c3RlbQo+IGRldmVsb3BlciwgeW91IG11c3Qgd2FudCB0byBub3Qga25vdyBhYm91 dCBpdCBhdCB0aGlzIHBvaW50Lgo+IAoKT3IsIGEgbW9yZSBjaGFyaXRhYmxlIHJlYWQsIGlzIHRo YXQgdGhpcyBwYXJ0aWN1bGFyIGRldmVsb3BlciBoYXMgbmV2ZXIgYmVlbiB0bwpMU0ZNTUJQRi9Q bHVtYmVycy9hbnl3aGVyZSB5b3UndmUgZ2l2ZW4gYSB0YWxrLgoKVGhpcyBzdHVmZiBpcyBjb21w bGljYXRlZCwgSSBkb24ndCBldmVuIGtub3cgd2hhdCdzIGdvaW5nIG9uIGhhbGYgdGhlIHRpbWUs IG11Y2gKbGVzcyBhIGRldmVsb3BlciB3aG8gZXhjbHVzaXZlbHkgd29ya3Mgb24gYnRyZnMgaW50 ZXJuYWxzLgoKVGhlcmUncyBhIGxvdCBvZiB0aGluZ3MgdG8ga25vdyBpbiB0aGlzIHNwYWNlLCB3 ZSBjYW4ndCBhbGwga25vdyB3aGF0J3MgZ29pbmcgb24KaW4gZXZlcnkgY29ybmVyLgoKQXMgZm9y IHRoZSB0b3BpYyBhdCBoYW5kLCBJJ20gbW92aW5nIHVzIGluIHRoZSBkaXJlY3Rpb24gb2YgYW4g aW9tYXAgY29udmVyc2lvbgpzbyB3ZSBjYW4gaGF2ZSB0aGUgbGFyZ2UgZm9saW8gc3VwcG9ydCwg cmVnYXJkbGVzcyBvZiB0aGUgdW5kZXJseWluZwpzZWN0b3JzaXplL21ldGFkYXRhIGJsb2NrIHNp emUuICBVbmZvcnR1bmF0ZWx5IHRoZXJlJ3MgYSBsb3Qgb2YgZnVuZGFtZW50YWwKY2hhbmdlcyB0 aGF0IG5lZWQgdG8gYmUgbWFkZSB0byBmYWNpbGl0YXRlIHRoYXQsIGFuZCB0aG9zZSBhcmUgZ29p bmcgdG8gdGFrZQpzb21lIHRpbWUgdG8gdGVzdCBhbmQgdmFsaWRhdGUgdG8gbWFrZSBzdXJlIHdl IGRpZG4ndCBicmVhayBhbnl0aGluZy4gIEluIHRoZQptZWFudGltZSB3ZSdyZSBnb2luZyB0byBi ZSBpbiB0aGlzIHdlaXJkIGxpbWJvIHN0YXRlcyB3aGlsZSBJIHRhY2tsZSB0aGUKaW5kaXZpZHVh bCBwcm9ibGVtIGFyZWFzLgoKTXkgcHJpb3JpdGllcyBhcmUgc3BsaXQgYmV0d2VlbiBnZXR0aW5n IHRoaXMgdG8gd29yayBhbmQgZnVzZSBpbXByb3ZlbWVudHMgdG8KZXZlbnR1YWxseSBubyBsb25n ZXIgbmVlZCB0byBoYXZlIGZpbGUgc3lzdGVtcyBpbiB0aGUga2VybmVsIHRvIGF2b2lkIGFsbCB0 aGlzCmluIGdlbmVyYWwsIHNvIGl0J3MgZ29pbmcgdG8gYmUgc3B1cnR5LCBidXQgSSBob3BlIHRv IGhhdmUgdGhpcyB3b3JrIGRvbmUgYnkgdGhlCm5leHQgTFNGTU1CUEYuICBUaGFua3MsCgpKb3Nl ZgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9y Z2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4 LWYyZnMtZGV2ZWwK