Skip to main content
Version: 1.10

API Management Commands

SEFLibraryInit​

struct SEFStatus SEFLibraryInit(void)

Initializes the SEF Library, enumerates the SEF Units present, and returns the number of units found. Every successful call to SEFLibraryInit() must be balanced with a call to SEFLibraryCleanup().

See Also: struct SEFStatus, SEFLibraryCleanup()

Return value of SEFLibraryInit​

TypeDescription
struct SEFStatusStatus and info summarizing result. The 'info' member contains number of units.

SEFGetHandle​

SEFHandle SEFGetHandle(int index)

Returns a handle to the SEF device at the specified index (zero based)

Parameters of SEFGetHandle​

TypeNameDirectionDescription
intindexInIndex of the SEF Unit

Return value of SEFGetHandle​

TypeDescription
SEFHandleHandle to the SEF Unit

SEFLibraryCleanup​

struct SEFStatus SEFLibraryCleanup(void)

Performs cleanup of the SEF Library and releases resources.

See Also: struct SEFStatus, SEFLibraryInit()

Return value of SEFLibraryCleanup​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetInformation​

const struct SEFInfo* SEFGetInformation(SEFHandle sefHandle)

Gets device information. Returns ADU size(s), number of channels, number of dies, and other associated information.

See Also: struct SEFStatus

Parameters of SEFGetInformation​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit

Return value of SEFGetInformation​

TypeDescription
const struct SEFInfo *Status and info summarizing result.

SEFListVirtualDevices​

struct SEFStatus SEFListVirtualDevices(SEFHandle sefHandle, struct SEFVirtualDeviceList *list, int bufferSize)

Returns a list of the defined Virtual Devices.

See Also: struct SEFStatus

Parameters of SEFListVirtualDevices​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFVirtualDeviceList *listOutBuffer for storing list of Virtual Devices
intbufferSizeInBuffer size

Return value of SEFListVirtualDevices​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFListQoSDomains​

struct SEFStatus SEFListQoSDomains(SEFHandle sefHandle, struct SEFQoSDomainList *list, int bufferSize)

Returns a list of the defined QoS Domains.

See Also: struct SEFStatus

Parameters of SEFListQoSDomains​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainList *listOutBuffer for storing list of QoS Domains
intbufferSizeInBuffer size

Return value of SEFListQoSDomains​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCreateVirtualDevice​

struct SEFStatus SEFCreateVirtualDevice(SEFHandle sefHandle, struct SEFVirtualDeviceID virtualDeviceID, struct SEFDieMap dieMap, enum SEFDefectManagementMethod defectStrategy, uint8_t numFMQueues, const struct SEFWeights weights[])

Creates a Virtual Device and allocates physical resources.

See Also: struct SEFStatus, SEFGetInformation()

Parameters of SEFCreateVirtualDevice​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFVirtualDeviceIDvirtualDeviceIDInVirtual Device ID
struct SEFDieMapdieMapInDies requested for virtual device
enum SEFDefectManagementMethoddefectStrategyInDefect management strategy for the Virtual Device
uint8_tnumFMQueuesInNumber of Flash Media Queues per die in the Virtual Device
const struct SEFWeights[]weightsInWeight values for each Flash Media Queue

Return value of SEFCreateVirtualDevice​

TypeDescription
struct SEFStatusStatus and info summarizing result. Returns 0 on success and negative value on error.

SEFGetVirtualDeviceInformation​

struct SEFStatus SEFGetVirtualDeviceInformation(SEFHandle sefHandle, struct SEFVirtualDeviceID virtualDeviceID, struct SEFVirtualDeviceInfo *info, int bufferSize)

Returns Virtual Device information.

See Also: struct SEFStatus

Parameters of SEFGetVirtualDeviceInformation​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFVirtualDeviceIDvirtualDeviceIDInVirtual Device ID
struct SEFVirtualDeviceInfo *infoOutBuffer for storing VD information
intbufferSizeInBuffer size

Return value of SEFGetVirtualDeviceInformation​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCreateQoSDomain​

