Bug 450641
Summary: | gfs2 in 2.6.26-rc2 appears busted; data corruption, wrong statfs info | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Eric Sandeen <esandeen> | ||||
Component: | kernel | Assignee: | Ben Marzinski <bmarzins> | ||||
Status: | CLOSED UPSTREAM | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | low | Docs Contact: | |||||
Priority: | low | ||||||
Version: | rawhide | CC: | bmarzins, rpeterso, swhiteho | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2008-06-30 19:47:34 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: | |||||||
Attachments: |
|
Description
Eric Sandeen
2008-06-10 03:34:01 UTC
Ben, this might be a clue to what you are looking for. Well, the reason that there is no pattern until byte 1006989312 (0x3c057000) is because the first 483 pointers in the indirect pointer block are all zero, according to gfs2_edit. 483 * 509 * 4096 = 1006989312. Now the real question is why are the first 483 pointers all zero. That I'm still looking into. Incidentally, When I try to grow a file to this size, I get the exact same thing, no data until byte 1006989312. It happens somewhere between growing the file to 100Mb and 1000Mb. This should make it pretty easy to track down. I wonder whether the data thats left is the data from the start of the file or the data which actually belongs in that place. If the former, then I suspect that the order of addition of the new indirect blocks to the metadata tree might be to blame. Created attachment 309673 [details]
patch to fix the block allocation
This patch changes the computation for zero_metapath_length(). When you are
extending the metadata tree, The indirect blocks that point to the new data
block must either diverge from the existing tree either at the inode, or at the
first indirect block. They can diverge at the first indirect block because the
inode has room for 483 pointers while the indirect blocks have room for 509
pointers, so when the tree is grown, there is some free space in the first
indirect block. What zero_metapath_length now computes is the height where the
first indirect block for the new data block is located. It can either be 1 (if
the indirect block diverges from the inode) or 2 (if it diverges from the first
indirect block).
The patch is now upstream in Linus' kernel. Can we close this bz now, or are there other issues still left unresolved? Perhaps I should have filed 2 bugs; does the statfs issue remain? -Eric It works fine for me. So we ought to be able to close this now? |