-
Notifications
You must be signed in to change notification settings - Fork 553
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
rbd: Use assume_storage_prezeroed when formatting #4996
base: devel
Are you sure you want to change the base?
Conversation
Instead of passing lazy_itable_init=1 and lazy_journal_init=1 to mkfs.ext4, pass assume_storage_prezeroed=1 which is stronger and allows the filesystem to skip inode table zeroing completely instead of simply doing it lazily. Closes: ceph#4948 Signed-off-by: Niraj Yadav <niryadav@redhat.com>
@@ -101,7 +101,7 @@ var ( | |||
xfsHasReflink = xfsReflinkUnset | |||
|
|||
mkfsDefaultArgs = map[string][]string{ | |||
"ext4": {"-m0", "-Enodiscard,lazy_itable_init=1,lazy_journal_init=1"}, | |||
"ext4": {"-m0", "-Enodiscard,assume_storage_prezeroed=1"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
make sure that you only do this when mkfs.ext4
supports the option, you'll need to add some form of detection, ideally with something like sync.Once
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assume_storage_prezeroed
option became available in e2fsprogs 1.47.0 last year, so it should probably be "discovered" similar toxfsSupportsReflink()
.
My suggestion to do it similar to xfsSupportsReflink()
isn't viable because mkfs.ext4
doesn't include extended options in its help output, but trying with assume_storage_prezeroed=1
and falling back to lazy_itable_init=1,lazy_journal_init=1
upon parsing out Bad option(s) specified: assume_storage_prezeroed
error should work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I and Madhu had a discussion on this. Since this flag is part of e2fsprogs >= 1.47 and we have control over which version of it we bundle in the container, do we really need this check?
Sidenote: Detection is possible by parsing the semver of e2fsprogs. It is standard flag so it must be there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The check for the version isn't always reliable in the face of downstream backports.
Describe what this PR does
Instead of passing
lazy_itable_init=1
andlazy_journal_init=1
tomkfs.ext4
,pass
assume_storage_prezeroed=1
which is stronger and allows the filesystemto skip inode table zeroing completely instead of simply doing it lazily.
Closes: #4948