struct SEFStatus SEFCreateQoSDomain(SEFVDHandle vdHandle, struct SEFQoSDomainID QoSDomainID, uint64_t flashCapacity, uint64_t flashQuota, uint32_t ADUsize, enum SEFAPIIdentifier api, enum SEFErrorRecoveryMode recovery, int encryption, uint16_t numRootPointers, uint16_t numPlacementIDs, struct SEFFMQAssignments FMQDefaults)

Attempts to create a QoS Domain in the specified Virtual Device. Returns an error when the target virtual device doesn’t have enough flash memory space. When the flashQuota is less than the flashCapacity, it will be set to the flashCapacity.

See Also: SEFGetInformation()

Parameters of SEFCreateQoSDomain​

TypeNameDirectionDescription
SEFVDHandlevdHandleInHandle to the Virtual Device
struct SEFQoSDomainIDQoSDomainIDInQoS Domain ID. Unique across all QoS Domains
uint64_tflashCapacityInNumber of required/reserved ADUs
uint64_tflashQuotaInNumber of ADUs that can be allocated
uint32_tADUsizeInSize of ADU in this QoS domain in bytes. Must be one of the values in ADUSize[] in SEFInfo returned by SEFGetInformation(). SEF Unit should support 4kiB.
enum SEFAPIIdentifierapiInSpecifies the API Identifier for this QoS domain
enum SEFErrorRecoveryModerecoveryInSpecifies the recovery mode for this QoS domain
intencryptionIn0 for disabled, non-zero for enabled
uint16_tnumRootPointersInSpecifies the number of root pointers corresponding to this QoS domain
uint16_tnumPlacementIDsInThe maximum number of Placement IDs that can be placed on the QoS domain. (The number of Placement IDs would affect memory usage)
struct SEFFMQAssignmentsFMQDefaultsInThe default die FMQ assignments for I/O commands

Return value of SEFCreateQoSDomain​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFSetQoSDomainCapacity​

struct SEFStatus SEFSetQoSDomainCapacity(SEFQoSHandle qosHandle, uint64_t flashCapacity, uint64_t flashQutoa) 

Resets the capacity of a QoS Domain. Sets a new capacity and quota for the QoS domain. When the flashQuota is less than the flashCapacity, it is set to the flashCapacity. Returns an error when the total capacity of assigned super blocks exceeds the new capacity.

Parameters of SEFSetQoSDomainCapacity​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
uint64_tflashCapacityInNumber of required/reserved ADUs
uint64_tflashQutoaInNumber of ADUs that can be allocated

Return value of SEFSetQoSDomainCapacity​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFSetRootPointer​

struct SEFStatus SEFSetRootPointer(SEFQoSHandle qosHandle, int index, struct SEFFlashAddress value)

Sets the physical address of the QoSDomain root ADU pointer. A root pointer may be set to any value. Root pointer values are read back using SEFGetQoSDomainInformation(). When a root pointer is set to a flash address that is valid for the QoS domain it's stored in, the ADU it points to can be read by SEFReadWithPhysicalAddress1() using a flash address of just the root pointer index as the ADU.

See Also: struct SEFStatus, SEFReadWithPhysicalAddress1()

Parameters of SEFSetRootPointer​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
intindexInThe index of the root pointer
struct SEFFlashAddressvalueInValue of the pointer

Return value of SEFSetRootPointer​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFSetReadDeadline​

struct SEFStatus SEFSetReadDeadline(SEFQoSHandle qosHandle, enum SEFDeadlineType deadline) 

Sets target QoS Domain's read deadline policy.

See Also: struct SEFStatus, struct SEFVirtualDeviceInfo

Parameters of SEFSetReadDeadline​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
enum SEFDeadlineTypedeadlineInDeadline type for this QoS domain

Return value of SEFSetReadDeadline​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetQoSDomainInformation​

struct SEFStatus SEFGetQoSDomainInformation(SEFHandle sefHandle, struct SEFQoSDomainID QoSDomainID, struct SEFQoSDomainInfo *info, int bufferSize)

Returns QoS Domain information, including the list of super blocks assigned to the QoS Domain.

See Also: struct SEFStatus

