To expand a GFS2 file system, additional resource groups must be added to manage new space. The gfs2_grow utility ensures this by writing to the rindex file. Previously, if there was not enough free space in the file system to write out new resource group entries, gfs2_grow was unable to update the rindex file. As a consequence, gfs2_grow was unable to expand the file system and failed with the following error message:
Error writing new rindex entries;aborted.
With this update, gfs2_grow writes one resource group at first, and then the rest instead of attempting to write all the new resource groups at once. Now, gfs2_grow successfully expands the file system in the described scenario.
Previously, the libgfs2 library used the obsolete MAJOR() and MINOR() macros to handle device numbers. These macros did not support device numbers greater than 255, and could cause error messages to be displayed when using gfs2-utils. The macros have been replaced by the major() and minor() functions, and gfs2-utils now works properly with device numbers greater than 255.
Previously, the "mkfs.gfs2" command worked only on block devices. Using the command on sparse files failed with an error message. An upstream patch has been applied to address this issue, and the mkfs.gfs2 utility now also recognizes regular files.
Previously, the gfs2_grow utility failed to expand a GFS file system if the file system contained only one resource group. This was due to old code based on GFS1 (which had different fields) that calculated distances between resource groups and did not work with only one resource group. This update adds the rgrp_size() function in libgfs2, which calculates the size of the resource group instead of determining its distance from the previous resource group. The file system with only one resource group can now be expanded successfully.
Due to a bug in libgfs2, sentinel directory entries were counted as if they were real entries. As a consequence, the mkfs.gfs2 utility created file systems which did not pass the fsck check when a large number of journal metadata blocks was required (for example, a file system with block size of 512, and 9 or more journals). With this update, incrementing the count of the directory entry is now avoided when dealing with sentinel entries. GFS2 file systems created with large numbers of journal metadata blocks now pass the fsck check cleanly.