Bug 222748

Summary: gfs_grow gets the rgindex out of order
Product: [Retired] Red Hat Cluster Suite Reporter: Robert Peterson <rpeterso>
Component: gfsAssignee: Robert Peterson <rpeterso>
Status: CLOSED ERRATA QA Contact: GFS Bugs <gfs-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 4CC: adas, rkenna
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: RHBA-2007-0139 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-05-10 21:00:46 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 222743    
Bug Blocks:    

Description Robert Peterson 2007-01-15 23:13:05 UTC
+++ This bug was initially created as a clone of Bug #222743 +++
Bug cloned from RHEL5 to RHEL4 so I can fix RHEL4's gfs_grow as well.

Description of problem:
When gfs_grow is run to extend a GFS file system, it adds entries
to the rgindex.  The problem is, it writes them in reverse block order.
That has the side-effect that gfs_fsck will report the wrong percentage
complete in pass 5.  For example, if you double the size of a GFS
file system, pass 5 will report 1% complete, then 2%, etc.  But when it
gets to the new rgs, it will report 99%, then 98%, then 97% until it
processes them all when it returns to 50%.

Version-Release number of selected component (if applicable):
RHEL5

How reproducible:
Always

Steps to Reproduce:
1. Create a small GFS file system
2. Use gfs_grow to grow it
3. Run gfs_fsck on it
  
Actual results:
Percentage complete can run backward.

Expected results:
Percentage complete should be forward.

Additional info:

-- Additional comment from rpeterso on 2007-01-15 17:49 EST --
The problem is easily fixed.  Back in March 2006 when I was testing
changes to gfs_fsck rg repair, I noticed this problem and created 
this patch to fix it in RHEL4:

--- main.c.~1~  2005-01-04 04:07:07.000000000 -0600
+++ main.c      2006-03-30 11:18:34.000000000 -0600
@@ -669,7 +669,7 @@ make_rgrp(uint64_t offset, uint64_t size
        rgl->rg.rg_header.mh_format = GFS_FORMAT_RG;
        rgl->rg.rg_free = rgl->ri.ri_data;
 
-       osi_list_add(&rgl->list, &rglist_new);
+       osi_list_add_prev(&rgl->list, &rglist_new);
        return offset + size;
 }

The patch unfortunately never made it to RHEL5 or anywhere.  
This should be fixed so customers aren't confused by it.

Comment 1 Robert Peterson 2007-01-17 23:02:26 UTC
I unit tested this on system roth-01. I verified with gfs_tool rindex
that gfs_grow caused the rgindex to get out of order without my fix.  
Then I applied my fix, deleted the lv, redid the test and verified it
was in the correct order.  I committed the fix to CVS in the RHEL4 
branch for 4.5's sake.  Changing bz status to modified.


Comment 5 Red Hat Bugzilla 2007-05-10 21:00:46 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2007-0139.html