Parameters of SEFGetQoSDomainInformation​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainIDQoSDomainIDInQoS Domain ID
struct SEFQoSDomainInfo *infoOutBuffer for storing QoS Domain information
intbufferSizeInBuffer size

Return value of SEFGetQoSDomainInformation​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetReuseList​

struct SEFStatus SEFGetReuseList(SEFQoSHandle qosHandle, struct SEFWearInfo *info, int bufferSize)

Returns list of SuperBlocks to process for wear-leveling. Used in support of the implementation of a host-specified wear leveling policy. SEF has a built in wear-leveling mechanism.

See Also: struct SEFStatus

Parameters of SEFGetReuseList​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFWearInfo *infoOutBuffer for storing information of blocks to process
intbufferSizeInBuffer size

Return value of SEFGetReuseList​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetRefreshList​

struct SEFStatus SEFGetRefreshList(SEFQoSHandle qosHandle, struct SEFRefreshInfo *info, int bufferSize) 

Returns a list of blocks that have encountered ECC errors. These blocks subsequently need to be re-written, or else data loss may occur. This call should be part of a periodic background check to guard against data loss.

See Also: struct SEFStatus

Parameters of SEFGetRefreshList​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFRefreshInfo *infoOutBuffer for storing information of blocks to process
intbufferSizeInBuffer size

Return value of SEFGetRefreshList​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetCheckList​

struct SEFStatus SEFGetCheckList(SEFQoSHandle qosHandle, struct SEFCheckInfo *info, int bufferSize) 

Returns a list of blocks that have encountered conditions that need to be checked. In the event that this command indicates that blocks need to be checked, a subsequent patrol command (SEFCheckPage) should be issued in response. Detailed error statistics will be returned as part of the patrol, and appropriate corrective actions can be based on the returned information.

See Also: struct SEFStatus, SEFCheckPage()

Parameters of SEFGetCheckList​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFCheckInfo *infoOutBuffer for storing information of blocks to process
intbufferSizeInBuffer size

Return value of SEFGetCheckList​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetUserAddressList​

struct SEFStatus SEFGetUserAddressList(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress, struct SEFUserAddressRecord *list, int bufferSize)

Returns the user address list in terms of its underlying superblocks. Used as part of an FTL reconstruction activity. This can happen in the event of, for example, ungraceful shutdown. This mechanism can also be used to build custom diagnostic tools. This command is not needed during normal operation.

See Also: struct SEFStatus

Parameters of SEFGetUserAddressList​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFFlashAddressflashAddressInPhysical address of the superblock
struct SEFUserAddressRecord *listOutBuffer for storing list of user addresses
intbufferSizeInBuffer size

Return value of SEFGetUserAddressList​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFGetSuperBlockInfo​

struct SEFStatus SEFGetSuperBlockInfo(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress, struct SEFSuperBlockRecord *info)

Returns information corresponding to the superblock.

See Also: struct SEFStatus

Parameters of SEFGetSuperBlockInfo​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFFlashAddressflashAddressInPhysical address of the superblock
struct SEFSuperBlockRecord *infoOutBuffer for storing superblock information

Return value of SEFGetSuperBlockInfo​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCheckPage​

struct SEFStatus SEFCheckPage(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress) 

This is a read patrol operation which can be used in conjunction with SEFGetCheckList. Returns detailed information concerning checked pages to allow host software to take appropriate corrective actions.

See Also: struct SEFStatus, SEFGetCheckList()

Parameters of SEFCheckPage​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFFlashAddressflashAddressInPhysical address to be checked

Return value of SEFCheckPage​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFDeleteVirtualDevice​

struct SEFStatus SEFDeleteVirtualDevice(SEFHandle sefHandle, struct SEFVirtualDeviceID virtualDeviceID)

Deletes the target virtual device. The Virtual Device must be in the closed state before issuing this command. Moreover, this command will fail if the Virtual Device contains any QoS Domains.

See Also: struct SEFStatus

Parameters of SEFDeleteVirtualDevice​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFVirtualDeviceIDvirtualDeviceIDInVirtual Device ID

Return value of SEFDeleteVirtualDevice​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFDeleteQoSDomain​

struct SEFStatus SEFDeleteQoSDomain(SEFHandle sefHandle, struct SEFQoSDomainID QoSDomainID)

