From patchwork Wed Jan 9 05:31:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Huaisheng Ye X-Patchwork-Id: 10753421 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C40F514E5 for ; Wed, 9 Jan 2019 05:32:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B009A28DCE for ; Wed, 9 Jan 2019 05:32:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A321128DF3; Wed, 9 Jan 2019 05:32:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 555B328DCE for ; Wed, 9 Jan 2019 05:32:30 +0000 (UTC) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 33EAF211B5078; Tue, 8 Jan 2019 21:32:30 -0800 (PST) X-Original-To: linux-nvdimm@lists.01.org Delivered-To: linux-nvdimm@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=135.84.80.237; helo=sender-pp-092.zoho.com; envelope-from=yehs2007@zoho.com; receiver=linux-nvdimm@lists.01.org Received: from sender-pp-092.zoho.com (sender-pp-092.zoho.com [135.84.80.237]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2A42F211B506F for ; Tue, 8 Jan 2019 21:32:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547011914; cv=none; d=zoho.com; s=zohoarc; b=KvXOoTXYyfw46ddGR7sGmAszBd3zNz+y4VRwvDv+kzmsBnQkah6dX/MsVwJUEwEhvL18YY28gVt5nQRXCAjmbGgJLtPmc5GHFIOEolpor4wkXrCY6/tWfzNi8WSSTud9xdBMlA59wmjV7X3r8J2/rQnmHhZ7qblQ3CWoaJ3VL7k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1547011914; h=Cc:Date:From:In-Reply-To:Message-ID:References:Subject:To:ARC-Authentication-Results; bh=dw8ZJTmgcsYczIjoDQEr8j6GGcL35J1OcAqunEg0lrU=; b=dZbpCgY5lfthLyqcJaD4LeyIaWORytR7eW+PfurzN9yRbiw/DthK2oDPeK+vXzp/DcSK4kgEBBKuV7+7ob7UKAWzfR4NiLyt9qugWfbzFU8vCn1GttO18Shg9do324ku4AmevtZDafa9xXASqpc9Hnp5IKJTFR2CQXDpvoIIfwY= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=yehs2007@zoho.com; dmarc=pass header.from= header.from= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=zapps768; d=zoho.com; h=from:to:cc:subject:date:message-id:in-reply-to:references; b=GlVOwrDbvVZaHCGu4pCzKpgZ5rgBwI+63BwbUa5nMjHSqGDedyJ/5OSvHRlpe/b1ukdJQwBVcSd6 keqnu/+NXwwVX5g801DYVYsijtlyK1Z6EGlQ2HwWx2dnh6oySYQE DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1547011914; s=default; d=zoho.com; i=yehs2007@zoho.com; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; l=1798; bh=dw8ZJTmgcsYczIjoDQEr8j6GGcL35J1OcAqunEg0lrU=; b=KkYjXWsGOkw1VS5TkVerYjTXSCsfEWTjhL9ElCg+WYNqJwDoK6CEaXgveHejQnwg vApNHnXTEVH3lvZqbaJzkyL7t6UM730sH+oQHmOKc2mDg91at3Z9q+9uwfTNN7Rl9hv R1FkBvSPJezoSB3ezWMxh10AbQSOnT3dLMpXofus= Received: from YEHS1XR956R00D1.lenovo.com (123.120.89.99 [123.120.89.99]) by mx.zohomail.com with SMTPS id 1547011912293631.2697486393442; Tue, 8 Jan 2019 21:31:52 -0800 (PST) From: Huaisheng Ye To: snitzer@redhat.com, agk@redhat.com Subject: [RFC PATCH v2 3/4] dm-writecache: expand pmem_reinit for struct dm_writecache Date: Wed, 9 Jan 2019 13:31:26 +0800 Message-Id: <20190109053127.8128-4-yehs2007@zoho.com> X-Mailer: git-send-email 2.17.0.windows.1 In-Reply-To: <20190109053127.8128-1-yehs2007@zoho.com> References: <20190109053127.8128-1-yehs2007@zoho.com> X-ZohoMailClient: External X-BeenThere: linux-nvdimm@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Linux-nvdimm developer list." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jack@suse.cz, corbet@lwn.net, chengnt@lenovo.com, linux-nvdimm@lists.01.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, dm-devel@redhat.com, hch@lst.de MIME-Version: 1.0 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" X-Virus-Scanned: ClamAV using ClamSMTP From: Huaisheng Ye When use persistent memory as cache data device, sometimes the super block of pmem has messy data stored in it. That would have risk to lead fn ctr failed to work due to invalid magic or version. Here we expand pmem_reinit to optional parameters in order to solve this issue. When user gets pmem device, which has unrelated data in it, as cache device, he should use paramenter 'reinit' to avoid s.magic and s.version don't equal to NULL or correct MEMORY_SUPERBLOCK_MAGIC/VERSION. Signed-off-by: Huaisheng Ye --- drivers/md/dm-writecache.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/md/dm-writecache.c b/drivers/md/dm-writecache.c index c69317c..2c1e825 100644 --- a/drivers/md/dm-writecache.c +++ b/drivers/md/dm-writecache.c @@ -149,6 +149,7 @@ struct dm_writecache { bool pmem_mode:1; bool writeback_fua:1; + bool pmem_reinit:1; bool overwrote_committed:1; bool memory_vmapped:1; @@ -2026,6 +2027,10 @@ static int writecache_ctr(struct dm_target *ti, unsigned argc, char **argv) wc->writeback_fua = false; wc->writeback_fua_set = true; } else goto invalid_optional; + } else if (!strcasecmp(string, "reinit")) { + if (WC_MODE_PMEM(wc)) + wc->pmem_reinit = true; + else goto invalid_optional; } else { invalid_optional: r = -EINVAL; @@ -2127,7 +2132,7 @@ static int writecache_ctr(struct dm_target *ti, unsigned argc, char **argv) ti->error = "Hardware memory error when reading superblock"; goto bad; } - if (!le32_to_cpu(s.magic) && !le32_to_cpu(s.version)) { + if (wc->pmem_reinit || (!le32_to_cpu(s.magic) && !le32_to_cpu(s.version))) { r = init_memory(wc); if (r) { ti->error = "Unable to initialize device";