From 3fa71f059daf1ec1e16d80e577dbd5833ba78257 Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Tue, 19 Jul 2011 19:55:08 +0530 Subject: glusterd rebalance: use lstat() instead of stat() so the symlinks pointing to directories are not considered as directories themself and the control flows outside gluster's scope Change-Id: Iae910ce6c68886d34ae6e5efe46062481b40cd25 BUG: 3191 Reviewed-on: http://review.gluster.com/26 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- xlators/mgmt/glusterd/src/glusterd-rebalance.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'xlators') diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index a3d87d86fca..58e56f1cd16 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -127,7 +127,7 @@ gf_glusterd_rebalance_move_data (glusterd_volinfo_t *volinfo, const char *dir) snprintf (full_path, PATH_MAX, "%s/%s", dir, entry->d_name); - ret = stat (full_path, &stbuf); + ret = lstat (full_path, &stbuf); if (ret == -1) continue; @@ -181,7 +181,7 @@ gf_glusterd_rebalance_move_data (glusterd_volinfo_t *volinfo, const char *dir) } } - ret = stat (full_path, &new_stbuf); + ret = lstat (full_path, &new_stbuf); if (ret < 0) { close (dst_fd); close (src_fd); @@ -242,7 +242,7 @@ gf_glusterd_rebalance_move_data (glusterd_volinfo_t *volinfo, const char *dir) snprintf (full_path, 1024, "%s/%s", dir, entry->d_name); - ret = stat (full_path, &stbuf); + ret = lstat (full_path, &stbuf); if (ret == -1) continue; @@ -287,7 +287,7 @@ gf_glusterd_rebalance_fix_layout (glusterd_volinfo_t *volinfo, const char *dir) snprintf (full_path, 1024, "%s/%s", dir, entry->d_name); - ret = stat (full_path, &stbuf); + ret = lstat (full_path, &stbuf); if (ret == -1) continue; @@ -335,11 +335,11 @@ glusterd_defrag_start (void *data) goto out; sleep (1); - ret = stat (defrag->mount, &stbuf); + ret = lstat (defrag->mount, &stbuf); if ((ret == -1) && (errno == ENOTCONN)) { /* Wait for some more time before starting rebalance */ sleep (2); - ret = stat (defrag->mount, &stbuf); + ret = lstat (defrag->mount, &stbuf); if (ret == -1) { volinfo->defrag_status = GF_DEFRAG_STATUS_FAILED; volinfo->rebalance_files = 0; -- cgit