Deletes the target QoS domain. The QoS domain must be in the closed state before issuing this command. After closing the target QoS domain, its assigned superblocks are returned to the virtual device's free pool.

See Also: struct SEFStatus

Parameters of SEFDeleteQoSDomain​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainIDQoSDomainIDInQoS Domain ID

Return value of SEFDeleteQoSDomain​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFResetEncryptionKey​

struct SEFStatus SEFResetEncryptionKey(SEFHandle sefHandle, struct SEFQoSDomainID QoSDomainID) 

Resets the encryption key for a QoS Domain.

See Also: struct SEFStatus

Parameters of SEFResetEncryptionKey​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainIDQoSDomainIDInQoS Domain ID

Return value of SEFResetEncryptionKey​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFOpenVirtualDevice​

struct SEFStatus SEFOpenVirtualDevice(SEFHandle sefHandle, struct SEFVirtualDeviceID virtualDeviceID, void(*notifyFunc)(void *, struct SEFVDNotification), void *context, SEFVDHandle *vdHandle)

Opens the target virtual device. Since Virtual Devices are persistent, this provides the mechanism for opening a preexisting Virtual Device to resume I/O after reboot. This function needs to be called in order to receive notifications about the virtual device, such as in the event that a reduced capacity notification is issued.

See Also: struct SEFStatus

Parameters of SEFOpenVirtualDevice​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFVirtualDeviceIDvirtualDeviceIDInVirtual Device ID
void()(void , struct SEFVDNotification)notifyFuncInCallback to be executed upon event generation
void *contextInA void* pointer passed to the async event notification function (used to pass user context information)
SEFVDHandle *vdHandleInHandle to the Virtual Drive

Return value of SEFOpenVirtualDevice​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCloseVirtualDevice​

struct SEFStatus SEFCloseVirtualDevice(SEFVDHandle vdHandle)

Closes an open Virtual Device and shuts down associated event notification.

See Also: struct SEFStatus

Parameters of SEFCloseVirtualDevice​

TypeNameDirectionDescription
SEFVDHandlevdHandleInHandle to the Virtual Device

Return value of SEFCloseVirtualDevice​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFOpenQoSDomain​

struct SEFStatus SEFOpenQoSDomain(SEFHandle sefHandle, struct SEFQoSDomainID QoSDomainID, void(*notifyFunc)(void *, struct SEFQoSNotification), void *context, const void *encryptionKey, SEFQoSHandle *qosHandle)

Opens a previously created QoS Domain. Since QoS Domains are persistent, this provides the mechanism for opening a preexisting QoS Domain to resume I/O after reboot. This function also provides a channel to receive notifications regarding this QoS domain.

See Also: struct SEFStatus

Parameters of SEFOpenQoSDomain​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainIDQoSDomainIDInQoS Domain ID
void()(void , struct SEFQoSNotification)notifyFuncInCallback to be executed during event generation
void *contextInA void* pointer passed to the async event notification function (used to pass user context information)
const void *encryptionKeyInIn a multitenant environment, different tenants will write to separate QoS domains. Provides for individualized encryption keys on a per-domain basis
SEFQoSHandle *qosHandleOutHandle to the QoS Domain

Return value of SEFOpenQoSDomain​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCloseQoSDomain​

struct SEFStatus SEFCloseQoSDomain(SEFQoSHandle qosHandle)

Closes an open QoS Domain. This in turn will close any open superblocks associated with this domain. All outstanding kSuperblockChangeState events will be delivered before this function returns. A QoS Domain must be in the closed state to be deleted.

See Also: struct SEFStatus

Parameters of SEFCloseQoSDomain​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain

Return value of SEFCloseQoSDomain​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFParseFlashAddress​

struct SEFStatus SEFParseFlashAddress(SEFHandle sefHandle, struct SEFFlashAddress flashAddress, struct SEFQoSDomainID *QoSDomainID, uint16_t *blockNumber, uint32_t *ADUOffset)

This function is used to extract info needed by FTL from an opaque flash address.

See Also: struct SEFStatus

