Bug 182057
Summary: | GFS out of memory hang due to large count of files in directory | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | [Retired] Red Hat Cluster Suite | Reporter: | Wendy Cheng <nobody+wcheng> | ||||||||
Component: | gfs | Assignee: | Wendy Cheng <nobody+wcheng> | ||||||||
Status: | CLOSED ERRATA | QA Contact: | GFS Bugs <gfs-bugs> | ||||||||
Severity: | medium | Docs Contact: | |||||||||
Priority: | medium | ||||||||||
Version: | 4 | ||||||||||
Target Milestone: | --- | ||||||||||
Target Release: | --- | ||||||||||
Hardware: | All | ||||||||||
OS: | Linux | ||||||||||
Whiteboard: | |||||||||||
Fixed In Version: | RHBA-2006-0561 | Doc Type: | Bug Fix | ||||||||
Doc Text: | Story Points: | --- | |||||||||
Clone Of: | Environment: | ||||||||||
Last Closed: | 2006-08-10 21:34:57 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
Wendy Cheng
2006-02-19 21:56:06 UTC
Created attachment 124873 [details]
gfs_malloc_leaf_free.patch
Patch 3-1:
Fixes directory delete out of memory error. Found in customer environment
where gfs_inoded is deleting a max size of hash unit (0xffff entries). It
hangs in leaf_free() during gmalloc while kmallocing 0xffff*sizeof(uint64_t)
(=512K) of memroy. It did a kmalloc, zeroed out the buffer, then copied the
zeroed contents into bh buffer and subsequently sent the bh into gfs_writei
to write out to disk. This patch removes the unnecessary kmalloc plus the
memory copy by directly zero out the bh buffer.
Created attachment 124875 [details]
gfs_malloc_split.patch
Patch 3-2:
GFS was trying to split a full-grown directory (0xffff entries) hash leaf
into two and subseqently hang. The buffer requirement 0xffff*sizeof(uint64_t)/2
= 262144 (256K) was too big for kmalloc to handle. Change them into vmalloc if
kmalloc fails.
Created attachment 124876 [details]
gfs_gmalloc_dump.patch
patch 3-3: add dump_stack() into gmalloc so we could know the culprit whenever
out of memory loop occurs.
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2006-0561.html |