Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2583506pxb; Mon, 19 Apr 2021 08:56:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxqy1Mrdrw156hsbYY4oURkJGXT2HAeLGAU0jM4GUoLd2QyTHdHm0yr8FZT5YWGbr+Nv8I/ X-Received: by 2002:a62:3201:0:b029:211:3dcc:c9ca with SMTP id y1-20020a6232010000b02902113dccc9camr20398374pfy.46.1618847817657; Mon, 19 Apr 2021 08:56:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618847817; cv=none; d=google.com; s=arc-20160816; b=RYbLCoxsaQ99z+caun89ZNnEvBdKZL5vsFOWXPBpbhkjLa8LhaFvbjfVWZ6NIFHzao IirP6KPrnPRhNxyAEgHh9zE9Hnyb3dKVb2mYLjskRdsYz47eEDKTIHJ6hQrTeQMTowZZ BN51uy0rMFPCsffRdBWFr5eq6mjXWBEyOVV4BtVivPB2WGqzc/jF+8YIPAUhnQPlZODd 34LSX9+wf1U909nC87kA3VF0bwujb92CQmgchnguD6n4JEVYElt7JGgyTciE2Vd8aUI5 coDwfBC8BWv/wHks4vnPAz5bgIi6BFhEw1lxqhd9mMnf/5/98FmcFPm69ffpCR/kMDKT /00A== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=0sllbVkQ/2Pmr/QKPlQH5ExG0xZMgmrFPRuer+I+aOg=; b=sIbOsPjj+8sCoKqBUO9LRDYWZLPEoWaWkpqm/qylL+4pX28sCw6RRg3ZlN9J72ad40 3O6WmjGlJIii8iYWBmY+i27WnjmVUucFM+LD+WFpFMW+foRDJJecJG7drvfw4tZPZvRA hTNUJvM4QOeW+emNeW5RAeI1/9PDhYyZcxH/ji40KsS/4rK/4Yctnth9RbcBempI1JqG JdW8SQTYCT5yVzfV4g9lFoZG3Mpsxm7JrcR4p6/zH1tMaKksXUDIryyBk/OXA2GqIDzn Oe0mYIdUKvhMlVwYf5e4rfkjysrU0FShUI57wfQazKsq0b3Ejxk8z15I1gFu22xpDdVV H9yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wkteUbvh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m17si16958982pgu.584.2021.04.19.08.56.45; Mon, 19 Apr 2021 08:56:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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=@linuxfoundation.org header.s=korg header.b=wkteUbvh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241986AbhDSNhf (ORCPT + 99 others); Mon, 19 Apr 2021 09:37:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:34784 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242044AbhDSNZO (ORCPT ); Mon, 19 Apr 2021 09:25:14 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7A0B361364; Mon, 19 Apr 2021 13:20:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618838414; bh=Dqr8qBb5+sr/tldpJnb+xVy5ohbFOkLWBCRdPRfP/0M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wkteUbvhvzDH2TylHb/D2j+m6MVNHPBjTN6BbTn+qRnW6E9zRL1oWYTBj6hRrkF0v mG95dIrknJWDE4/s066O6QTmi2l2UjoYAzEk71d6mVyZs+qHTNiDbOJY0dgLFo7gQW NS95I4QKA1u8tYD/r4QsXhbcoXHFiRKYvdp51xeY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Shivaprasad G Bhat , Vaibhav Jain , Dan Williams Subject: [PATCH 5.4 51/73] libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC Date: Mon, 19 Apr 2021 15:06:42 +0200 Message-Id: <20210419130525.476233542@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210419130523.802169214@linuxfoundation.org> References: <20210419130523.802169214@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vaibhav Jain commit a2948b17f6b936fc52f86c0f92c46d2f91928b79 upstream. In case a platform doesn't provide explicit flush-hints but provides an explicit flush callback via ND_REGION_ASYNC region flag, then nvdimm_has_flush() still returns '0' indicating that writes do not require flushing. This happens on PPC64 with patch at [1] applied, where 'deep_flush' of a region was denied even though an explicit flush function was provided. Fix this by adding a condition to nvdimm_has_flush() to test for the ND_REGION_ASYNC flag on the region and see if a 'region->flush' callback is assigned. Link: http://lore.kernel.org/r/161703936121.36.7260632399582101498.stgit@e1fbed493c87 [1] Fixes: c5d4355d10d4 ("libnvdimm: nd_region flush callback support") Reported-by: Shivaprasad G Bhat Signed-off-by: Vaibhav Jain Link: https://lore.kernel.org/r/20210402092555.208590-1-vaibhav@linux.ibm.com Signed-off-by: Dan Williams Signed-off-by: Greg Kroah-Hartman --- drivers/nvdimm/region_devs.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/drivers/nvdimm/region_devs.c +++ b/drivers/nvdimm/region_devs.c @@ -1142,6 +1142,11 @@ int nvdimm_has_flush(struct nd_region *n || !IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API)) return -ENXIO; + /* Test if an explicit flush function is defined */ + if (test_bit(ND_REGION_ASYNC, &nd_region->flags) && nd_region->flush) + return 1; + + /* Test if any flush hints for the region are available */ for (i = 0; i < nd_region->ndr_mappings; i++) { struct nd_mapping *nd_mapping = &nd_region->mapping[i]; struct nvdimm *nvdimm = nd_mapping->nvdimm; @@ -1152,8 +1157,8 @@ int nvdimm_has_flush(struct nd_region *n } /* - * The platform defines dimm devices without hints, assume - * platform persistence mechanism like ADR + * The platform defines dimm devices without hints nor explicit flush, + * assume platform persistence mechanism like ADR */ return 0; }