Bug 1399830
Summary: | GFS2: fallocate error message during gfs2_grow | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Nate Straz <nstraz> |
Component: | kernel | Assignee: | Andrew Price <anprice> |
kernel sub component: | GFS/GFS2 | QA Contact: | cluster-qe <cluster-qe> |
Status: | CLOSED ERRATA | Docs Contact: | |
Severity: | unspecified | ||
Priority: | unspecified | CC: | cluster-maint, gfs2-maint |
Version: | 7.3 | ||
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | kernel-3.10.0-657.el7 | Doc Type: | If docs needed, set a value |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2017-08-02 04:53:19 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Nate Straz
2016-11-29 20:41:46 UTC
gfs2_grow uses if (fallocate(rindex_fd, FALLOC_FL_KEEP_SIZE, (rindex_size + writelen), entrysize) != 0) perror("fallocate"); to allocate enough space to write an rindex entry if the fs is full when the next grow happens. So, while the grow will succeed, the danger of the fallocate() failing is that a second gfs2_grow could fail if the fs is full. After a recent change to fix bug 1221331, gfs2's fallocate implementation does: if ((mode & ~FALLOC_FL_KEEP_SIZE) || gfs2_is_jdata(ip)) return -EOPNOTSUPP; and since mkfs.gfs2 creates the rindex inode with GFS2_DIF_JDATA set, the gfs2_is_jdata(ip) returns true and we see the bug. So I'm not sure that we can fix this in gfs2_grow. We may need to allow gfs2's fallocate to proceed for the rindex especially, or for all GFS2_DIF_SYSTEM inodes. I have submitted an upstream patch for this to cluster-devel. The patch is now upstream and I have sent a RHEL7 version to rhkernel-list. Patch(es) committed on kernel repository and an interim kernel build is undergoing testing Patch(es) available on kernel-3.10.0-657.el7 Verified on kernel-3.10.0-679.el7.x86_64 [root@dash-01 ~]# uname -r 3.10.0-679.el7.x86_64 [root@dash-01 ~]# df -Th /mnt/gfs2 Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/fsck-gfs2 gfs2 1.0T 34M 1.0T 1% /mnt/gfs2 [root@dash-01 ~]# lvextend -L +1T /dev/fsck/gfs2 Size of logical volume fsck/gfs2 changed from 1.00 TiB (262144 extents) to 2.00 TiB (524288 extents). Logical volume fsck/gfs2 successfully resized. [root@dash-01 ~]# gfs2_grow /mnt/gfs2 FS: Mount point: /mnt/gfs2 FS: Device: /dev/mapper/fsck-gfs2 FS: Size: 268435454 (0xffffffe) DEV: Length: 536870912 (0x20000000) The file system will grow by 1048576MB. gfs2_grow complete. [root@dash-01 ~]# df -Th /mnt/gfs2 Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/fsck-gfs2 gfs2 2.0T 34M 2.0T 1% /mnt/gfs2 Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:1842 |