Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Want tunable to ignore hole_birth #4833

Closed
wants to merge 2 commits into from

Conversation

rincebrain
Copy link
Contributor

Between 0.6.5.7 and prior still being affected by illumos #6513, and the newly-discovered Illumos #7176, a tunable to ignore hole_birth for safe sends seems a reasonable tool.

This is just a minor improvement on @pcd1193182's patch to make it a runtime-tunable module parameter.

I tested it, and it functions correctly on ignoring hole_birth at least on the test dataset I have from #4809.

@behlendorf
Copy link
Contributor

@rincebrain I don't object to adding a tunable but I'd suggest disabling this by default as in the original patch. Please also add a section to zfs-module-parameters.5 describing the option.

@behlendorf behlendorf added this to the 0.7.0 milestone Jul 12, 2016
@tjikkun
Copy link

tjikkun commented Jul 21, 2016

Would https://gist.github.com/tjikkun/df46ae6b84acc73c6f4000b19ffd9ba0 be the correct way to do this for 0.6.4.2?

@rincebrain
Copy link
Contributor Author

@behlendorf Okay, I've added an entry for it to the man page, and changed the default to 0, though I'm really not fond of that.

I also proposed a feature flag, hole_birth_fix, in Illumos #7175, which has no purpose other than to let you safely use hole_birth data newer than the txg that feature flag was enabled, with the presumption that the fixes for illumos 6513 and 7176 are both merged at the same time/before that flag is integrated. I've not made a pull req because I wanted to get people's opinions on using a feature flag for something like this, but I don't see a cleaner option for letting people safely use hole_birth after a certain point while preventing you from "accidentally" importing r/w on an unfixed system.

If there's interest, I have the code for this sitting in a branch and could cut a pull request for it, I just figured it'd be less acrimonious to discuss it with people before trying to get it merged somewhere.

@behlendorf behlendorf modified the milestones: 0.6.5.8, 0.7.0 Aug 15, 2016
@behlendorf
Copy link
Contributor

@rincebrain thanks for refreshing this. I've squashed and merged the updated patch to master and I do think it would be prudent to cherry pick this change for the 0.6.5.8 release and enable it by default as you originally proposed. I've tagged this 0.6.5.8 so we don't forget. We'll definitely want to get this fixed correctly on the master development branch before the next major release gets tagged.

Thanks for opening an issue on the illumos about adding a feature flag for this. Personally, I'd like to avoid that if possible since it's code we'll need to maintain forever and poses a potential portability issue.

@rincebrain
Copy link
Contributor Author

I'm not too fond of the idea either, TBH, but I don't see a more reasonable way to safely delineate "after this txg, we promise we fixed the bugs" without requiring administrator intervention and manual detection of the issue.

@ilovezfs
Copy link
Contributor

This doesn't really make sense to me. Bugs are bugs. We need to move on.

@Ringdingcoder
Copy link

Isn't this also necessary so that it also works on @hole_birth enabled pools?

--- a/module/zfs/dmu_traverse.c
+++ b/module/zfs/dmu_traverse.c
@@ -256,7 +256,7 @@ traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp,
                        zb->zb_object == DMU_META_DNODE_OBJECT) &&
                        td->td_hole_birth_enabled_txg <= td->td_min_txg)
                        return (0);
-       } else if (bp->blk_birth <= td->td_min_txg) {
+       } else if (!ignore_hole_birth && bp->blk_birth <= td->td_min_txg) {
                return (0);
        }

@Ringdingcoder
Copy link

Hmm, forget what I said ;). I guess this would make all sends non-incremental. I missed that it is called blk_birth, not hole_birth.

nedbass pushed a commit to nedbass/zfs that referenced this pull request Aug 26, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
@pcd1193182
Copy link
Contributor

Just as an FYI to folks, OpenZFS is getting a version of this patch that defaults to 1; the community there feels that correctness needs to be job 1, so we're effectively disabling hole birth by default until a solution can be found. There are some good ideas for a solution already (which I will probably be implementing, if the community agrees with them); if you have any, feel free to join the discussion in the openzfs dev list, or in the PR at openzfs/openzfs#188

nedbass pushed a commit to nedbass/zfs that referenced this pull request Sep 3, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
nedbass pushed a commit to nedbass/zfs that referenced this pull request Sep 5, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
nedbass pushed a commit to nedbass/zfs that referenced this pull request Sep 5, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
tuxoko pushed a commit to tuxoko/zfs that referenced this pull request Sep 8, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
nedbass pushed a commit to nedbass/zfs that referenced this pull request Sep 9, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
ggzengel referenced this pull request Sep 12, 2016
META file and RPM release log updated.

Signed-off-by: Ned Bass <[email protected]>
DeHackEd pushed a commit to DeHackEd/zfs that referenced this pull request Oct 19, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
DeHackEd pushed a commit to DeHackEd/zfs that referenced this pull request Oct 29, 2016
Adds a module option which disables the hole_birth optimization
which has been responsible for several recent bugs, including
issue openzfs#4050.

Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48
Signed-off-by: Rich Ercolani <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes openzfs#4833
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants