mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
libnvdimm: blk labels and namespace instantiation
A blk label set describes a namespace comprised of one or more discontiguous dpa ranges on a single dimm. They may alias with one or more pmem interleave sets that include the given dimm. This is the runtime/volatile configuration infrastructure for sysfs manipulation of 'alt_name', 'uuid', 'size', and 'sector_size'. A later patch will make these settings persistent by writing back the label(s). Unlike pmem namespaces, multiple blk namespaces can be created per region. Once a blk namespace has been created a new seed device (unconfigured child of a parent blk region) is instantiated. As long as a region has 'available_size' != 0 new child namespaces may be created. Cc: Greg KH <gregkh@linuxfoundation.org> Cc: Neil Brown <neilb@suse.de> Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
bf9bccc14c
commit
1b40e09a12
8 changed files with 594 additions and 38 deletions
|
@ -50,6 +50,26 @@ struct nd_namespace_pmem {
|
|||
u8 *uuid;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct nd_namespace_blk - namespace for dimm-bounded persistent memory
|
||||
* @dev: namespace device creation by the nd region driver
|
||||
* @alt_name: namespace name supplied in the dimm label
|
||||
* @uuid: namespace name supplied in the dimm label
|
||||
* @id: ida allocated id
|
||||
* @lbasize: blk namespaces have a native sector size when btt not present
|
||||
* @num_resources: number of dpa extents to claim
|
||||
* @res: discontiguous dpa extents for given dimm
|
||||
*/
|
||||
struct nd_namespace_blk {
|
||||
struct device dev;
|
||||
char *alt_name;
|
||||
u8 *uuid;
|
||||
int id;
|
||||
unsigned long lbasize;
|
||||
int num_resources;
|
||||
struct resource **res;
|
||||
};
|
||||
|
||||
static inline struct nd_namespace_io *to_nd_namespace_io(struct device *dev)
|
||||
{
|
||||
return container_of(dev, struct nd_namespace_io, dev);
|
||||
|
@ -62,6 +82,11 @@ static inline struct nd_namespace_pmem *to_nd_namespace_pmem(struct device *dev)
|
|||
return container_of(nsio, struct nd_namespace_pmem, nsio);
|
||||
}
|
||||
|
||||
static inline struct nd_namespace_blk *to_nd_namespace_blk(struct device *dev)
|
||||
{
|
||||
return container_of(dev, struct nd_namespace_blk, dev);
|
||||
}
|
||||
|
||||
#define MODULE_ALIAS_ND_DEVICE(type) \
|
||||
MODULE_ALIAS("nd:t" __stringify(type) "*")
|
||||
#define ND_DEVICE_MODALIAS_FMT "nd:t%d"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue