Red Hat Bugzilla – Bug 1258334
Sharding - Unlink of VM images can sometimes fail with EINVAL
Last modified: 2016-06-16 09:34:27 EDT
Description of problem:
Thanks to Paul Cuzner for reporting this issue.
rm -rf on VM images in sharded volumes sometimes fails with EINVAL.
rhev-data-center-mnt-glusterSD-gprfc085-glfs.rhev-rhss.lab:vmdomain.log:[2015-08-30 22:27:32.842940] W [fuse-bridge.c:1292:fuse_unlink_cbk] 0-glusterfs-fuse: 22544605: UNLINK() /2ad90339-5c1b-4b0e-b728-3df651ecd025/images/_remouLgHrB/e39cb165-831a-46cb-88da-e26cc93d9399 => -1 (Invalid argument)
rhev-data-center-mnt-glusterSD-gprfc085-glfs.rhev-rhss.lab:vmdomain.log:[2015-08-30 22:27:59.238742] W [fuse-bridge.c:1292:fuse_unlink_cbk] 0-glusterfs-fuse: 22545653: UNLINK() /2ad90339-5c1b-4b0e-b728-3df651ecd025/images/_remotGxj4J/aaa115ea-7577-4358-856e-a0101b7b94a2 => -1 (Invalid argument)
Turns out the bug is in shard_unlink_shards_do() wherein the loop that winds unlinks on individual shards must check for the inode associated with every shard to exist in memory (local->inode_list) before winding unlink on it.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
REVIEW: http://review.gluster.org/12059 (features/shard: Fix unlink failure due to non-existent shard(s)) posted (#1) for review on master by Krutika Dhananjay (firstname.lastname@example.org)
REVIEW: http://review.gluster.org/12059 (features/shard: Fix unlink failure due to non-existent shard(s)) posted (#2) for review on master by Krutika Dhananjay (email@example.com)
COMMIT: http://review.gluster.org/12059 committed in master by Vijay Bellur (firstname.lastname@example.org)
Author: Krutika Dhananjay <email@example.com>
Date: Mon Aug 31 12:43:36 2015 +0530
features/shard: Fix unlink failure due to non-existent shard(s)
Unlink of a sharded file with holes was leading to EINVAL errors
because it was being wound on non-existent shards (those blocks that
fall in the hole region). loc->inode was NULL in these cases and
dht_unlink used to fail the FOP with EINVAL for failure to fetch
cached subvol for the inode.
The fix involves winding unlink on only those shards whose corresponding
inodes exist in memory.
Signed-off-by: Krutika Dhananjay <firstname.lastname@example.org>
Reviewed-by: Pranith Kumar Karampuri <email@example.com>
Tested-by: NetBSD Build System <firstname.lastname@example.org>
Tested-by: Gluster Build System <email@example.com>
Reviewed-by: Vijay Bellur <firstname.lastname@example.org>
Fix for this BZ is already present in a GlusterFS release. You can find clone of this BZ, fixed in a GlusterFS release and closed. Hence closing this mainline BZ as well.
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-3.8.0, please open a new bug report.
glusterfs-3.8.0 has been announced on the Gluster mailinglists , packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist  and the update infrastructure for your distribution.