libnvdimm: infrastructure for btt devices
NVDIMM namespaces, in addition to accepting "struct bio" based requests, also have the capability to perform byte-aligned accesses. By default only the bio/block interface is used. However, if another driver can make effective use of the byte-aligned capability it can claim namespace interface and use the byte-aligned ->rw_bytes() interface. The BTT driver is the initial first consumer of this mechanism to allow adding atomic sector update semantics to a pmem or blk namespace. This patch is the sysfs infrastructure to allow configuring a BTT instance for a namespace. Enabling that BTT and performing i/o is in a subsequent patch. Cc: Greg KH <gregkh@linuxfoundation.org> Cc: Neil Brown <neilb@suse.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -666,7 +666,7 @@ static int __blk_label_update(struct nd_region *nd_region,
|
||||
|
||||
/* don't allow updates that consume the last label */
|
||||
if (nfree - alloc < 0 || nfree - alloc + victims < 1) {
|
||||
dev_info(&nsblk->dev, "insufficient label space\n");
|
||||
dev_info(&nsblk->common.dev, "insufficient label space\n");
|
||||
kfree(victim_map);
|
||||
return -ENOSPC;
|
||||
}
|
||||
@@ -762,7 +762,8 @@ static int __blk_label_update(struct nd_region *nd_region,
|
||||
continue;
|
||||
res = to_resource(ndd, nd_label);
|
||||
res->flags &= ~DPA_RESOURCE_ADJUSTED;
|
||||
dev_vdbg(&nsblk->dev, "assign label[%d] slot: %d\n", l, slot);
|
||||
dev_vdbg(&nsblk->common.dev, "assign label[%d] slot: %d\n",
|
||||
l, slot);
|
||||
nd_mapping->labels[l++] = nd_label;
|
||||
}
|
||||
nd_mapping->labels[l] = NULL;
|
||||
|
||||
Reference in New Issue
Block a user