Re: [PATCH 02/16] f2fs: add on-disk layout

From: Martin Steigerwald
Date: Fri Oct 05 2012 - 13:46:16 EST


Am Freitag, 5. Oktober 2012 schrieb êìê:
> This adds a header file describing the on-disk layout of f2fs.
>
> Signed-off-by: Changman Lee <cm224.lee@xxxxxxxxxxx>
> Signed-off-by: Chul Lee <chur.lee@xxxxxxxxxxx>
> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@xxxxxxxxxxx>
> ---
> include/linux/f2fs_fs.h | 359 +++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 359 insertions(+)
> create mode 100644 include/linux/f2fs_fs.h
>
> diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h
> new file mode 100644
> index 0000000..b17eeec
> --- /dev/null
> +++ b/include/linux/f2fs_fs.h
> @@ -0,0 +1,359 @@
> +/**
> + * include/linux/f2fs_fs.h
[â]
> +/*
> + * For superblock
> + */
> +struct f2fs_super_block {
> + __le32 magic; /* Magic Number */
> + __le16 major_ver; /* Major Version */
> + __le16 minor_ver; /* Minor Version */
> + __le32 log_sectorsize; /* log2 (Sector size in bytes) */
> + __le32 log_sectors_per_block; /* log2 (Number of sectors per block */
> + __le32 log_blocksize; /* log2 (Block size in bytes) */
> + __le32 log_blocks_per_seg; /* log2 (Number of blocks per segment) */
> + __le32 log_segs_per_sec; /* log2 (Number of segments per section) */
> + __le32 secs_per_zone; /* Number of sections per zone */
> + __le32 checksum_offset; /* Checksum position in this super block */
> + __le64 block_count; /* Total number of blocks */
> + __le32 section_count; /* Total number of sections */
> + __le32 segment_count; /* Total number of segments */
> + __le32 segment_count_ckpt; /* Total number of segments
> + in Checkpoint area */
> + __le32 segment_count_sit; /* Total number of segments
> + in Segment information table */
> + __le32 segment_count_nat; /* Total number of segments
> + in Node address table */
> + /*Total number of segments in Segment summary area */
> + __le32 segment_count_ssa;
> + /* Total number of segments in Main area */
> + __le32 segment_count_main;
> + __le32 failure_safe_block_distance;
> + __le64 segment0_blkaddr; /* Start block address of Segment 0 */
> + __le64 start_segment_checkpoint; /* Start block address of ckpt */
> + __le64 sit_blkaddr; /* Start block address of SIT */
> + __le64 nat_blkaddr; /* Start block address of NAT */
> + __le64 ssa_blkaddr; /* Start block address of SSA */
> + __le64 main_blkaddr; /* Start block address of Main area */
> + __le32 root_ino; /* Root directory inode number */
> + __le32 node_ino; /* node inode number */
> + __le32 meta_ino; /* meta inode number */
> + __le32 volume_serial_number; /* VSN is optional field */
> + __le16 volume_name[8]; /* Volume Name. 8 unicode characters */
> +} __packed;

Any reason why volume label is that short?

If superblock can occupy up to 4096 bytes, i.e. a block, I think a bit
more space for volume label would fit in there. I count 128 bytes up
to volume_name. Do other structures need to fit in superblock as well?

I believe users easily can hit a limit of 8 unicode characters even for
USB sticks and SD cards.

Nice to see a flash friendly filesystem which seems to take lots of the
stuff in account I read at Linaro website about flash devices.

--
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/