xnvme_lba
Header
/**
* SPDX-FileCopyrightText: Samsung Electronics Co., Ltd
*
* SPDX-License-Identifier: BSD-3-Clause
*
* @headerfile libxnvme_lba.h
*/
struct xnvme_lba_range_attr {
bool is_zoned; ///< Whether the range covers a zone [zslba, zslba + cap]
bool is_valid; ///< Whether the range is valid
};
/**
* Representation of a range of logical-block-addresses aka LBAs
*
* @struct xnvme_lba_range
*/
struct xnvme_lba_range {
uint64_t slba; ///< Range start-LBA; begins at and includes this address
uint64_t elba; ///< Range end-LBA; ends at and includes this address
uint32_t naddrs; ///< Number of addresses in range [slba, elba]
uint64_t nbytes; ///< Number of bytes covered by [slba, elba]
struct xnvme_lba_range_attr attr;
};
/**
* Prints the given backend attribute to the given output stream
*
* @param stream output stream used for printing
* @param range Pointer to the ::xnvme_lba_range to print
* @param opts printer options, see ::xnvme_pr
*
* @return On success, the number of characters printed is returned.
*/
int
xnvme_lba_range_fpr(FILE *stream, struct xnvme_lba_range *range, int opts);
/**
* Prints the given backend attribute to stdout
*
* @param range Pointer to the ::xnvme_lba_range to print
* @param opts printer options, see ::xnvme_pr
*
* @return On success, the number of characters printed is returned.
*/
int
xnvme_lba_range_pr(struct xnvme_lba_range *range, int opts);
/**
* Initializes a range starting at the given byte-offset and spanning nbytes
*
* @param dev Device handle obtained with xnvme_dev_open()
* @param offset Offset in bytes satisfying offset < capacity
* @param nbytes Number of bytes, satisfying offset + nbytes < capacity
*
* @return On success, an initialized range is returned by value with attr.is_valid = 1. On error,
* a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
*/
struct xnvme_lba_range
xnvme_lba_range_from_offset_nbytes(struct xnvme_dev *dev, uint64_t offset, uint64_t nbytes);
/**
* Initializes a range starting at the given start-lba (slba) and spanning naddrs
*
* @param dev Device handle obtained with xnvme_dev_open()
* @param slba A valid lba on the given dev
* @param elba A valid lba on the given dev
*
* @return On success, an initialized range is returned by value with attr.is_valid = 1. On error,
* a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
*/
struct xnvme_lba_range
xnvme_lba_range_from_slba_elba(struct xnvme_dev *dev, uint64_t slba, uint64_t elba);
/**
* Initializes a range starting at the given start-lba (slba) and spanning naddrs
*
* @param dev Device handle obtained with xnvme_dev_open()
* @param slba A valid lba on the given dev
* @param naddrs A non-zero number of addresses, satisfying slba + naddrs < device capacity
*
* @return On success, an initialized range is returned by value with attr.is_valid = 1. On error,
* a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
*/
struct xnvme_lba_range
xnvme_lba_range_from_slba_naddrs(struct xnvme_dev *dev, uint64_t slba, uint64_t naddrs);
/**
* Initializes a range starting at the given zone-start-LBA and spanning zone-capacity
*
* @param dev Device handle obtained with xnvme_dev_open()
* @param zdescr Pointer to a zone-descriptor valid on the given dev
*
* @return On success, an initialized range is returned by value with attr.is_valid = 1. On error,
* a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
*/
struct xnvme_lba_range
xnvme_lba_range_from_zdescr(struct xnvme_dev *dev, struct xnvme_spec_znd_descr *zdescr);
Enums
Structs
xnvme_lba_range
-
struct xnvme_lba_range
Representation of a range of logical-block-addresses aka LBAs.
Public Members
-
uint64_t slba
Range start-LBA; begins at and includes this address.
-
uint64_t elba
Range end-LBA; ends at and includes this address.
-
uint32_t naddrs
Number of addresses in range [slba, elba].
-
uint64_t nbytes
Number of bytes covered by [slba, elba].
-
struct xnvme_lba_range_attr attr
-
uint64_t slba
xnvme_lba_range_attr
-
struct xnvme_lba_range_attr
SPDX-FileCopyrightText: Samsung Electronics Co., Ltd.
SPDX-License-Identifier: BSD-3-Clause
Functions
xnvme_lba_fpr
xnvme_lba_fprn
-
int xnvme_lba_fprn(FILE *stream, const uint64_t *lba, uint16_t nlb, enum xnvme_pr opts)
Prints the given list of Logical Block Addresses (LBAs)to the given output stream.
- Parameters:
stream – output stream used for printing
lba – Pointer to an array of LBAs to print
nlb – Number of LBAs to print from the given list
opts – printer options, see xnvme_pr
xnvme_lba_pr
xnvme_lba_prn
-
int xnvme_lba_prn(const uint64_t *lba, uint16_t nlb, enum xnvme_pr opts)
Print a list of Logical Block Addresses (LBAs)
- Parameters:
lba – Pointer to an array of LBAs to print
nlb – Length of the array in items
opts – Printer options
- Returns:
On success, the number of characters printed is returned.
xnvme_lba_range_fpr
-
int xnvme_lba_range_fpr(FILE *stream, struct xnvme_lba_range *range, int opts)
Prints the given backend attribute to the given output stream.
- Parameters:
stream – output stream used for printing
range – Pointer to the xnvme_lba_range to print
opts – printer options, see xnvme_pr
- Returns:
On success, the number of characters printed is returned.
xnvme_lba_range_from_offset_nbytes
-
struct xnvme_lba_range xnvme_lba_range_from_offset_nbytes(struct xnvme_dev *dev, uint64_t offset, uint64_t nbytes)
Initializes a range starting at the given byte-offset and spanning nbytes.
- Parameters:
dev – Device handle obtained with xnvme_dev_open()
offset – Offset in bytes satisfying offset < capacity
nbytes – Number of bytes, satisfying offset + nbytes < capacity
- Returns:
On success, an initialized range is returned by value with attr.is_valid = 1. On error, a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
xnvme_lba_range_from_slba_elba
-
struct xnvme_lba_range xnvme_lba_range_from_slba_elba(struct xnvme_dev *dev, uint64_t slba, uint64_t elba)
Initializes a range starting at the given start-lba (slba) and spanning naddrs.
- Parameters:
dev – Device handle obtained with xnvme_dev_open()
slba – A valid lba on the given dev
elba – A valid lba on the given dev
- Returns:
On success, an initialized range is returned by value with attr.is_valid = 1. On error, a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
xnvme_lba_range_from_slba_naddrs
-
struct xnvme_lba_range xnvme_lba_range_from_slba_naddrs(struct xnvme_dev *dev, uint64_t slba, uint64_t naddrs)
Initializes a range starting at the given start-lba (slba) and spanning naddrs.
- Parameters:
dev – Device handle obtained with xnvme_dev_open()
slba – A valid lba on the given dev
naddrs – A non-zero number of addresses, satisfying slba + naddrs < device capacity
- Returns:
On success, an initialized range is returned by value with attr.is_valid = 1. On error, a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
xnvme_lba_range_from_zdescr
-
struct xnvme_lba_range xnvme_lba_range_from_zdescr(struct xnvme_dev *dev, struct xnvme_spec_znd_descr *zdescr)
Initializes a range starting at the given zone-start-LBA and spanning zone-capacity.
- Parameters:
dev – Device handle obtained with xnvme_dev_open()
zdescr – Pointer to a zone-descriptor valid on the given dev
- Returns:
On success, an initialized range is returned by value with attr.is_valid = 1. On error, a potential non, or partially, initialized struct is returned by value with attr.is_valid = 0.
xnvme_lba_range_pr
-
int xnvme_lba_range_pr(struct xnvme_lba_range *range, int opts)
Prints the given backend attribute to stdout.
- Parameters:
range – Pointer to the xnvme_lba_range to print
opts – printer options, see xnvme_pr
- Returns:
On success, the number of characters printed is returned.