Parameters of SEFParseFlashAddress​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFFlashAddressflashAddressInThe opaque address to be parsed
struct SEFQoSDomainID *QoSDomainIDOutA pointer to where to return the QoS Domain ID. A null pointer indicates that the Qos Domain ID is not to be returned
uint16_t *blockNumberOutA pointer to where to return the block number. A null pointer indicates that the block number is not to be returned
uint32_t *ADUOffsetOutA pointer to where to return the ADU Offset. A null pointer indicates that the ADU Offset is not to be returned

Return value of SEFParseFlashAddress​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCreateFlashAddress​

struct SEFFlashAddress SEFCreateFlashAddress(SEFHandle sefHandle, struct SEFQoSDomainID QoSDomainID, uint16_t blockNumber, uint32_t ADUOffset)

This function is used to create an opaque flash address. A generated flash address may be rejected by the device if it specifies an illegal ADUOffset, a block number not owned by the QoSDomainID, or a QoSDomainID that has not been opened by the caller.

Parameters of SEFCreateFlashAddress​

TypeNameDirectionDescription
SEFHandlesefHandleInHandle to the SEF Unit
struct SEFQoSDomainIDQoSDomainIDInThe desired QoS Domain ID.
uint16_tblockNumberInThe desired block number.
uint32_tADUOffsetInThe desired ADU Offset.

Return value of SEFCreateFlashAddress​

TypeDescription
struct SEFFlashAddressThe generated flash address.

SEFReleaseSuperBlock​

struct SEFStatus SEFReleaseSuperBlock(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress)

Releases the specific Super Block to the free pool owned by the Virtual Device to which the specified QoS Domain belongs. The target superblock must have been assigned by a previous call to SEFAllocateSuperBlock() or as part of SEFWriteWithoutPhysicalAddress1(). The superblock must be closed, otherwise the call will fail.

See Also: struct SEFStatus

Parameters of SEFReleaseSuperBlock​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain of the Super Block
struct SEFFlashAddressflashAddressInPhysical address of the superblock to release

Return value of SEFReleaseSuperBlock​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFAllocateSuperBlock​

struct SEFStatus SEFAllocateSuperBlock(SEFQoSHandle qosHandle, struct SEFFlashAddress *flashAddress, uint32_t retention, enum SEFSuperBlockType type, const struct SEFAllocateOverrides *overrides)

Allocates a superblock that will be assigned to the specified QoS Domain and returns the physical address of this superblock. Any number of superblocks can be kept open for write for each QoS domain. These superblocks in turn can be used as part of the parameter set for SEFWriteWithoutPhysicalAddress(). When allocating a superblock, SEF intelligently selects a location in a manner designed to optimize the lifetime of flash memory and will return the physical address that was selected. Note that each open superblock will allocate a write buffer and therefore consume memory, so there is a tradeoff in the number of open superblocks and the amount of memory consumed. Required that the total ADUs in the domain be less than its flash quota. This can be known by summing the writableADUs of each superblock in the domain.

See Also: struct SEFStatus, SEFGetQoSDomainInformation()

Parameters of SEFAllocateSuperBlock​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFFlashAddress *flashAddressOutThe flash address of the allocated block
uint32_tretentionInRetention period in hours
enum SEFSuperBlockTypetypeInkForWrite, kForCopy or kForDeviceMetadata
const struct SEFAllocateOverrides *overridesInOverrides to scheduler parameters; pointer can be null for none required.

Return value of SEFAllocateSuperBlock​

TypeDescription
struct SEFStatusStatus and info summarizing result. .info contains number of ADUs in allocated superblock

SEFFlushSuperBlock​

struct SEFStatus SEFFlushSuperBlock(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress, uint32_t *distanceToEndOfSuperBlock) 

Flushes the target superblock. This command causes all written data for the superblock that is still in the write buffer and not persisted to flash memory to be persisted to flash memory. The device will automatically append data if necessary to finish programming of all pending user data writes. This command will not return until any address change notifications for the superblock being flushed have been processed, ensuring that all previously tentative addresses are now permanent.

See Also: struct SEFStatus

