drivers/mtd/sm_ftl.h
Source file repositories/reference/linux-study-clean/drivers/mtd/sm_ftl.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/mtd/sm_ftl.h- Extension
.h- Size
- 2282 bytes
- Lines
- 88
- Domain
- Driver Families
- Bucket
- drivers/mtd
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/mtd/blktrans.hlinux/kfifo.hlinux/sched.hlinux/completion.hlinux/mtd/mtd.h
Detected Declarations
struct ftl_zonestruct sm_ftlstruct chs_entry
Annotated Snippet
struct ftl_zone {
bool initialized;
int16_t *lba_to_phys_table; /* LBA to physical table */
struct kfifo free_sectors; /* queue of free sectors */
};
struct sm_ftl {
struct mtd_blktrans_dev *trans;
struct mutex mutex; /* protects the structure */
struct ftl_zone *zones; /* FTL tables for each zone */
/* Media information */
int block_size; /* block size in bytes */
int zone_size; /* zone size in blocks */
int zone_count; /* number of zones */
int max_lba; /* maximum lba in a zone */
int smallpagenand; /* 256 bytes/page nand */
bool readonly; /* is FS readonly */
bool unstable;
int cis_block; /* CIS block location */
int cis_boffset; /* CIS offset in the block */
int cis_page_offset; /* CIS offset in the page */
/* Cache */
int cache_block; /* block number of cached block */
int cache_zone; /* zone of cached block */
unsigned char *cache_data; /* cached block data */
long unsigned int cache_data_invalid_bitmap;
bool cache_clean;
struct work_struct flush_work;
struct timer_list timer;
/* Geometry stuff */
int heads;
int sectors;
int cylinders;
struct attribute_group *disk_attributes;
u8 cis_buffer[]; /* tmp buffer for cis reads */
};
struct chs_entry {
unsigned long size;
unsigned short cyl;
unsigned char head;
unsigned char sec;
};
#define SM_FTL_PARTN_BITS 3
#define sm_printk(format, ...) \
printk(KERN_WARNING "sm_ftl" ": " format "\n", ## __VA_ARGS__)
#define dbg(format, ...) \
if (debug) \
printk(KERN_DEBUG "sm_ftl" ": " format "\n", ## __VA_ARGS__)
#define dbg_verbose(format, ...) \
if (debug > 1) \
printk(KERN_DEBUG "sm_ftl" ": " format "\n", ## __VA_ARGS__)
static int sm_erase_block(struct sm_ftl *ftl, int zone_num, uint16_t block,
int put_free);
static void sm_mark_block_bad(struct sm_ftl *ftl, int zone_num, int block);
static int sm_recheck_media(struct sm_ftl *ftl);
Annotation
- Immediate include surface: `linux/mtd/blktrans.h`, `linux/kfifo.h`, `linux/sched.h`, `linux/completion.h`, `linux/mtd/mtd.h`.
- Detected declarations: `struct ftl_zone`, `struct sm_ftl`, `struct chs_entry`.
- Atlas domain: Driver Families / drivers/mtd.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.