On 12/05, Ananth Bhaskararaman wrote:
> I have a multi-disk f2fs device, and when I run lsblk, it shows the fs
> only on the main device.
> I'd like all devices to show up with the mounted fs like btrfs
> multi-device arrays.
> I'd also like udev to recognise that both devices are used by this fs.
> Right now, the second device just shows up as unknown.
> 
> I'm intereseted in adding this support myself.
> I'd appreciate any tips on where I can get started with this.

Hi,

You can get the block list from f2fs superblock in the first 4KB.

 740 struct f2fs_super_block {
 741         __le32 magic;                   /* Magic Number */
 742         __le16 major_ver;               /* Major Version */
 743         __le16 minor_ver;               /* Minor Version */
 744         __le32 log_sectorsize;          /* log2 sector size in bytes */
 745         __le32 log_sectors_per_block;   /* log2 # of sectors per block */
 746         __le32 log_blocksize;           /* log2 block size in bytes */
 747         __le32 log_blocks_per_seg;      /* log2 # of blocks per segment */
 748         __le32 segs_per_sec;            /* # of segments per section */
 749         __le32 secs_per_zone;           /* # of sections per zone */
 750         __le32 checksum_offset;         /* checksum offset inside super 
block */
 751         __le64 block_count;             /* total # of user blocks */
 752         __le32 section_count;           /* total # of sections */
 753         __le32 segment_count;           /* total # of segments */
 754         __le32 segment_count_ckpt;      /* # of segments for checkpoint */
 755         __le32 segment_count_sit;       /* # of segments for SIT */
 756         __le32 segment_count_nat;       /* # of segments for NAT */
 757         __le32 segment_count_ssa;       /* # of segments for SSA */
 758         __le32 segment_count_main;      /* # of segments for main area */
 759         __le32 segment0_blkaddr;        /* start block address of segment 
0 */
 760         __le32 cp_blkaddr;              /* start block address of 
checkpoint */
 761         __le32 sit_blkaddr;             /* start block address of SIT */
 762         __le32 nat_blkaddr;             /* start block address of NAT */
 763         __le32 ssa_blkaddr;             /* start block address of SSA */
 764         __le32 main_blkaddr;            /* start block address of main 
area */
 765         __le32 root_ino;                /* root inode number */
 766         __le32 node_ino;                /* node inode number */
 767         __le32 meta_ino;                /* meta inode number */
 768         __u8 uuid[16];                  /* 128-bit uuid for volume */
 769         __le16 volume_name[MAX_VOLUME_NAME];    /* volume name */
 770         __le32 extension_count;         /* # of extensions below */
 771         __u8 extension_list[F2FS_MAX_EXTENSION][8];     /* extension array 
*/
 772         __le32 cp_payload;
 773         __u8 version[VERSION_LEN];      /* the kernel version */
 774         __u8 init_version[VERSION_LEN]; /* the initial kernel version */
 775         __le32 feature;                 /* defined features */
 776         __u8 encryption_level;          /* versioning level for encryption 
*/
 777         __u8 encrypt_pw_salt[16];       /* Salt used for string2key 
algorithm */
 778         struct f2fs_device devs[MAX_DEVICES];   /* device list */

------------------------------------------
 735 struct f2fs_device {
 736         __u8 path[MAX_PATH_LEN];
 737         __le32 total_segments;
 738 } __attribute__((packed));

Here.

 ----------------------------------------
 779         __le32 qf_ino[F2FS_MAX_QUOTAS]; /* quota inode numbers */
 780         __u8 hot_ext_count;             /* # of hot file extension */
 781         __le16  s_encoding;             /* Filename charset encoding */
 782         __le16  s_encoding_flags;       /* Filename charset encoding flags 
*/
 783         __u8 reserved[306];             /* valid reserved region */
 784         __le32 crc;                     /* checksum of superblock */
 785 } __attribute__((packed));

Thanks,

> 
> Ananth
> 
> 
> _______________________________________________
> Linux-f2fs-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to