Bug 1130325
Summary: | GFS2: [RFE] remove freeze lock from transaction code path | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Ben Marzinski <bmarzins> | ||||||||
Component: | kernel | Assignee: | Ben Marzinski <bmarzins> | ||||||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||||
Severity: | unspecified | Docs Contact: | |||||||||
Priority: | unspecified | ||||||||||
Version: | rawhide | CC: | adas, anprice, bmarzins, gansalmon, itamar, jonathan, kernel-maint, madhu.chinakonda, mchehab, mspqa-list, pevans, rpeterso, swhiteho | ||||||||
Target Milestone: | --- | Keywords: | FutureFeature | ||||||||
Target Release: | --- | ||||||||||
Hardware: | Unspecified | ||||||||||
OS: | Unspecified | ||||||||||
Whiteboard: | |||||||||||
Fixed In Version: | Doc Type: | Enhancement | |||||||||
Doc Text: | Story Points: | --- | |||||||||
Clone Of: | 1027451 | Environment: | |||||||||
Last Closed: | 2015-10-09 21:11:46 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: | |||||||||||
Bug Depends On: | 1027451 | ||||||||||
Bug Blocks: | |||||||||||
Attachments: |
|
Description
Ben Marzinski
2014-08-14 21:12:26 UTC
The commit referened in the last comment went into 3.16-rc1. Rawhide is already onto the 3.17 merge window kernels. Do you need this rawhide bug open for some reason? Hmm, not sure. Ben, did you clone the original bug to track the vfs hook work? If so then we should assign this to you, to make it clearer. Yeah. This is a bug for a new version of the freeze code. I reassigned it to myself. Created attachment 927253 [details] Patches to implement the new gfs2 freeze method The attached tarball contains a two sets of patches. The 1130325_patches contains a patch for the new vfs hook, new_hook.patch, and a patch for the new freeze method that uses this hook, new_freeze.patch. There seemed to me to be two ways to go about getting the necessary vfs hooks. One method was to add two more hooks that only gfs2 would use to do locking before the call to freeze_super(). The other method was to change the existing freeze/unfreeze hooks so that if they existed, the filesystem was responsible for calling freeze_super/thaw_super. I eventually went with the second method, which requires changing all the filesystems that implement their own freezing code, but didn't add additional hooks just for gfs2. The gfs2 code is very similar to an earlier attempt I made in bz #1027451, where I found about about the lock ordering issue. The code is significantly simpler than the old freezing code, and the same series of events happens on all of the nodes of the cluster to freeze and unfreeze a filesystem. The second directory, patches_split, contains two patches that when applied together, recreate new_freeze.patch. reversed_old_freeze.patch reverts my old freeze fix, and freeze_needs_vfs_hook.patch adds the new one from scratch. This makes it easier to read all the logic of the new freeze code, since it shares a chunck of it with my earlier freeze patch. Created attachment 931677 [details]
new version of patches to implement gfs2 freeze method
This is exactly the same as the old patch, with some fixes to new_hook.patch to make reiserfs work correctly.
Created attachment 935766 [details]
version that fixes gfs2 in new_hook.patch
In the previous version, I accidentally left the gfs2 changes out of new_hook.patch. This didn't effect anything once both patches were applied, but it meant that freezing wouldn't work on gfs2 with just the first patch applied. This version makes new_hook.patch keep freezing working the current way on gfs2.
This version also doesn't have the split-out version of patches, were I first removed the old freeze code, and then added the new freeze code from scratch.
Is this now complete? I have a feeling we could close this bug now. Yep. |