Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp387173rwr; Thu, 4 May 2023 04:45:40 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7J1OH6Tf7g/sttMNW5Okl1A9J2djX4IwG/h4fzc2iy8yc506jFI0v0R5gar1QGfpRwHbG8 X-Received: by 2002:a05:6a20:3d87:b0:d6:ba0b:c82c with SMTP id s7-20020a056a203d8700b000d6ba0bc82cmr2380695pzi.38.1683200740399; Thu, 04 May 2023 04:45:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683200740; cv=none; d=google.com; s=arc-20160816; b=NLk9TCkUdlMGInJXEcqg/kDBFDuIwdjs8ZL/7Cjn48s+2ET050XFHm0U8I5uQJiuwK 3bemwxW/V/zUxixKCRS8UG/qtfkhLhtD9wxxa2oZkYHYOD+zoePGeAhneafkBX5p2n9w hHuPCmauwWG/2zOosWStHA2KvgmzlQchdI6/T6bTK7hBGo+R53igtuFSa6OBx6zxRTMw h31owAJ1HrfgocjT2pqTCUVH310xC4vrxB9lUlhNmGK84jsxqRX8TypYg4SbK+6uDBs2 AY25GR0teLLisxLdYLtiDV1KnWz9AuDotnNhZElxMMZmkhRBtnOIGDyYnI/ueSG9yIgl zIzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=IH29xyRtsxcRlvTlvdGwB9orbhIkvuoLiVqE9djHOns=; b=J4hb1G+xtYq5XA6/duVnOyC49blC7Y3qYHtYLS7rEZj3a2Nz3BGLjsTBpAyTYGeeIG 9dcYRz2Lnxumy/uUNFpnl7ZLIjyq19mjIWBk1BZzGma65zR8r2Y4rMJKw7/UONQkBFBP Cp/cNJfrNj2vkXHQ9Vv4SSRz7ZBJbbaUQw2LI00QrQbVI6thJQeiY1TzpzefYNV9Mzzy Rfw1Z1jHbTAWkZ8fmtjAl9CpFjxAdRSfeXb5sgAlHzVBbMAsY0KgluC4F4+a/DjGVP41 uXWxInvsIZyi1DdaFXvXDIxLS33VJUrIcibgJ7XMzuWOLJnmP9XtJuL60M3T/uZncga2 aKPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FoJ4JXob; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k93-20020a17090a3ee600b0024de28ed3eesi3750894pjc.33.2023.05.04.04.45.20; Thu, 04 May 2023 04:45:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FoJ4JXob; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230100AbjEDLml (ORCPT + 99 others); Thu, 4 May 2023 07:42:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229873AbjEDLml (ORCPT ); Thu, 4 May 2023 07:42:41 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DF9D10B for ; Thu, 4 May 2023 04:42:40 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 99AEA63391 for ; Thu, 4 May 2023 11:42:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4F9CC433D2; Thu, 4 May 2023 11:42:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1683200559; bh=8aGNIJKtXpgEBNOhWL4emxcKzvE9oZ03/h2rK0ZJhEY=; h=From:To:Cc:Subject:Date:From; b=FoJ4JXob4AWCspTIELDk/U8XSwpKKvJuEJIJl8hPa96gJruC9W77WnhQ+JkzgdADL n+ox7xJ58TTt97bv65gog4rS0V6WCVxBZpCAlOo58UThrxJWKHBzS15w2Ka9TmwR5u YFkED6eBllBgjAMMmx9led3e0SSLdr2c78CeRUSJGbXfoQmxdVgT5CsSw5X4xFyTHq CJH1mYwRlsMpuL1wNpGvG3b49s3GyGzthDQnbY2pjBL81UqHh6iyFefWOoxB42Tuty RB4rBSQzQ9WJtvjp1mFG8vaTNEPPQZCSdC8PrsAdus+zYKQ9U6Q88e/da/yTXl5Nns GMYKYBfjAXPog== From: Jeff Layton To: Calum Mackay Cc: linux-nfs@vger.kernel.org Subject: [PATCH] WRT18: have it also check the ctime between writes Date: Thu, 4 May 2023 07:42:37 -0400 Message-Id: <20230504114237.31090-1-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On many servers, the ctime doesn't have sufficient granularity to show an apparent change between rapid writes, but some are able to do so. Have the test also check the ctimes here and pass_warn if it doesn't change after every write. Signed-off-by: Jeff Layton --- nfs4.0/servertests/st_write.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) I've been using this some to test the multigrain ctime patches, and I think it'd be a reasonable addition. We could also consider adding a separate test for this. diff --git a/nfs4.0/servertests/st_write.py b/nfs4.0/servertests/st_write.py index db1b1e585fdb..e635717f76c9 100644 --- a/nfs4.0/servertests/st_write.py +++ b/nfs4.0/servertests/st_write.py @@ -497,19 +497,27 @@ def testChangeGranularityWrite(t, env): c = env.c1 c.init_connection() fh, stateid = c.create_confirm(t.word()) - ops = c.use_obj(fh) + [c.getattr([FATTR4_CHANGE])] \ - + [op.write(stateid, 0, UNSTABLE4, _text)] + [c.getattr([FATTR4_CHANGE])] \ - + [op.write(stateid, 10, UNSTABLE4, _text)] + [c.getattr([FATTR4_CHANGE])] \ - + [op.write(stateid, 20, UNSTABLE4, _text)] + [c.getattr([FATTR4_CHANGE])] \ - + [op.write(stateid, 30, UNSTABLE4, _text)] + [c.getattr([FATTR4_CHANGE])] + attrlist = [FATTR4_CHANGE, FATTR4_TIME_METADATA] + ops = c.use_obj(fh) + [c.getattr(attrlist)] \ + + [op.write(stateid, 0, UNSTABLE4, _text)] + [c.getattr(attrlist)] \ + + [op.write(stateid, 10, UNSTABLE4, _text)] + [c.getattr(attrlist)] \ + + [op.write(stateid, 20, UNSTABLE4, _text)] + [c.getattr(attrlist)] \ + + [op.write(stateid, 30, UNSTABLE4, _text)] + [c.getattr(attrlist)] res = c.compound(ops) check(res) - chattr1 = res.resarray[1].obj_attributes - chattr2 = res.resarray[3].obj_attributes - chattr3 = res.resarray[5].obj_attributes - chattr4 = res.resarray[7].obj_attributes + chattr1 = res.resarray[1].obj_attributes[FATTR4_CHANGE] + chattr2 = res.resarray[3].obj_attributes[FATTR4_CHANGE] + chattr3 = res.resarray[5].obj_attributes[FATTR4_CHANGE] + chattr4 = res.resarray[7].obj_attributes[FATTR4_CHANGE] if chattr1 == chattr2 or chattr2 == chattr3 or chattr3 == chattr4: - t.fail("consecutive SETATTR(mode)'s don't all change change attribute") + t.fail("consecutive WRITE's don't change change attribute") + + ctime1 = res.resarray[1].obj_attributes[FATTR4_TIME_METADATA] + ctime2 = res.resarray[3].obj_attributes[FATTR4_TIME_METADATA] + ctime3 = res.resarray[5].obj_attributes[FATTR4_TIME_METADATA] + ctime4 = res.resarray[7].obj_attributes[FATTR4_TIME_METADATA] + if compareTimes(ctime1, ctime2) == 0 or compareTimes(ctime2, ctime3) == 0 or compareTimes(ctime3, ctime4) == 0: + t.pass_warn("consecutive WRITE's don't all change time_metadata") def testStolenStateid(t, env): """WRITE with incorrect permissions and somebody else's stateid -- 2.40.1