2022-06-21 13:05:02 +00:00
|
|
|
/* SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
* Copyright (c) Intel Corporation.
|
|
|
|
* All rights reserved.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FTL_SB_CURRENT_H
|
|
|
|
#define FTL_SB_CURRENT_H
|
|
|
|
|
|
|
|
#include "spdk/uuid.h"
|
|
|
|
#include "ftl_sb_common.h"
|
|
|
|
|
|
|
|
#define FTL_METADATA_VERSION_4 4
|
|
|
|
#define FTL_METADATA_VERSION_CURRENT FTL_METADATA_VERSION_4
|
|
|
|
|
|
|
|
struct ftl_superblock {
|
|
|
|
struct ftl_superblock_header header;
|
|
|
|
|
|
|
|
struct spdk_uuid uuid;
|
|
|
|
|
2022-06-01 08:49:48 +00:00
|
|
|
/* Current sequence number */
|
|
|
|
uint64_t seq_id;
|
|
|
|
|
2022-06-21 13:05:02 +00:00
|
|
|
/* Flag describing clean shutdown */
|
|
|
|
uint64_t clean;
|
|
|
|
|
|
|
|
/* Number of surfaced LBAs */
|
|
|
|
uint64_t lba_cnt;
|
|
|
|
|
|
|
|
/* Percentage of base device blocks not exposed to the user */
|
|
|
|
uint64_t overprovisioning;
|
|
|
|
|
|
|
|
/* Maximum IO depth per band relocate */
|
|
|
|
uint64_t max_reloc_qdepth;
|
|
|
|
|
2022-06-01 08:49:48 +00:00
|
|
|
/* Reserved fields */
|
2022-06-21 13:05:02 +00:00
|
|
|
uint64_t reserved;
|
|
|
|
|
2022-06-01 08:49:48 +00:00
|
|
|
bool reserved3;
|
|
|
|
|
2022-06-21 13:05:02 +00:00
|
|
|
uint32_t reserved2;
|
|
|
|
|
2022-07-07 17:32:30 +00:00
|
|
|
/* Last L2P checkpoint +1 (i.e. min_seq_id, 0:no ckpt) */
|
|
|
|
uint64_t ckpt_seq_id;
|
|
|
|
|
2022-06-21 13:05:02 +00:00
|
|
|
struct ftl_superblock_gc_info gc_info;
|
|
|
|
|
|
|
|
struct ftl_superblock_md_region md_layout_head;
|
|
|
|
};
|
|
|
|
|
|
|
|
SPDK_STATIC_ASSERT(offsetof(struct ftl_superblock, header) == 0,
|
|
|
|
"Invalid placement of header");
|
|
|
|
|
|
|
|
SPDK_STATIC_ASSERT(FTL_SUPERBLOCK_SIZE >= sizeof(struct ftl_superblock),
|
|
|
|
"FTL SB metadata size is invalid");
|
|
|
|
|
|
|
|
#endif /* FTL_SB_CURRENT_H */
|