)]}'
{
  "log": [
    {
      "commit": "fd2d42912f9f09e5250cb3b024ee0625704e9cb7",
      "tree": "23e85123e8cc06d518fd7cff665f93429e19e4e2",
      "parents": [
        "bba907433b85ba2adae1bb3b6fd29b4e5f35c468"
      ],
      "author": {
        "name": "Avantika Mathur",
        "email": "mathur@us.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: add ext4_group_t, and change all group variables to this type.\n\nIn many places variables for block group are of type int, which limits the\nmaximum number of block groups to 2^31.  Each block group can have up to\n2^15 blocks, with a 4K block size,  and the max filesystem size is limited to\n2^31 * (2^15 * 2^12) \u003d 2^58  -- or 256 PB\n\nThis patch introduces a new type ext4_group_t, of type unsigned long, to\nrepresent block group numbers in ext4.\nAll occurrences of block group variables are converted to type ext4_group_t.\n\nSigned-off-by: Avantika Mathur \u003cmathur@us.ibm.com\u003e\n"
    },
    {
      "commit": "717d50e4971b81b96c0199c91cdf0039a8cb181a",
      "tree": "a8d68edbc1f064c76cbfee206e093d2c86c80ba0",
      "parents": [
        "4074fe3736b1a43431dff870bf9055ac5dcf3f03"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@clusterfs.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:50:00 2007 -0400"
      },
      "message": "Ext4: Uninitialized Block Groups\n\nIn pass1 of e2fsck, every inode table in the fileystem is scanned and checked,\nregardless of whether it is in use.  This is this the most time consuming part\nof the filesystem check.  The unintialized block group feature can greatly\nreduce e2fsck time by eliminating checking of uninitialized inodes.\n\nWith this feature, there is a a high water mark of used inodes for each block\ngroup.  Block and inode bitmaps can be uninitialized on disk via a flag in the\ngroup descriptor to avoid reading or scanning them at e2fsck time.  A checksum\nof each group descriptor is used to ensure that corruption in the group\ndescriptor\u0027s bit flags does not cause incorrect operation.\n\nThe feature is enabled through a mkfs option\n\n\tmke2fs /dev/ -O uninit_groups\n\nA patch adding support for uninitialized block groups to e2fsprogs tools has\nbeen posted to the linux-ext4 mailing list.\n\nThe patches have been stress tested with fsstress and fsx.  In performance\ntests testing e2fsck time, we have seen that e2fsck time on ext3 grows\nlinearly with the total number of inodes in the filesytem.  In ext4 with the\nuninitialized block groups feature, the e2fsck time is constant, based\nsolely on the number of used inodes rather than the total inode count.\nSince typical ext4 filesystems only use 1-10% of their inodes, this feature can\ngreatly reduce e2fsck time for users.  With performance improvement of 2-20\ntimes, depending on how full the filesystem is.\n\nThe attached graph shows the major improvements in e2fsck times in filesystems\nwith a large total inode count, but few inodes in use.\n\nIn each group descriptor if we have\n\nEXT4_BG_INODE_UNINIT set in bg_flags:\n        Inode table is not initialized/used in this group. So we can skip\n        the consistency check during fsck.\nEXT4_BG_BLOCK_UNINIT set in bg_flags:\n        No block in the group is used. So we can skip the block bitmap\n        verification for this group.\n\nWe also add two new fields to group descriptor as a part of\nuninitialized group patch.\n\n        __le16  bg_itable_unused;       /* Unused inodes count */\n        __le16  bg_checksum;            /* crc16(sb_uuid+group+desc) */\n\nbg_itable_unused:\n\nIf we have EXT4_BG_INODE_UNINIT not set in bg_flags\nthen bg_itable_unused will give the offset within\nthe inode table till the inodes are used. This can be\nused by fsck to skip list of inodes that are marked unused.\n\nbg_checksum:\nNow that we depend on bg_flags and bg_itable_unused to determine\nthe block and inode usage, we need to make sure group descriptor\nis not corrupt. We add checksum to group descriptor to\ndetect corruption. If the descriptor is found to be corrupt, we\nmark all the blocks and inodes in the group used.\n\nSigned-off-by: Avantika Mathur \u003cmathur@us.ibm.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    }
  ]
}
