Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2375597imm; Sun, 9 Sep 2018 23:25:31 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYHnvQW62nH2gnIWoLTBdgi3K82Oi3hayUXJmE0hmCTEdmERTOcoA7PbO6KnAch/IwO5Cx8 X-Received: by 2002:a63:fa49:: with SMTP id g9-v6mr21151540pgk.18.1536560731362; Sun, 09 Sep 2018 23:25:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536560731; cv=none; d=google.com; s=arc-20160816; b=cwYjXy0Al1aZmyW9texsS2akwleNZV3DvLIWFj1DFtnv4Ltf/4GjJ+jle90ABX1Wob T2A6mR0Wpa/tOfr5Sym4TBcVvHYhVtsAyRpp87Pv8DosYaBXp8BNCgwHesi6lxULPLti lUlcmc9Z9m9IJClCtPUPqqpwI9tblErchUazDuQsVy84K/7s/ZYFXhCgE7mbipcuVQzp RPSmIiPQm2HtHsJvu6gXCB1Nq4x8Ha+7jFYXlHUHPOmoRTPIwbyiWm8CL4tTOfY0zLk+ 11WvqLFAShekyFeDFWNitKqFJFsVstCMXQu6flYqE9g6IhFLLN3sX4wMF3REfdZYb7lN rnsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=wkOrn52A2N0c4FZR5EYFMEE0+LMJfprNaVOHi0yDTSc=; b=gyiyWZgGF6Qia8cbfenx3m/eD4liNwoUJvyuBqNuj8EdzIe/WKPENVGwHyvFkxw1yI 0bCnsUzaXRs4WYNP4qzBRE8sNKAPgDyWP0rPqHf8aBGHFJe0fArkW0rdNXL/iRA185bo LewDJN7AFzP3jiQG4crprzH4mnkQRkW2ALg/b59XFXXC1qABVAX5wJ6GGuai3q+FmF1B FINUjq5GDG8iFNzEOLFTIoLNNXWErN0TJ5OGpW7eb/hWjpJtPep+W+rIzJ0HXAIehhTP lLzLvQonY2FjfVy1sSeI3hIlnU8wBLy/fbi10sDa0D2wlwbqrVzZMAFawc9D3VceLlfy dR1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RYOZL2vh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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. [209.132.180.67]) by mx.google.com with ESMTP id y9-v6si16155495pgi.691.2018.09.09.23.25.15; Sun, 09 Sep 2018 23:25:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=RYOZL2vh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-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 S1727592AbeIJLQ2 (ORCPT + 99 others); Mon, 10 Sep 2018 07:16:28 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:33248 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726405AbeIJLQ2 (ORCPT ); Mon, 10 Sep 2018 07:16:28 -0400 Received: by mail-pg1-f193.google.com with SMTP id s7-v6so9930275pgc.0 for ; Sun, 09 Sep 2018 23:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=wkOrn52A2N0c4FZR5EYFMEE0+LMJfprNaVOHi0yDTSc=; b=RYOZL2vhHSSPw8JHXxpWprBgAScXuT0LthF8wb6GrtE/mMgDbpM6nlO402HAIMm+EY O8BmPxi0KlrHmPp7Dm6KAqMpFzeoVWSog4pvUP7xrjJsUtNPRbFwlquNxIs47TN7oj/k B1ll2i/W/PIhmVCOJ+Q/MYD8iRQoatT+3kCM7wYAqSysoHEhZt2PTqaT7RTnLVcVlY4I 8uFARfEnWiFo5S0x8cnapz1KnjvHS4rFyTjEmzkn/raiIKHNgKrWcZSYscV3iWHqbzch qQOEFrbNEssdb3xaT0dGBPQU5I2ioRRBlV6mn+1+dTQBnsOO4k4C27CSz+qteukKPkr2 wfmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=wkOrn52A2N0c4FZR5EYFMEE0+LMJfprNaVOHi0yDTSc=; b=FAft00+TpWi7q8v1MmsIqeklFEka+O2CQ23kLj6Z7awWZ11oYj+yDbTkvDVhmm5b4M KK6ANZ4RL1u3sArS53YNHnsB6SP7wm0szbfNcxqNk5y86+88Plf/TsZVGLmrI8lYwoxG 5hsUenXrDwpDbyQrYyPfGlqrNoXfZ/ASU9dAZ47aC+pty2RonnsZ/CfzzHB9EQP+7ILT q5xFwd+oFDFRosMLh2heXkoJCjJaoTSOQ6oXKwFNtFhf8CPWxWajJ1aWWS2rsS3bj9tj ux6LlXDQKAojfAfIw7i0ARkNtM6NQ4aq0GsmflcUhkPbMDlBxOnyT7vhugqWqaTMfIV8 sbIA== X-Gm-Message-State: APzg51ADIdYJtXkMGW+sh8DZ7SBRmrqUao3151CQDLsU10HLmsxkleki NxDSM7hW2C/zerZyrTtZd1s= X-Received: by 2002:a63:d518:: with SMTP id c24-v6mr19978252pgg.357.1536560642462; Sun, 09 Sep 2018 23:24:02 -0700 (PDT) Received: from localhost.localdomain ([104.237.86.186]) by smtp.gmail.com with ESMTPSA id e190-v6sm29884955pfc.81.2018.09.09.23.23.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 09 Sep 2018 23:24:02 -0700 (PDT) From: Ocean He To: dan.j.williams@intel.com, zwisler@kernel.org, vishal.l.verma@intel.com, dave.jiang@intel.com Cc: linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org, Ocean He Subject: [PATCH 0/3] libnvdimm: reset seeds for next namespace creation Date: Mon, 10 Sep 2018 02:21:45 -0400 Message-Id: <1536560508-24564-1-git-send-email-oceanhehy@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ocean He When pmem namespaces created are smaller than section size twice, the second creation would fail and meanwhile there is a kernel call trace which comes from commit 15d36fecd0bdc7510b70 ("mm: disallow mappings that conflict for devm_memremap_pages()"). ------------[ cut here ]------------ nd_pmem pfn1.1: Conflicting mapping in same section WARNING: CPU: 84 PID: 51974 at kernel/memremap.c:194 devm_memremap_pages+0x4a0/0x4e0 CPU: 84 PID: 51974 Comm: ndctl Kdump: loaded Tainted: G W E 4.19.0-rc2-23-default+ #27 RIP: 0010:devm_memremap_pages+0x4a0/0x4e0 Call Trace: pmem_attach_disk+0x3ab/0x581 [nd_pmem] nvdimm_bus_probe+0x69/0x150 [libnvdimm] really_probe+0x262/0x3d0 driver_probe_device+0x60/0x120 bind_store+0x102/0x190 kernfs_fop_write+0x105/0x180 __vfs_write+0x36/0x1a0 ? common_file_perm+0x47/0x130 ? security_file_permission+0x2c/0xb0 vfs_write+0xad/0x1a0 ksys_write+0x52/0xc0 do_syscall_64+0x5b/0x180 entry_SYSCALL_64_after_hwframe+0x44/0xa9 Here is an example (section size is 128MB) based on kernel 4.19-rc2. # ndctl create-namespace -r region1 -s 100m -t pmem -m fsdax { "dev":"namespace1.0", "mode":"fsdax", "map":"dev", "size":"96.00 MiB (100.66 MB)", "uuid":"ef9a0556-a610-40b5-8c71-43991765a2cc", "raw_uuid":"177b22e2-b7e8-482f-a063-2b8de876d979", "sector_size":512, "blockdev":"pmem1", "numa_node":1 } # ndctl create-namespace -r region1 -s 100m -t pmem -m fsdax libndctl: ndctl_pfn_enable: pfn1.1: failed to enable Error: namespace1.1: failed to enable failed to create namespace: No such device or address When above second creation failure occurs, the expectation is to destroy namespace1.0 to create a new namespace which size is aligned with section size. However, both namespace seed and pfn seed have been consumed, the new namespace creation still fails. # ndctl destroy-namespace namespace1.0 -f destroyed 1 namespace # ndctl create-namespace -r region1 -s 128m -t pmem -m fsdax failed to create namespace: Device or resource busy To ensure pfn_seed/dax_seed and namespace_seed are always ready for next namespace creation, this patch set enables seed detach and reset. Back to the example, the new namespace creation never fails if this patch set applied. # ndctl destroy-namespace namespace1.0 -f destroyed 1 namespace # ndctl create-namespace -r region1 -s 128m -t pmem -m fsdax { "dev":"namespace1.0", "mode":"fsdax", "map":"dev", "size":"124.00 MiB (130.02 MB)", "uuid":"0d0e7506-d108-4a88-824a-edef26fd0399", "raw_uuid":"efeb9647-12f5-44cd-8a52-2f3a0d14589a", "sector_size":512, "blockdev":"pmem1", "numa_node":1 } # ndctl create-namespace -r region1 -s 128m -t pmem -m fsdax { "dev":"namespace1.1", "mode":"fsdax", "map":"dev", "size":130023424, "uuid":"689828dc-8779-434d-8e93-0406d4e1e536", "raw_uuid":"d86e1025-c224-48b6-b2a7-6ccef152d5fd", "sector_size":512, "blockdev":"pmem1.1", "numa_node":1 } The mode devdax (-m devdax) has the same issue, this patch set could cover it. Ocean He (3): libnvdimm, claim: remove static attribute of nd_detach_and_reset libnvdimm, namespace_devs: add function nd_region_reset_ns_seed for namespace seed reset libnvdimm, region_devs: reset related seeds when fail to create namespace drivers/nvdimm/claim.c | 2 +- drivers/nvdimm/namespace_devs.c | 32 ++++++++++++++++++++++++++++++++ drivers/nvdimm/nd-core.h | 2 ++ drivers/nvdimm/region_devs.c | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) -- 1.8.3.1