Parameters of SEFFlushSuperBlock​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain of the Super Block
struct SEFFlashAddressflashAddressInPhysical address of the Super Block to be flushed.
uint32_t *distanceToEndOfSuperBlockOutIndicates remaining size in ADU after this flush operation. May be NULL.

Return value of SEFFlushSuperBlock​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFCloseSuperBlock​

struct SEFStatus SEFCloseSuperBlock(SEFQoSHandle qosHandle, struct SEFFlashAddress flashAddress)

Closes the target superblock. If there is remaining unwritten space in the superblock, that space will be padded with dummy data. This can be used by the FTL as a means of closing a superblock without invoking a Write command. This command will not return until all address change and superblock state change notifications for the superblock being closed have been processed, ensuring that all previously tentative addresses are now permanent.

See Also: struct SEFStatus

Parameters of SEFCloseSuperBlock​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain of the Super Block
struct SEFFlashAddressflashAddressInPhysical address of the Super Block to move to Closed state by filling data

Return value of SEFCloseSuperBlock​

TypeDescription
struct SEFStatusStatus and info summarizing result.

SEFPrepareBufferForNamelessCopy​

void* SEFPrepareBufferForNamelessCopy(struct SEFCopySource *copySource, const struct SEFUserAddressFilter *filter, uint32_t numAddressChangeRecords, struct SEFAddressChangeRequest **addressChangeInfo)

This function allocates a data buffer SEFNamelessCopy(). It initializes filter parameters and returns pointers into members of copySource and addressChangeInfo.

Parameters of SEFPrepareBufferForNamelessCopy​

TypeNameDirectionDescription
struct SEFCopySource *copySourceInDescription of copy source; format and arraysize MUST be initialized. The validBitmap pointer or flashAddressList pointer will be set by this function.
const struct SEFUserAddressFilter *filterInPointer to filter parameters, may be null for no filtering. This function will set the filter fields in the buffer.
uint32_tnumAddressChangeRecordsInSize of addressChangeRequest userAddress array
struct SEFAddressChangeRequest **addressChangeInfoOutA pointer to pointer to the address change info within the buffer (set by this function)

Return value of SEFPrepareBufferForNamelessCopy​

TypeDescription
void *Pointer to allocated buffer or NULL if error

SEFFreeBufferForNamelessCopy​

void SEFFreeBufferForNamelessCopy(void *copyContext)

Frees the buffer allocated with SEFPrepareBufferForNamelessCopy().

Parameters of SEFFreeBufferForNamelessCopy​

TypeNameDirectionDescription
void *copyContextInA pointer to the memory to free

SEFReleaseSuperBlockAsync​

void SEFReleaseSuperBlockAsync(SEFQoSHandle qosHandle, struct SEFReleaseSuperBlockIOCB *iocb)

This function is the asynchronous version of SEFReleaseSuperBlock().

See Also: SEFReleaseSuperBlock()

Parameters of SEFReleaseSuperBlockAsync​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFReleaseSuperBlockIOCB *iocbIn/OutFor asynchronous response from SEF Library Unused fields should be set to 0.

SEFAllocateSuperBlockAsync​

void SEFAllocateSuperBlockAsync(SEFQoSHandle qosHandle, struct SEFAllocateSuperBlockIOCB *iocb)

This function is the asynchronous version of SEFAllocateSuperBlock().

See Also: SEFAllocateSuperBlock()

Parameters of SEFAllocateSuperBlockAsync​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFAllocateSuperBlockIOCB *iocbIn/OutFor asynchronous response from SEF Library Unused fields should be set to 0.

SEFCloseSuperBlockAsync​

void SEFCloseSuperBlockAsync(SEFQoSHandle qosHandle, struct SEFCloseSuperBlockIOCB *iocb)

This function is the asynchronous version of SEFCloseSuperBlock(). kSuperblockStateChanged will have been sent before the completion routine is called and the iocb is marked as done.

See Also: SEFCloseSuperBlock()

Parameters of SEFCloseSuperBlockAsync​

TypeNameDirectionDescription
SEFQoSHandleqosHandleInHandle to the QoS Domain
struct SEFCloseSuperBlockIOCB *iocbIn/OutFor asynchronous response from SEF Library