Bug 865858
Summary: | Potentially unnecessary file opens/closes performed around xattr read/writes | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Community] Gluster-Swift | Reporter: | Peter Portante <pportant> | ||||||
Component: | utils | Assignee: | Nobody <nobody> | ||||||
Status: | MODIFIED --- | QA Contact: | |||||||
Severity: | low | Docs Contact: | |||||||
Priority: | low | ||||||||
Version: | 1.8.0 | CC: | bugs, perfbz, pportant | ||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | x86_64 | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 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: | |||||||||
Bug Blocks: | 903396, 978061 | ||||||||
Attachments: |
|
Description
Peter Portante
2012-10-12 16:36:18 UTC
I created a permanent pastebin link with the output of an strace from a GET on an object. Lines 222 - 240 are annotated to show where a read_metadata() calls starts and ends, and what do_getxattr() does for a file. Notice that 13 system calls are made. The two calls to fgetxattr in a row are the result of the pyxattr modules' behavior to first find out the size of the xattr value so that it can allocate memory for it and then fetch the full contents of it. We should be able to remove the extra stat calls as well. Probably would be helpful to actually include the link to the pastebin ... http://pastebin.test.redhat.com/110804 Here are the results of the same operation but with a patch applied to remove the extra system calls (from 13 down to 3). http://pastebin.test.redhat.com/110818 Created attachment 626189 [details]
Initial patch to remove the use of deprecated pyxattr methods.
Created attachment 626190 [details]
Actual fix to remove extra system calls.
CHANGE: http://review.gluster.org/4077 (Refactor to use pyxattr's get/set/remove methods) merged in master by Anand Avati (avati) CHANGE: http://review.gluster.org/4078 (Fix BZ 865858: remove unnecessary system calls around xattr ops) merged in master by Anand Avati (avati) |