Re: [PATCH 1/2] libext2fs: add metadata checksum and snapshot feature flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Sep 21, 2011 at 11:03:57AM +0300, Amir Goldstein wrote:
> On Tue, Sep 20, 2011 at 9:56 PM, Darrick J. Wong <djwong@xxxxxxxxxx> wrote:
> > On Thu, Sep 15, 2011 at 06:50:51PM -0400, Theodore Ts'o wrote:
<snip>
> >> diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
> >> index 4fec5db..1c86cb2 100644
> >> --- a/lib/ext2fs/ext2_fs.h
> >> +++ b/lib/ext2fs/ext2_fs.h
> >> @@ -142,7 +142,9 @@ struct ext2_group_desc
> >>       __u16   bg_free_inodes_count;   /* Free inodes count */
> >>       __u16   bg_used_dirs_count;     /* Directories count */
> >>       __u16   bg_flags;
> >> -     __u32   bg_reserved[2];
> >> +     __u32   bg_exclude_bitmap_lo;   /* Exclude bitmap for snapshots */
> >> +     __u16   bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */
> >> +     __u16   bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */
> >>       __u16   bg_itable_unused;       /* Unused inodes count */
> >>       __u16   bg_checksum;            /* crc16(s_uuid+grouo_num+group_desc)*/
> >>  };
> >> @@ -159,7 +161,9 @@ struct ext4_group_desc
> >>       __u16   bg_free_inodes_count;   /* Free inodes count */
> >>       __u16   bg_used_dirs_count;     /* Directories count */
> >>       __u16   bg_flags;               /* EXT4_BG_flags (INODE_UNINIT, etc) */
> >> -     __u32   bg_reserved[2];         /* Likely block/inode bitmap checksum */
> >> +     __u32   bg_exclude_bitmap_lo;   /* Exclude bitmap for snapshots */
> >> +     __u16   bg_block_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */
> >> +     __u16   bg_inode_bitmap_csum_lo;/* crc32c(s_uuid+grp_num+bitmap) LSB */
> >>       __u16   bg_itable_unused;       /* Unused inodes count */
> >>       __u16   bg_checksum;            /* crc16(sb_uuid+group+desc) */
> >>       __u32   bg_block_bitmap_hi;     /* Blocks bitmap block MSB */
> >> @@ -169,7 +173,10 @@ struct ext4_group_desc
> >>       __u16   bg_free_inodes_count_hi;/* Free inodes count MSB */
> >>       __u16   bg_used_dirs_count_hi;  /* Directories count MSB */
> >>       __u16   bg_itable_unused_hi;    /* Unused inodes count MSB */
> >> -     __u32   bg_reserved2[3];
> >> +     __u32   bg_exclude_bitmap_hi;   /* Exclude bitmap block MSB */
> >> +     __u16   bg_block_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */
> >> +     __u16   bg_inode_bitmap_csum_hi;/* crc32c(s_uuid+grp_num+bitmap) MSB */
> >> +     __u32   bg_reserved;
> >
> > Should we attach a checksum to the exclude bitmap?  That would, unfortunately,
> > put the 64-byte block group pretty close to full, unless we're ok with making
> > the bg even bigger...
> 
> Good point.
> My initial approach (which I probably expressed somewhere) was that when
> exclude_bitmap feature is set, the block bitmap checksum should cover both
> block bitmap and exclude bitmap.
> The reason being that exclude bitmap adds little entropy over block bitmap:
> - it should always be a sub set of block bitmap bits
> - clearing exclude bit is done together with clearing the block used bit
> - the only case of modifying exclude bitmap only is when a used block becomes
>   excluded (a.k.a moved to snapshot)
> 
> so how do you feel about compressing 2 blocks into 16bits of checksum :-/?

Hrm.... is it generally the case that both block and exclude bitmaps are loaded
at the same time?  I don't think it'd be difficult to checksum both blocks
unless it's common that one of the two are not in memory.

--D

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux