summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2015-12-23 23:37:54 +0530
committerDan Lambright <dlambrig@redhat.com>2015-12-29 15:35:16 -0800
commit137b11d616c6086b05c32089903a39334999a76e (patch)
treeefce71950e5513d19e2633def01609a4b83b2812 /xlators
parent72e736613169b778daa44e932443aaf2436432d9 (diff)
tier/unlink: symlink failed to unlink
during unlink of a file, we will get stat just after deleting the file, to see if the file is under migration or not. but this stat call will fail for symlink if the actual file was deleted. So it is better not to send stat request from client if it is a symlink as we are not migrating symlink. Change-Id: Idc033b24fa3522b5261e579889d2195b43419682 BUG: 1293963 Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com> Reviewed-on: http://review.gluster.org/13074 Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Reviewed-by: Dan Lambright <dlambrig@redhat.com> Tested-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/cluster/dht/src/tier-common.c6
-rw-r--r--xlators/storage/posix/src/posix.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/xlators/cluster/dht/src/tier-common.c b/xlators/cluster/dht/src/tier-common.c
index 40c8c9e965d..8de21df24ef 100644
--- a/xlators/cluster/dht/src/tier-common.c
+++ b/xlators/cluster/dht/src/tier-common.c
@@ -537,12 +537,16 @@ tier_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag,
}
local->flags = xflag;
- if (hashed_subvol == cached_subvol) {
+ if (IA_ISREG (loc->inode->ia_type) &&
+ (hashed_subvol == cached_subvol)) {
/*
* File resides in cold tier. We need to stat
* the file to see if it is being promoted.
* If yes we need to delete the destination
* file as well.
+ *
+ * Currently we are doing this check only for
+ * regular files.
*/
xdata = xdata ? dict_ref (xdata) : dict_new ();
if (xdata) {
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index a3e0aa26bf8..272d08f8654 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -1749,7 +1749,8 @@ posix_unlink (call_frame_t *frame, xlator_t *this,
goto out;
}
- if (xdata && dict_get (xdata, DHT_IATT_IN_XDATA_KEY)) {
+ if (IA_ISREG (loc->inode->ia_type) &&
+ xdata && dict_get (xdata, DHT_IATT_IN_XDATA_KEY)) {
fdstat_requested = 1;
}