Bug 1210449
Summary: | weak-modules uses dd extremely inefficiently | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Gordan Bobic <gordan> | ||||||
Component: | kmod | Assignee: | David Shea <dshea> | ||||||
Status: | CLOSED ERRATA | QA Contact: | Shaohui Deng <shdeng> | ||||||
Severity: | unspecified | Docs Contact: | |||||||
Priority: | unspecified | ||||||||
Version: | 7.1 | CC: | ccui, lilu | ||||||
Target Milestone: | rc | ||||||||
Target Release: | --- | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | kmod-20-5 | Doc Type: | Bug Fix | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2015-11-19 03:31:31 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: | |||||||||
Attachments: |
|
Created attachment 1025465 [details]
use skipcpio to strip early_cpio
Thanks for the patch. Actually, what I could do instead is use dracut's skipcpio (in /usr/lib/dracut) to strip off the early cpio image and then just remove that implementation of cpio in shell entirely. That should speed things up a good bit. Patch attached.
Is skipcpio faster than dd count=1 (or close enough that it doesn't matter)? Almost certainly, since it would also be replacing the three other dd calls called for each of the half-dozen or so files in early_cpio. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2119.html |
Created attachment 1012781 [details] weak-modules dd ibs/skip modification Description of problem: The /sbin/weak-modules script invokes dd to work on the initramfs image as follows: dd if="$input" of="${tmpdir}/post_early_cpio.img" ibs=1 skip="$(cpio_len "$input")" 2>/dev/null This is extremely inefficient because it iterates byte by byte through the whole initramfs image to skip the first $(cpio_len $input) bytes. This takes minutes even on a high end x86-64 machine. What would be far more sensible is to do the following: dd if="$input" of="${tmpdir}/post_early_cpio.img" skip=1 ibs="$(cpio_len "$input")" 2>/dev/null which works in blocks of size $(cpio_len $input) and skips the first one. Working on blocks 10s of 1000s of times bigger, this takes a fraction of a second. Version-Release number of selected component (if applicable): kmod-14-10.el7.x86_64 Attached is a patch to fix this.