Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3482400pxu; Tue, 8 Dec 2020 13:16:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJzYbg67aQs5qGgyNtgPN3sTmB+2WWG5ditq5blo/8bFuGVgjK/uioWSvCgC5+z/jbaCjsNA X-Received: by 2002:a17:906:2612:: with SMTP id h18mr25245260ejc.469.1607462212290; Tue, 08 Dec 2020 13:16:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607462212; cv=none; d=google.com; s=arc-20160816; b=DgrnJmTxvltxhgEOBV8NUUg2Dn2BHbGZ78SdbeQs5ujxa2ani0adZ4BKlUxF+WUtpN s17MgQLPBQEE3+2MosCxf61yGgn8UNO4TvJA9PWxYQ8Uz2baARfgtWl6hKObTdTLChfg 1bzsls9SSo8FI8HTMgLuvfYfSWBtkrMPVqD4VeOKxFrghYF3+U2VMGoA7YB1RzQzDxxP Eg1Q9y8scQKfdamu2XoVdXsNhl6x1KrBahmPUD0t7eYPq5QdN2cWUdsDk5O3Dr8ZfRhc Fv/9VE7614KbhTgacaAVJ74UCatHd3ghdg5Lr8ozLzvJzVc5dJO7qjYHdpRM3ZVcsms7 o+iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=5WJqBMFahvlf5K6VZvTYKcVyBiHvDwWsqDLYTKYhJbw=; b=lLj351z94ogHwtwSCFtOq9y9Giad6Stmc6eIm8EiYcD5xjxnhSysVoLOAcYeS9O9az aXHJ5i7bO7AFkeWdGkhvgglL5Y8J42safXaduoPA4x/UfMYYvKQpeLeZ9Vjx7YbcACqT xnO9ByB5A25l5wGEuEXZJWCdMZPXcYN3pZIflrRwwHpS7cGWecUQHd2tYcIIigkZ7E4T 2AIhnZO6UMXjStvbgxwdANJ6N+y07V/jJmD8gHL1IY1BLfEf+NMYLguJatCfwAiXqDD8 kDatrpQUjT0fgSb4D8V0J9nuDqfPIRs/HNo9BQ3CoVaPZZIofqwcIhDbdRKt13Hj5V0I iNcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RwbbgIDY; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lr5si8951071ejb.59.2020.12.08.13.16.29; Tue, 08 Dec 2020 13:16:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RwbbgIDY; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727844AbgLHVM1 (ORCPT + 99 others); Tue, 8 Dec 2020 16:12:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726222AbgLHVM0 (ORCPT ); Tue, 8 Dec 2020 16:12:26 -0500 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 846B8C0613D6 for ; Tue, 8 Dec 2020 13:11:46 -0800 (PST) Received: by mail-ed1-x541.google.com with SMTP id cw27so19072717edb.5 for ; Tue, 08 Dec 2020 13:11:46 -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; bh=5WJqBMFahvlf5K6VZvTYKcVyBiHvDwWsqDLYTKYhJbw=; b=RwbbgIDYZ8Dyc//xOQLeYUhJKSjrcvg/o5Wd1uj2D3GefxBT+H+gWFoHHhb06pFjzl xQaSFsHzDEnjypQhueHumpfkIZcukNN4N9kWSoUvgjNIgBVd2kn1JfJhtr+vdfXS7CJq 0d/QQ2S6azdBglrORWDkUHJhCrVXHYvqncmVDJEUDeADLU9GnK98mUeFVSPAZPcsdFBf mVYmoEPMlhaLFi1x7M5COQ3sTIHbLsvPOEzuwmqqEqPkXwt/G+fYYKkyTWJock/R+Uss cxgzcEEv1cqUqEIoi+rRbP0oUigCMZ5BmP1ztvhYyohj0PQDPmFgE5me0owy+jXqPm5i k2sA== 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=5WJqBMFahvlf5K6VZvTYKcVyBiHvDwWsqDLYTKYhJbw=; b=sdFb/jZ7ANiqti7ZynayehKc2AiUr+pYn0Le4fNJEb0YbXvCOjKDaQckWEAU3n3ASt n1AvTvIrQcyMvI0gfk3xFlYFXU2RRVyCgrPznpUhdnTcTf9XQxBDE4n7paaxy4RE98v4 f3JYzoyv4gaHRqEI3RXPBJ+MKny5IZIURHJZnJ8cfH1NHGRhyRYexqyD3JfUPFo4v9Qf VvrhuDpE0j2j3mYFHU2NDqPgzMMOkxxxtUXIW69e5mLH7FwPvtzcgYYbjEPWYvPhWZ9g dCmDyWLt9kLs8fVCBB/6ogsGndnJe//R0ryYxZG9930EQGITNYshEK6aseok0s+FRbe9 Wndg== X-Gm-Message-State: AOAM532pWJ4rIIw0qH8i4wmJLuBEkdMSblHfOEhObsTV23Rn4xBIBSYo m3m/RjyeQjf7/yJn+WhTOY/V4VxzZM18GxoQ4tQ= X-Received: by 2002:a50:fe87:: with SMTP id d7mr19204838edt.381.1607461905162; Tue, 08 Dec 2020 13:11:45 -0800 (PST) MIME-Version: 1.0 References: <20201208202925.597663-1-Anna.Schumaker@Netapp.com> <20201208202925.597663-2-Anna.Schumaker@Netapp.com> <2A6797DD-246D-4994-B38C-57AA0196D061@oracle.com> In-Reply-To: <2A6797DD-246D-4994-B38C-57AA0196D061@oracle.com> From: Anna Schumaker Date: Tue, 8 Dec 2020 16:11:28 -0500 Message-ID: Subject: Re: [PATCH v2 1/2] SUNRPC: Keep buf->len in sync with xdr->nwords when expanding holes To: Chuck Lever Cc: Linux NFS Mailing List Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Tue, Dec 8, 2020 at 3:56 PM Chuck Lever wrote: > > > > > On Dec 8, 2020, at 3:29 PM, schumaker.anna@gmail.com wrote: > > > > From: Anna Schumaker > > > > Otherwise we could end up placing data a few bytes off from where we > > actually want to put it. > > > > Fixes: 84ce182ab85b "SUNRPC: Add the ability to expand holes in data pages" > > Signed-off-by: Anna Schumaker > > --- > > net/sunrpc/xdr.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c > > index 71e03b930b70..5b848fe65c81 100644 > > --- a/net/sunrpc/xdr.c > > +++ b/net/sunrpc/xdr.c > > @@ -1314,6 +1314,7 @@ uint64_t xdr_expand_hole(struct xdr_stream *xdr, uint64_t offset, uint64_t lengt > > unsigned int res = _shift_data_right_tail(buf, from + bytes - shift, shift); > > truncated = shift - res; > > xdr->nwords -= XDR_QUADLEN(truncated); > > + buf->len -= 4 * XDR_QUADLEN(truncated); > > If I understand what you're doing here correctly, the usual idiom > is "XDR_QUADLEN(truncated) << 2" . Oh, that works too. I'll adjust the patch. Thanks for letting me know! Anna > > > > bytes -= shift; > > } > > > > @@ -1325,7 +1326,7 @@ uint64_t xdr_expand_hole(struct xdr_stream *xdr, uint64_t offset, uint64_t lengt > > bytes); > > _zero_pages(buf->pages, buf->page_base + offset, length); > > > > - buf->len += length - (from - offset) - truncated; > > + buf->len += length - (from - offset); > > xdr_set_page(xdr, offset + length, PAGE_SIZE); > > return length; > > } > > -- > > 2.29.2 > > > > -- > Chuck Lever > > >