F2FS
在运行时,F2FS在“Main Area”区域管理6个活跃的log,分别是Hot/Warm/Cold node log和Hot/Warm/Cold data logs,每一个log对应着一个独立的segment。
- Hot node : contains direct node blocks of directories.
- Warm node : contains direct node blocks except hot node blocks.
- Cold node : contains indirect node blocks
- Hot data : contains dentry blocks
- Warm data : contains data blocks except hot and cold data blocks
- Cold data : contains multimedia data or migrated data blocks
根据数据所属的类型,利用对应的log分配的空间将数据写入该空间。
struct curseg_info 表示当前active log的信息(当前活跃的segment信息)
/* for active log information
当前segment的信息
一共有6个不同类型的segment,以数组形式组织的
*/
struct curseg_info {
struct mutex curseg_mutex; /* lock for consistency */
struct f2fs_summary_block *sum_blk; /* cached summary block */
struct rw_semaphore journal_rwsem; /* protect journal area */
struct f2fs_journal *journal; /* cached journal info */
unsigned char alloc_type; /* current allocation type 当前segment的type*/
unsigned int segno; /* current segment number 当前segment号*/
unsigned short next_blkoff; /* next block offset to write 下一个要写入块的偏移量*/
unsigned int zone; /* current zone number 当前zone号