Bug 1640392

Summary: io-stats: garbage characters in the filenames generated
Product: [Community] GlusterFS Reporter: Shyamsundar <srangana>
Component: io-statsAssignee: bugs <bugs>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 5CC: bugs, nbalacha
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-5.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1640165 Environment:
Last Closed: 2018-10-23 15:20:19 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: 1640165    
Bug Blocks:    

Description Shyamsundar 2018-10-18 00:31:38 UTC
+++ This bug was initially created as a clone of Bug #1640165 +++

Description of problem:


For a 2x2 volume with all bricks on a single node and the client mounted on the same node , 

setfattr -n trusted.io-stats-dump -v /tmp/io-stats-pre.txt /mnt/gluster

generates:


-rw-rw-rw-. 1 root root   12839 Oct 17 15:40 -tmp-io-stats-pre.txt????et-req.vol
-rw-rw-rw-. 1 root root   12979 Oct 17 15:40 -tmp-io-stats-pre.txt????fid.vol2-i
-rw-rw-rw-. 1 root root   12979 Oct 17 15:40 -tmp-io-stats-pre.txt????o.vol2-io-




Version-Release number of selected component (if applicable):


How reproducible:
Consistently

Steps to Reproduce:
1. Create a 2x2 volume with all bricks on a single node
2. Fuse mount the volume on the same server node
3. setfattr -n trusted.io-stats-dump -v /tmp/io-stats-pre.txt /mnt/gluster

Actual results:


Expected results:

Additional info:

--- Additional comment from Worker Ant on 2018-10-17 09:26:34 EDT ---

REVIEW: https://review.gluster.org/21442 (debug/io-stats: io stats filenames contain garbage) posted (#1) for review on master by N Balachandran

--- Additional comment from Nithya Balachandran on 2018-10-17 09:46:22 EDT ---

RCA:

dict_unserialize does not null terminate values. conditional_dump () uses snprintf to create the filename causing a lot of garbage characters to be included in the buffer.

Fix: Use memcpy.

--- Additional comment from Worker Ant on 2018-10-17 19:43:33 EDT ---

COMMIT: https://review.gluster.org/21442 committed in master by "Shyamsundar Ranganathan" <srangana> with a commit message- debug/io-stats: io stats filenames contain garbage

As dict_unserialize does not null terminate the value,
using snprintf adds garbage characters to the buffer
used to create the filename.
The code also used this->name in the filename which
will be the same for all bricks for a volume. The
files were thus overwritten if a node contained
multiple bricks for a volume. The code now uses
the conf->unique instead if available.

Change-Id: I2c72534b32634b87961d3b3f7d53c5f2ca2c068c
fixes: bz#1640165
Signed-off-by: N Balachandran <nbalacha>

Comment 1 Worker Ant 2018-10-18 00:33:30 UTC
REVIEW: https://review.gluster.org/21444 (debug/io-stats: io stats filenames contain garbage) posted (#1) for review on release-5 by Shyamsundar Ranganathan

Comment 2 Worker Ant 2018-10-18 12:48:48 UTC
COMMIT: https://review.gluster.org/21444 committed in release-5 by "Shyamsundar Ranganathan" <srangana> with a commit message- debug/io-stats: io stats filenames contain garbage

As dict_unserialize does not null terminate the value,
using snprintf adds garbage characters to the buffer
used to create the filename.
The code also used this->name in the filename which
will be the same for all bricks for a volume. The
files were thus overwritten if a node contained
multiple bricks for a volume. The code now uses
the conf->unique instead if available.

Change-Id: I2c72534b32634b87961d3b3f7d53c5f2ca2c068c
fixes: bz#1640392
Signed-off-by: N Balachandran <nbalacha>
(cherry picked from commit 219cd649fdbd7bfd6c2268a0a4f66bcc15918e31)

Comment 3 Shyamsundar 2018-10-23 15:20:19 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-5.0, please open a new bug report.

glusterfs-5.0 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] https://lists.gluster.org/pipermail/announce/2018-October/000115.html
[2] https://www.gluster.org/pipermail/gluster-users/