[ndctl PATCH] ndctl: Add reconfigure-namespace command
by Keith Busch
Namespace reconfiguration was the only utility 'verb' in ndctl that
did not have its own command. This patch provides a new command,
"reconfigure-namespace <namespace>".
Suggested-by: Dan Williams <dan.j.williams(a)intel.com>
Signed-off-by: Keith Busch <keith.busch(a)intel.com>
---
Documentation/ndctl/Makefile.am | 1 +
Documentation/ndctl/ndctl-create-namespace.txt | 1 +
.../ndctl/ndctl-reconfigure-namespace.txt | 199 +++++++++++++++++++++
builtin.h | 1 +
ndctl/action.h | 1 +
ndctl/namespace.c | 44 +++++
ndctl/ndctl.c | 1 +
7 files changed, 248 insertions(+)
create mode 100644 Documentation/ndctl/ndctl-reconfigure-namespace.txt
diff --git a/Documentation/ndctl/Makefile.am b/Documentation/ndctl/Makefile.am
index a30b139..d1ec67c 100644
--- a/Documentation/ndctl/Makefile.am
+++ b/Documentation/ndctl/Makefile.am
@@ -41,6 +41,7 @@ man1_MANS = \
ndctl-enable-namespace.1 \
ndctl-disable-namespace.1 \
ndctl-create-namespace.1 \
+ ndctl-reconfigure-namespace.1 \
ndctl-destroy-namespace.1 \
ndctl-check-namespace.1 \
ndctl-inject-error.1 \
diff --git a/Documentation/ndctl/ndctl-create-namespace.txt b/Documentation/ndctl/ndctl-create-namespace.txt
index 343733d..9250a76 100644
--- a/Documentation/ndctl/ndctl-create-namespace.txt
+++ b/Documentation/ndctl/ndctl-create-namespace.txt
@@ -219,5 +219,6 @@ linkndctl:ndctl-zero-labels[1],
linkndctl:ndctl-init-labels[1],
linkndctl:ndctl-disable-namespace[1],
linkndctl:ndctl-enable-namespace[1],
+linkndctl:ndctl-reconfigure-namespace[1],
http://www.uefi.org/sites/default/files/resources/UEFI_Spec_2_7.pdf[UEFI NVDIMM Label Protocol]
https://nvdimm.wiki.kernel.org[Linux Persistent Memory Wiki]
diff --git a/Documentation/ndctl/ndctl-reconfigure-namespace.txt b/Documentation/ndctl/ndctl-reconfigure-namespace.txt
new file mode 100644
index 0000000..dcd9fa8
--- /dev/null
+++ b/Documentation/ndctl/ndctl-reconfigure-namespace.txt
@@ -0,0 +1,199 @@
+// SPDX-License-Identifier: GPL-2.0
+
+ndctl-reconfigure-namespace(1)
+==============================
+
+NAME
+----
+ndctl-reconfigure-namespace - reconfigure a namespace
+
+SYNOPSIS
+--------
+[verse]
+'ndctl reconfigure-namespace' namespace [<options>]
+
+include::namespace-description.txt[]
+
+EXAMPLES
+--------
+
+Convert namespace0.0 to mapping to 'mem'
+[verse]
+ndctl reconfigure-namespace namespace0.0 -f --map=mem
+
+Convert namespace0.0 size to 10G
+[verse]
+ndctl reconfigure-namespace namespace0.0 -f --size=10G
+
+OPTIONS
+-------
+-m::
+--mode=::
+ - "raw": expose the namespace capacity directly with
+ limitations. Neither a raw pmem namepace nor raw blk
+ namespace support sector atomicity by default (see "sector"
+ mode below). A raw pmem namespace may have limited to no dax
+ support depending the kernel. In other words operations like
+ direct-I/O targeting a dax buffer may fail for a pmem
+ namespace in raw mode or indirect through a page-cache buffer.
+ See "fsdax" and "devdax" mode for dax operation.
+
+ - "sector": persistent memory, given that it is byte
+ addressable, does not support sector atomicity. The
+ problematic aspect of sector tearing is that most applications
+ do not know they have a atomic sector update dependency. At
+ least a disk rarely ever tears sectors and if it does it
+ almost certainly returns a checksum error on access.
+ Persistent memory devices will always tear and always
+ silently. Until an application is audited to be robust in the
+ presence of sector-tearing "safe" mode is recommended. This
+ imposes some performance overhead and disables the dax
+ capability. (also known as "safe" or "btt" mode)
+
+ - "fsdax": A pmem namespace in this mode supports dax
+ operation with a block-device based filesystem (in previous
+ ndctl releases this mode was named "memory" mode). This mode
+ comes at the cost of allocating per-page metadata. The
+ capacity can be allocated from "System RAM", or from a
+ reserved portion of "Persistent Memory" (see the --map=
+ option). NOTE: A filesystem that supports DAX is required
+ for dax operation. If the raw block device (/dev/pmemX) is
+ used directly without a filesystem, it will use the page
+ cache. See "devdax" mode for raw device access that supports
+ dax.
+
+ - "devdax": The device-dax character device interface is a
+ statically allocated / raw access analogue of filesystem-dax
+ (in previous ndctl releases this mode was named "dax" mode).
+ It allows memory ranges to be mapped without need of an
+ intervening filesystem. The device-dax is interface strict,
+ precise and predictable. Specifically the interface:
+
+ * Guarantees fault granularity with respect to a given page
+ size (4K, 2M, or 1G on x86) set at configuration time.
+
+ * Enforces deterministic behavior by being strict about what
+ fault scenarios are supported. I.e. if a device is
+ configured with a 2M alignment an attempt to fault a 4K
+ aligned offset will result in SIGBUS.
+
+-s::
+--size=::
+ For NVDIMM devices that support namespace labels, set the
+ namespace size in bytes. Otherwise it defaults to the maximum
+ size specified by platform firmware. This option supports the
+ suffixes "k" or "K" for KiB, "m" or "M" for MiB, "g" or "G" for
+ GiB and "t" or "T" for TiB.
+
+ For pmem namepsaces the size must be a multiple of the
+ interleave-width and the namespace alignment (see
+ below).
+
+-a::
+--align::
+ Applications that want to establish dax memory mappings with
+ page table entries greater than system base page size (4K on
+ x86) need a persistent memory namespace that is sufficiently
+ aligned. For "fsdax" and "devdax" mode this defaults to 2M.
+ Note that "devdax" mode enforces all mappings to be aligned to
+ this value, i.e. it fails unaligned mapping attempts. The
+ "fsdax" alignment setting determines the starting alignment of
+ filesystem extents and may limit the possible granularities,
+ if a large mapping is not possible it will silently fall back
+ to a smaller page size.
+
+-u::
+--uuid=::
+ This option is not recommended as a new uuid should be generated
+ every time a namespace is (re-)created. For recovery scenarios
+ however the uuid may be specified.
+
+-n::
+--name=::
+ For NVDIMM devices that support namespace labels,
+ specify a human friendly name for a namespace. This name is
+ available as a device attribute for use in udev rules.
+
+-l::
+--sector-size::
+ Specify the logical sector size (LBA size) of the
+ Linux block device associated with an namespace.
+
+-M::
+--map=::
+ A pmem namespace in "fsdax" or "devdax" mode requires allocation of
+ per-page metadata. The allocation can be drawn from either:
+ - "mem": typical system memory
+ - "dev": persistent memory reserved from the namespace
+
+ Given relative capacities of "Persistent Memory" to "System
+ RAM" the allocation defaults to reserving space out of the
+ namespace directly ("--map=dev"). The overhead is 64-bytes per
+ 4K (16GB per 1TB) on x86.
+
+-f::
+--force::
+ Unless this option is specified the 'reconfigure namespace'
+ operation will fail if the namespace is presently active.
+ Specifying --force causes the namespace to be disabled before
+ the operation is attempted. However, if the namespace is
+ mounted then the 'disable namespace' and 'reconfigure
+ namespace' operations will be aborted. The namespace must be
+ unmounted before being reconfigured.
+
+-L::
+--autolabel::
+--no-autolabel::
+ Legacy NVDIMM devices do not support namespace labels. In that
+ case the kernel creates region-sized namespaces that can not
+ be deleted. Their mode can be changed, but they can not be
+ resized smaller than their parent region. This is termed a
+ "label-less namespace". In contrast, NVDIMMs and hypervisors
+ that support the ACPI 6.2 label area definition (ACPI 6.2
+ Section 6.5.10 NVDIMM Label Methods) support "labelled
+ namespace" operation.
+
+ - There are two cases where the kernel will default to
+ label-less operation:
+
+ * NVDIMM does not support labels
+
+ * The NVDIMM supports labels, but the Label Index Block (see
+ UEFI 2.7) is not present and there is no capacity aliasing
+ between 'blk' and 'pmem' regions.
+
+ - In the latter case the configuration can be upgraded to
+ labelled operation by writing an index block on all DIMMs in a
+ region and re-enabling that region. The 'autolabel' capability
+ of 'ndctl reconfigure-namespace' tries to do this by
+ default if it can determine that all DIMM capacity is
+ referenced by the namespace being reconfigured. It will
+ otherwise fail to autolabel and remain in label-less mode if
+ it finds a DIMM contributes capacity to more than one region.
+ This check prevents inadvertent data loss of that other region
+ is in active use. The --autolabel option is implied by
+ default, the --no-autolabel option can be used to disable this
+ behavior. When automatic labeling fails and labelled operation
+ is still desired the safety policy can be bypassed by the
+ following commands, note that all data on all regions is
+ forfeited by running these commands:
+
+ ndctl disable-region all
+ ndctl init-labels all
+ ndctl enable-region all
+
+-v::
+--verbose::
+ Emit debug messages for the namespace creation process
+
+include::../copyright.txt[]
+
+SEE ALSO
+--------
+linkndctl:ndctl-zero-labels[1],
+linkndctl:ndctl-init-labels[1],
+linkndctl:ndctl-disable-namespace[1],
+linkndctl:ndctl-enable-namespace[1],
+linkndctl:ndctl-create-namespace[1],
+http://www.uefi.org/sites/default/files/resources/UEFI_Spec_2_7.pdf[UEFI NVDIMM Label Protocol]
+https://nvdimm.wiki.kernel.org[Linux Persistent Memory Wiki]
diff --git a/builtin.h b/builtin.h
index 675a6ce..0cfd96f 100644
--- a/builtin.h
+++ b/builtin.h
@@ -23,6 +23,7 @@ struct cmd_struct {
int cmd_create_nfit(int argc, const char **argv, void *ctx);
int cmd_enable_namespace(int argc, const char **argv, void *ctx);
int cmd_create_namespace(int argc, const char **argv, void *ctx);
+int cmd_reconfigure_namespace(int argc, const char **argv, void *ctx);
int cmd_destroy_namespace(int argc, const char **argv, void *ctx);
int cmd_disable_namespace(int argc, const char **argv, void *ctx);
int cmd_check_namespace(int argc, const char **argv, void *ctx);
diff --git a/ndctl/action.h b/ndctl/action.h
index 1ecad49..44e141e 100644
--- a/ndctl/action.h
+++ b/ndctl/action.h
@@ -9,6 +9,7 @@ enum device_action {
ACTION_ENABLE,
ACTION_DISABLE,
ACTION_CREATE,
+ ACTION_RECONFIGURE,
ACTION_DESTROY,
ACTION_CHECK,
ACTION_WAIT,
diff --git a/ndctl/namespace.c b/ndctl/namespace.c
index 510553c..cd01a1f 100644
--- a/ndctl/namespace.c
+++ b/ndctl/namespace.c
@@ -115,6 +115,23 @@ OPT_STRING('a', "align", ¶m.align, "align", \
OPT_BOOLEAN('f', "force", &force, "reconfigure namespace even if currently active"), \
OPT_BOOLEAN('L', "autolabel", ¶m.autolabel, "automatically initialize labels")
+#define RECONFIGURE_OPTIONS() \
+OPT_STRING('u', "uuid", ¶m.uuid, "uuid", \
+ "specify the uuid for the namespace (default: autogenerate)"), \
+OPT_STRING('n', "name", ¶m.name, "name", \
+ "specify an optional free form name for the namespace"), \
+OPT_STRING('s', "size", ¶m.size, "size", \
+ "specify the namespace size in bytes (default: available capacity)"), \
+OPT_STRING('m', "mode", ¶m.mode, "operation-mode", \
+ "specify a mode for the namespace, 'sector', 'fsdax', 'devdax' or 'raw'"), \
+OPT_STRING('M', "map", ¶m.map, "memmap-location", \
+ "specify 'mem' or 'dev' for the location of the memmap"), \
+OPT_STRING('a', "align", ¶m.align, "align", \
+ "specify the namespace alignment in bytes (default: 2M)"), \
+OPT_BOOLEAN('f', "force", &force, "reconfigure namespace even if currently active"), \
+OPT_BOOLEAN('L', "autolabel", ¶m.autolabel, "automatically initialize labels")
+
+
#define CHECK_OPTIONS() \
OPT_BOOLEAN('R', "repair", &repair, "perform metadata repairs"), \
OPT_BOOLEAN('L', "rewrite-log", &logfix, "regenerate the log"), \
@@ -138,6 +155,12 @@ static const struct option create_options[] = {
OPT_END(),
};
+static const struct option reconfigure_options[] = {
+ BASE_OPTIONS(),
+ RECONFIGURE_OPTIONS(),
+ OPT_END(),
+};
+
static const struct option check_options[] = {
BASE_OPTIONS(),
CHECK_OPTIONS(),
@@ -270,6 +293,9 @@ static const char *parse_namespace_options(int argc, const char **argv,
param.do_scan = argc == 1;
argc = parse_options(argc, argv, options, u, 0);
+ if (mode == ACTION_RECONFIGURE)
+ param.reconfig = argv[0];
+
rc = set_defaults(mode);
if (argc == 0 && mode != ACTION_CREATE) {
@@ -288,6 +314,9 @@ static const char *parse_namespace_options(int argc, const char **argv,
case ACTION_CHECK:
action_string = "check";
break;
+ case ACTION_RECONFIGURE:
+ action_string = "reconfigure";
+ break;
default:
action_string = "<>";
break;
@@ -1053,6 +1082,7 @@ static int do_xaction_namespace(const char *namespace,
return rc;
break;
case ACTION_CREATE:
+ case ACTION_RECONFIGURE:
rc = namespace_reconfig(region, ndns);
if (rc < 0)
return rc;
@@ -1114,6 +1144,20 @@ int cmd_enable_namespace(int argc, const char **argv, void *ctx)
}
}
+int cmd_reconfigure_namespace(int argc, const char **argv, void *ctx)
+{
+ char *xable_usage = "ndctl reconfigure-namespace <namespace> [<options>]";
+ char *namespace = parse_namespace_options(argc, argv,
+ ACTION_RECONFIGURE, reconfigure_options, xable_usage);
+ int reconfigured = do_xaction_namespace(namespace, ACTION_RECONFIGURE,
+ ctx);
+
+ if (reconfigured < 1)
+ fprintf(stderr, "failed to reconfigure namespace:%s %s\n",
+ namespace, strerror(-reconfigured));
+ return reconfigured;
+}
+
int cmd_create_namespace(int argc, const char **argv, void *ctx)
{
char *xable_usage = "ndctl create-namespace [<options>]";
diff --git a/ndctl/ndctl.c b/ndctl/ndctl.c
index 73dabfa..b4d252c 100644
--- a/ndctl/ndctl.c
+++ b/ndctl/ndctl.c
@@ -72,6 +72,7 @@ static struct cmd_struct commands[] = {
{ "enable-namespace", cmd_enable_namespace },
{ "disable-namespace", cmd_disable_namespace },
{ "create-namespace", cmd_create_namespace },
+ { "reconfigure-namespace", cmd_reconfigure_namespace },
{ "destroy-namespace", cmd_destroy_namespace },
{ "check-namespace", cmd_check_namespace },
{ "enable-region", cmd_enable_region },
--
2.14.4
4 years, 1 month
[ndctl PATCH 0/5] ndctl: misc static analysis fixes
by Vishal Verma
Fix up various static analysis reports from recent (and not-so-recent)
patches.
Vishal Verma (5):
ndctl, inject: fix a resource leak in ndctl_namespace_get_clear_unit
ndctl: fix a resource leak in submit_get_firmware_info
libndctl: fix a resource leak in ndctl_dimm_get_{{event_}flags,
health}
ndctl, test: fix a potential null pointer dereference in 'ndctl test'
ndctl, test: fix a resource leak in check_smart_threshold
ndctl/dimm.c | 17 ++++++++++-------
ndctl/lib/inject.c | 12 +++++++-----
ndctl/lib/libndctl.c | 3 +++
ndctl/test.c | 2 ++
test/libndctl.c | 1 +
5 files changed, 23 insertions(+), 12 deletions(-)
--
2.14.4
4 years, 1 month
[ndctl PATCH 0/4] Some fixups and improvements ndctl monitor
by QI Fuli
Fix a couple of issues about log collection, and add [Install] section
to systemd unit file of ndclt-monitor.
Signed-off-by: QI Fuli <qi.fuli(a)jp.fujitsu.com>
---
QI Fuli (4):
ndctl, monitor: fix the lack of detection of invalid path of log file
ndctl, monitor: set default log destination to syslog if "--daemon" is specified
ndctl, monitor: add timestamp and pid to log messages in log_file()
ndctl, monitor: add [Install] Section to systemd unit file of ndctl-monitor
Documentation/ndctl/ndctl-monitor.txt | 16 +++++++++++++++-
ndctl/monitor.c | 27 ++++++++++++++++++++++++---
ndctl/monitor.conf | 2 ++
ndctl/ndctl-monitor.service | 3 +++
4 files changed, 44 insertions(+), 4 deletions(-)
--
2.18.0
4 years, 1 month
[PATCH] libnvdimm: fix ars_status output length calculation
by Vishal Verma
Commit efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status output length handling")
Introduced additional hardening for ambiguity in the ACPI spec for
ars_status output sizing. However, it had a couple of cases mixed up.
Where it should have been checking for (and returning) "out_field[1] -
4" it was using "out_field[1] - 8" and vice versa.
This caused a four byte discrepancy in the buffer size passed on to
the command handler, and in some cases, this caused memory corruption
like:
./daxdev-errors.sh: line 76: 24104 Aborted (core dumped) ./daxdev-errors $busdev $region
malloc(): memory corruption
Program received signal SIGABRT, Aborted.
[...]
#5 0x00007ffff7865a2e in calloc () from /lib64/libc.so.6
#6 0x00007ffff7bc2970 in ndctl_bus_cmd_new_ars_status (ars_cap=ars_cap@entry=0x6153b0) at ars.c:136
#7 0x0000000000401644 in check_ars_status (check=0x7fffffffdeb0, bus=0x604c20) at daxdev-errors.c:144
#8 test_daxdev_clear_error (region_name=<optimized out>, bus_name=<optimized out>)
at daxdev-errors.c:332
Cc: <stable(a)vger.kernel.org>
Cc: Dave Jiang <dave.jiang(a)intel.com>
Cc: Keith Busch <keith.busch(a)intel.com>
Cc: Lukasz Dorau <lukasz.dorau(a)intel.com>
Cc: Dan Williams <dan.j.williams(a)intel.com>
Fixes: efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status output length handling")
Signed-off-by: Vishal Verma <vishal.l.verma(a)intel.com>
---
drivers/nvdimm/bus.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
index 27902a8799b1..8aae6dcc839f 100644
--- a/drivers/nvdimm/bus.c
+++ b/drivers/nvdimm/bus.c
@@ -812,9 +812,9 @@ u32 nd_cmd_out_size(struct nvdimm *nvdimm, int cmd,
* overshoots the remainder by 4 bytes, assume it was
* including 'status'.
*/
- if (out_field[1] - 8 == remainder)
+ if (out_field[1] - 4 == remainder)
return remainder;
- return out_field[1] - 4;
+ return out_field[1] - 8;
} else if (cmd == ND_CMD_CALL) {
struct nd_cmd_pkg *pkg = (struct nd_cmd_pkg *) in_field;
--
2.14.4
4 years, 1 month
[PATCH v2 2/2] [PATCH] xfs: Close race between direct IO and xfs_break_layouts()
by Dave Jiang
This patch is the duplicate of ross's fix for ext4 for xfs.
If the refcount of a page is lowered between the time that it is returned
by dax_busy_page() and when the refcount is again checked in
xfs_break_layouts() => ___wait_var_event(), the waiting function
xfs_wait_dax_page() will never be called. This means that
xfs_break_layouts() will still have 'retry' set to false, so we'll stop
looping and never check the refcount of other pages in this inode.
Instead, always continue looping as long as dax_layout_busy_page() gives us
a page which it found with an elevated refcount.
Signed-off-by: Dave Jiang <dave.jiang(a)intel.com>
Reviewed-by: Jan Kara <jack(a)suse.cz>
---
Sorry resend, forgot to add Jan's reviewed-by.
v2:
- Rename parameter from did_unlock to retry (Jan)
fs/xfs/xfs_file.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index a3e7767a5715..cd6f0d8c4922 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -721,12 +721,10 @@ xfs_file_write_iter(
static void
xfs_wait_dax_page(
- struct inode *inode,
- bool *did_unlock)
+ struct inode *inode)
{
struct xfs_inode *ip = XFS_I(inode);
- *did_unlock = true;
xfs_iunlock(ip, XFS_MMAPLOCK_EXCL);
schedule();
xfs_ilock(ip, XFS_MMAPLOCK_EXCL);
@@ -736,7 +734,7 @@ static int
xfs_break_dax_layouts(
struct inode *inode,
uint iolock,
- bool *did_unlock)
+ bool *retry)
{
struct page *page;
@@ -746,9 +744,10 @@ xfs_break_dax_layouts(
if (!page)
return 0;
+ *retry = true;
return ___wait_var_event(&page->_refcount,
atomic_read(&page->_refcount) == 1, TASK_INTERRUPTIBLE,
- 0, 0, xfs_wait_dax_page(inode, did_unlock));
+ 0, 0, xfs_wait_dax_page(inode));
}
int
4 years, 1 month
Good day!
by alicemsalmeron@trashymail.com
Are you Able, willing and Capable of been a Personal Assistant,
This position is an excellent opportunity for a hard-working individual who is a quick learner
and detail-oriented who is looking to provide top-level support to a busy executive.
Strong organizational skills, written and verbal communication skills, ability to anticipate needs,
work independently and prioritize workload are required.
High level of professionalism and confidentiality is crucial to this role.
The salary range for this role is $3000-$3400 per month and this doesnt disturb your present employment.
Responsibilities of the Personal Assistant:
Coordinate and schedule all appointments.
Review and analyze requests and inquiries and disseminate, as appropriate.
Processing of payments from my clients who owe{certified check mostly due to my company's policy}.
Instruction for disbursement would be sent to you, and you will make reports to me daily through email or text message.
Handle confidential and non-routine information, applying extreme confidentiality and sensitivity in the dissemination of this information.
Requirements of the Personal Assistant:
Proficient in Microsoft Office
Must be 43 years of age or older
Must be eligible to work in the USA
Have consistent access to a smartphone (iPhone 4s/Android 4.0 or newer)
Ability to anticipate future needs and prepare accordingly.
Solid business acumen; experience interpreting and applying compliance and related policies to executive’s personal interests.
Demonstrated initiative and ability to work in a fast paced, changing environment.
High degree of integrity and the ability to recognize the requirements of confidentiality.
Ability to build and maintain outstanding relationships.
Does this sound like something you would be interested in?
If so, reply with your up-to-date Resume by e-mail highlighting your qualifications and your mailing address.
Our contact: resume(a)pplinvoices.info
Thank you!
4 years, 1 month
Machine Learning Software-Users List
by Evelyn Watson
Hi,
Hope you are doing great. I am Evelyn Watson.
I will keep my mail short and to the point. I am writing this mail to you because we can provide you the users list of all Machine Learning Software and Vendors as well as your competitor's users in this field too.
Our data field consists of: Contacts Name, Job Title, Email Address, Phone Number, Fax Number, Company Details and Technology Type.
We have also the users list of below top software in Machine Learning Software:
* scikit-learn
* Pybrain
* BigML
* Floyd Hub
* Microsoft Bing Image Search API and Many More like this across the world as per your need
We are mainly specialized in technology Industry database currently holding 3200+ application users type.
Please do let me know if you are looking for any other Technology/Software/Application users list.
I will be looking forward for your response on this. Thank you.
Regards,
Evelyn Watson| Senior Demand Generation
If you do not wish to receive future emails from us, please reply as 'leave out'
4 years, 1 month
Help trying to use /dev/pmem for dax debugging?
by Theodore Y. Ts'o
In newer kernels, it looks like you can't use /dev/pmem0 for DAX
unless it's marked as being DAX capable. This appears to require
CONFIG_NVDIMM_PFN. But when I tried to build a kernel with that
configured, I get the following BUG:
[ 0.000000] Linux version 4.18.0-rc4-xfstests-00031-g7c2d77aa7d80 (tytso@cwcc) (gcc version 7.3.0 (Debian 7.3.0-27)) #460 SMP Mon Jul 30 19:38:44 EDT 2018
[ 0.000000] Command line: systemd.show_status=auto systemd.log_level=crit root=/dev/vda console=ttyS0,115200 cmd=maint fstesttz=America/New_York fstesttyp=ext4 fstestapi=1.4 memmap=4G!9G memmap=9G!14G
...
[ 16.544707] BUG: unable to handle kernel paging request at ffffed0048000000
[ 16.546132] PGD 6bffe9067 P4D 6bffe9067 PUD 6bfbec067 PMD 0
[ 16.547174] Oops: 0000 [#1] SMP KASAN PTI
[ 16.547923] CPU: 0 PID: 81 Comm: kworker/u8:1 Not tainted 4.18.0-rc4-xfstests-00031-g7c2d77aa7d80 #460
[ 16.549706] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.1-1 04/01/2014
[ 16.551285] Workqueue: events_unbound async_run_entry_fn
[ 16.552309] RIP: 0010:check_memory_region+0xdd/0x190
[ 16.553264] Code: 74 0b 41 80 38 00 74 f0 4d 85 c0 75 56 4c 01 c8 49 89 e8 49 29 c0 4d 8d 48 07 4d 85 c0 4d 0f 49 c8 49 c1 f9 03 45 85 c9 74 5b <48> 83 38 00 75 18 45 8d 41 ff 4e 8d 44 c0 08 48 83 c0 08 49 39 c0
[ 16.556872] RSP: 0000:ffff8806469b6bb8 EFLAGS: 00010202
[ 16.557861] RAX: ffffed0048000000 RBX: ffff880240000fff RCX: ffffffffa8a2f9bc
[ 16.559500] RDX: 0000000000000000 RSI: 0000000000001000 RDI: ffff880240000000
[ 16.561255] RBP: ffffed0048000200 R08: 0000000000000200 R09: 0000000000000040
[ 16.563245] R10: 0000000000000200 R11: ffffed00480001ff R12: ffff880240000000
[ 16.565186] R13: dffffc0000000000 R14: fffffbfff5361562 R15: ffffea0015d34bd8
[ 16.567119] FS: 0000000000000000(0000) GS:ffff88064b600000(0000) knlGS:0000000000000000
[ 16.569331] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 16.570927] CR2: ffffed0048000000 CR3: 0000000212416001 CR4: 0000000000360ef0
[ 16.572839] Call Trace:
[ 16.573493] memcpy+0x1f/0x50
[ 16.574050] pmem_do_bvec+0x1dc/0x670
[ 16.575086] ? pmem_release_pgmap_ops+0x10/0x10
[ 16.576392] ? rcu_read_lock_sched_held+0x110/0x130
[ 16.577785] ? generic_make_request_checks+0xf87/0x1520
[ 16.579310] ? do_read_cache_page+0x219/0x8b0
[ 16.580551] pmem_make_request+0x306/0x9e0
[ 16.581714] generic_make_request+0x565/0xd30
[ 16.582947] ? mempool_alloc+0xf7/0x2d0
[ 16.584032] ? blk_plug_queued_count+0x150/0x150
[ 16.585339] ? sched_clock_cpu+0x18/0x180
[ 16.586473] ? debug_show_all_locks+0x2d0/0x2d0
[ 16.587803] ? submit_bio+0x139/0x3a0
[ 16.588864] submit_bio+0x139/0x3a0
[ 16.589896] ? lock_downgrade+0x5e0/0x5e0
[ 16.591031] ? lock_acquire+0x106/0x3e0
[ 16.592123] ? direct_make_request+0x1e0/0x1e0
[ 16.593428] ? guard_bio_eod+0x19d/0x570
[ 16.594547] submit_bh_wbc.isra.12+0x409/0x5a0
[ 16.595804] block_read_full_page+0x526/0x800
[ 16.597032] ? block_llseek+0xd0/0xd0
[ 16.598072] ? block_page_mkwrite+0x270/0x270
[ 16.599317] ? add_to_page_cache_lru+0x119/0x210
[ 16.600621] ? add_to_page_cache_locked+0x40/0x40
[ 16.601943] ? pagecache_get_page+0x44/0x6b0
[ 16.603153] do_read_cache_page+0x219/0x8b0
[ 16.604338] ? blkdev_writepages+0x10/0x10
[ 16.605500] read_dev_sector+0xbb/0x390
[ 16.606606] read_lba.isra.0+0x2f0/0x5c0
[ 16.607735] ? compare_gpts+0x1500/0x1500
[ 16.608870] ? efi_partition+0x2bc/0x1bb0
[ 16.610021] ? rcu_read_lock_sched_held+0x110/0x130
[ 16.611387] efi_partition+0x2e6/0x1bb0
[ 16.612468] ? __isolate_free_page+0x530/0x530
[ 16.613717] ? rcu_read_lock_sched_held+0x110/0x130
[ 16.615103] ? is_gpt_valid.part.1+0xdc0/0xdc0
[ 16.616396] ? string+0x14c/0x220
[ 16.617344] ? string+0x14c/0x220
[ 16.618285] ? format_decode+0x3be/0x760
[ 16.619409] ? vsnprintf+0x1ff/0x10a0
[ 16.620439] ? num_to_str+0x220/0x220
[ 16.621472] ? snprintf+0x8f/0xc0
[ 16.622411] ? vscnprintf+0x30/0x30
[ 16.623402] ? is_gpt_valid.part.1+0xdc0/0xdc0
[ 16.624650] ? check_partition+0x308/0x660
[ 16.625818] check_partition+0x308/0x660
[ 16.626966] rescan_partitions+0x187/0x8d0
[ 16.628123] ? lock_acquire+0x106/0x3e0
[ 16.629219] ? up_write+0x1d/0x150
[ 16.630185] ? bd_set_size+0x24e/0x2e0
[ 16.631244] __blkdev_get+0x696/0xfd0
[ 16.632276] ? bd_set_size+0x2e0/0x2e0
[ 16.633337] ? kvm_sched_clock_read+0x21/0x30
[ 16.634570] ? sched_clock+0x5/0x10
[ 16.635563] ? sched_clock_cpu+0x18/0x180
[ 16.636706] blkdev_get+0x28f/0x850
[ 16.637714] ? lockdep_rcu_suspicious+0x150/0x150
[ 16.639032] ? __blkdev_get+0xfd0/0xfd0
[ 16.640144] ? refcount_sub_and_test+0xcd/0x160
[ 16.641415] ? refcount_inc+0x30/0x30
[ 16.642453] ? do_raw_spin_unlock+0x144/0x220
[ 16.643680] ? kobject_put+0x50/0x410
[ 16.644711] __device_add_disk+0xbe5/0xe40
[ 16.645916] ? bdget_disk+0x60/0x60
[ 16.646919] ? alloc_dax+0x2b2/0x5b0
[ 16.647939] ? kill_dax+0x140/0x140
[ 16.648928] ? nvdimm_badblocks_populate+0x47/0x360
[ 16.649904] ? __raw_spin_lock_init+0x2d/0x100
[ 16.650720] pmem_attach_disk+0x944/0xf90
[ 16.651477] ? nd_pmem_notify+0x4a0/0x4a0
[ 16.652233] ? kfree+0xd4/0x210
[ 16.652822] ? nd_dax_probe+0x1d0/0x240
[ 16.653526] nvdimm_bus_probe+0xd4/0x370
[ 16.654261] driver_probe_device+0x56d/0xbe0
[ 16.655432] ? __driver_attach+0x2c0/0x2c0
[ 16.656548] bus_for_each_drv+0x10d/0x1a0
[ 16.657414] ? subsys_find_device_by_id+0x2e0/0x2e0
[ 16.658385] __device_attach+0x19c/0x230
[ 16.659225] ? device_bind_driver+0xa0/0xa0
[ 16.660135] ? kobject_uevent_env+0x223/0xfb0
[ 16.661072] bus_probe_device+0x1ad/0x260
[ 16.661852] ? sysfs_create_groups+0x86/0x130
[ 16.662826] device_add+0x9fe/0x1340
[ 16.663814] ? device_private_init+0x180/0x180
[ 16.664786] nd_async_device_register+0xe/0x40
[ 16.665621] async_run_entry_fn+0xc3/0x630
[ 16.666400] process_one_work+0x767/0x1670
[ 16.667221] ? debug_show_all_locks+0x2d0/0x2d0
[ 16.668137] ? pwq_dec_nr_in_flight+0x2c0/0x2c0
[ 16.669011] worker_thread+0x87/0xb90
[ 16.669730] ? __kthread_parkme+0xb6/0x180
[ 16.670515] ? process_one_work+0x1670/0x1670
[ 16.671339] kthread+0x314/0x3d0
[ 16.671963] ? kthread_flush_work_fn+0x10/0x10
[ 16.672810] ret_from_fork+0x3a/0x50
[ 16.673502] CR2: ffffed0048000000
[ 16.674436] ---[ end trace ac6b16a57e0c48ad ]---
Does this ring any bells? Any suggestions about how I get ext4 dax
testing working again? Many thanks!!
(full log and config attached below, compressed for size reasons)
- Ted
4 years, 1 month
Interesting work
by oppnpsoxyy@fmns.com
Are you Able, willing and Capable of been a Personal Assistant,
This position is an excellent opportunity for a hard-working individual who is a quick learner
and detail-oriented who is looking to provide top-level support to a busy executive.
Strong organizational skills, written and verbal communication skills, ability to anticipate needs,
work independently and prioritize workload are required.
High level of professionalism and confidentiality is crucial to this role.
The salary range for this role is $3000-$3400 per month and this doesnt disturb your present employment.
Responsibilities of the Personal Assistant:
Coordinate and schedule all appointments.
Review and analyze requests and inquiries and disseminate, as appropriate.
Processing of payments from my clients who owe{certified check mostly due to my company's policy}.
Instruction for disbursement would be sent to you, and you will make reports to me daily through email or text message.
Handle confidential and non-routine information, applying extreme confidentiality and sensitivity in the dissemination of this information.
Requirements of the Personal Assistant:
Proficient in Microsoft Office
Must be 43 years of age or older
Must be eligible to work in the USA
Have consistent access to a smartphone (iPhone 4s/Android 4.0 or newer)
Ability to anticipate future needs and prepare accordingly.
Solid business acumen; experience interpreting and applying compliance and related policies to executive’s personal interests.
Demonstrated initiative and ability to work in a fast paced, changing environment.
High degree of integrity and the ability to recognize the requirements of confidentiality.
Ability to build and maintain outstanding relationships.
Does this sound like something you would be interested in?
If so, reply with your up-to-date Resume by e-mail highlighting your qualifications and your mailing address.
Our contact: resume(a)pplinvoices.info
Thank you!
4 years, 1 month
Hello!
by linux-nvdimm@lists.01.org
Dear Job Seeker,
Position Name: Project Manager (Supply Chain);
Company: DSC Logistics
Functional area: Logistics Services;
Area of Interest: Logistics Services;
Salary: $98,000/year;
Job Offer Available: 15th August 2018;
Job Type: Permanent Position;
Location: USA/15 States (can be telecommute)
Travel Requirement: All in state
The Position: This position is in the area of Project Management.
You will manage all aspects of production planning and scheduling.
The position requires a manager who can manage projects in
different areas across the business such as procurement and become a liaison between company and our clients.
Experience/Skills Required:
- US citizen only!
- Bachelor Degree
- Highly proficient in MS software
- Ability to multi-task
- Excellent written and verbal skills
- Desired management experience in performance management.
If you are interested in the position, please respond with your CV and resume attached.
Our contact: cv(a)logistictravels.info
Thank you!
4 years, 1 month