|
|
1bba87 |
commit 12a82c8661b003736a0cb14fe042605f2412c329
|
|
|
1bba87 |
Author: Andrew Price <anprice@redhat.com>
|
|
|
1bba87 |
Date: Thu Apr 25 11:21:22 2019 +0100
|
|
|
1bba87 |
|
|
|
1bba87 |
mkfs.gfs2: Improve alignment of first resource group
|
|
|
1bba87 |
|
|
|
1bba87 |
Currently the first rgrp is aligned to the whole stripe width and the
|
|
|
1bba87 |
second rgrp is aligned to (stripe width + 1 stripe unit) and so on, to
|
|
|
1bba87 |
spread them across an array. However, that means that there could be a
|
|
|
1bba87 |
large amount of space wasted between the superblock and the first
|
|
|
1bba87 |
resource group, and can result in the iovec used to zero that space
|
|
|
1bba87 |
exceeding IOV_MAX and failing mkfs.gfs2 (since 6cefaf33d5) if the array
|
|
|
1bba87 |
has a sufficiently large number of LUNs. Instead, align the first
|
|
|
1bba87 |
resource group to a stripe unit so that the gap is minimised. Resource
|
|
|
1bba87 |
groups are still spread across the array as the alignment of subsequent
|
|
|
1bba87 |
ones are handled separately.
|
|
|
1bba87 |
|
|
|
1bba87 |
Resolves: rhbz#1698858
|
|
|
1bba87 |
|
|
|
1bba87 |
Signed-off-by: Andrew Price <anprice@redhat.com>
|
|
|
1bba87 |
|
|
|
1bba87 |
diff --git a/gfs2/libgfs2/rgrp.c b/gfs2/libgfs2/rgrp.c
|
|
|
1bba87 |
index 3cdaccae..20ce5807 100644
|
|
|
1bba87 |
--- a/gfs2/libgfs2/rgrp.c
|
|
|
1bba87 |
+++ b/gfs2/libgfs2/rgrp.c
|
|
|
1bba87 |
@@ -332,7 +332,7 @@ static uint64_t align_block(const uint64_t base, const uint64_t align)
|
|
|
1bba87 |
*/
|
|
|
1bba87 |
uint64_t lgfs2_rgrp_align_addr(const lgfs2_rgrps_t rgs, uint64_t addr)
|
|
|
1bba87 |
{
|
|
|
1bba87 |
- return align_block(addr, rgs->align);
|
|
|
1bba87 |
+ return align_block(addr, rgs->align_off);
|
|
|
1bba87 |
}
|
|
|
1bba87 |
|
|
|
1bba87 |
/**
|
|
|
1bba87 |
diff --git a/tests/mkfs.at b/tests/mkfs.at
|
|
|
1bba87 |
index 2739561f..57785a0d 100644
|
|
|
1bba87 |
--- a/tests/mkfs.at
|
|
|
1bba87 |
+++ b/tests/mkfs.at
|
|
|
1bba87 |
@@ -122,6 +122,8 @@ AT_KEYWORDS(mkfs.gfs2 mkfs)
|
|
|
1bba87 |
AT_CHECK([$GFS_MKFS -p lock_nolock -o test_topology=0:512:65536:393216:512 $GFS_TGT], 0, [ignore], [ignore])
|
|
|
1bba87 |
# Check rgrp alignment to minimum_io_size: 65536 / 4096 == 16
|
|
|
1bba87 |
AT_CHECK([gfs2_edit -p rindex $GFS_TGT | grep ri_addr | awk '{print $2, $2 % 16; if ($2 % 16 != 0) { exit 1 }}'], 0, [ignore], [ignore])
|
|
|
1bba87 |
+# rhbz#1698858
|
|
|
1bba87 |
+AT_CHECK([$GFS_MKFS -p lock_nolock -o test_topology=0:512:131072:6291456:512 $GFS_TGT], 0, [ignore], [ignore])
|
|
|
1bba87 |
AT_CLEANUP
|
|
|
1bba87 |
|
|
|
1bba87 |
AT_SETUP([Values of rg_skip])
|