Bug 1099955
Summary: | self-heal process can sometimes create directories instead of symlinks for the root gfid file in .glusterfs | ||
---|---|---|---|
Product: | [Community] GlusterFS | Reporter: | Kaleb KEITHLEY <kkeithle> |
Component: | posix | Assignee: | Vijay Bellur <vbellur> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | |
Severity: | high | Docs Contact: | |
Priority: | unspecified | ||
Version: | 3.4.3 | CC: | bjoern.teipel, bugs, gluster-bugs, jahernan, jdarcy, joe, laurent.chouinard, pkarampu, vbellur |
Target Milestone: | --- | Keywords: | Reopened |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | glusterfs-3.4.5beta2 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | 859581 | Environment: | |
Last Closed: | 2015-01-12 09:14:52 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: | 859581 | ||
Bug Blocks: | 867330, 1055707, 1066689, 1095324 |
Description
Kaleb KEITHLEY
2014-05-21 15:30:02 UTC
REVIEW: http://review.gluster.org/6737 (storage/posix: do not dereference gfid symlinks before posix_handle_mkdir_hashes()) posted (#3) for review on release-3.4 by Xavier Hernandez (xhernandez) COMMIT: http://review.gluster.org/6737 committed in release-3.4 by Kaleb KEITHLEY (kkeithle) ------ commit 4f8f96c62b21185f27d8e76912a808af80e22608 Author: Xavier Hernandez <xhernandez> Date: Thu May 23 11:13:25 2013 +0200 storage/posix: do not dereference gfid symlinks before posix_handle_mkdir_hashes() Whenever a new directory is created, its corresponding gfid file must also be created. This was done first calling MAKE_HANDLE_PATH() to get the path of the gfid file, then calling posix_handle_mkdir_hashes() to create the parent directories of the gfid, and finally creating the soft-link. In normal circumstances, the gfid we want to create won't exist and MAKE_HANDLE_PATH() will return a simple path to the new gfid. However if the volume is damaged and a self-heal is running, it is possible that we try to create an already existing gfid. In this case, MAKE_HANDLE_PATH() will return a path to the directory instead of the path to the gfid. To solve this problem, every time a path to a gfid is needed, a call to MAKE_HANDLE_ABSPATH() is made instead of the call to MAKE_HANDLE_PATH(). BUG: 1099955 Change-Id: I5bcd2b3c38d172c75946f33519e057e76d960a24 Signed-off-by: Xavier Hernandez <xhernandez> Reviewed-on: http://review.gluster.org/6737 Reviewed-by: Kaleb KEITHLEY <kkeithle> Tested-by: Gluster Build System <jenkins.com> |