summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Wareing <rwareing@fb.com>2015-11-18 20:02:40 -0800
committerJeff Darcy <jeff@pl.atyp.us>2017-08-15 15:05:59 +0000
commit233156d6fc1eabed41fcae6a877db3d66ff6f073 (patch)
treefdb3e3dc7587b95047e4ca8a4421f37b2bb49675
parent7a6cdff114fdb464fdcd73addcf9ece6383219a5 (diff)
cluster/dht: Fix rebalance bug + better logging
Summary: - Fixes edge case where lookup by gfid fails because it's not copied into the inode struct from the loc_t struct during the readdir loop - Improved logging for error conditions Test Plan: - Tested on dev server - Canaried build on <redacted> Reviewers: dph, moox, sshreyas Reviewed By: sshreyas Differential Revision: https://phabricator.fb.com/D2676693 Tasks: 9034954 Change-Id: I7f0160b391c43fc38e679fdb660cee59d2267932 Signed-off-by: Jeff Darcy <jdarcy@fb.com> Reviewed-on: https://review.gluster.org/18040 Smoke: Gluster Build System <jenkins@build.gluster.org> Tested-by: Jeff Darcy <jeff@pl.atyp.us> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
-rw-r--r--xlators/cluster/dht/src/dht-rebalance.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/xlators/cluster/dht/src/dht-rebalance.c b/xlators/cluster/dht/src/dht-rebalance.c
index ffd8bac9e4f..dc0b7dd619e 100644
--- a/xlators/cluster/dht/src/dht-rebalance.c
+++ b/xlators/cluster/dht/src/dht-rebalance.c
@@ -1328,14 +1328,25 @@ dht_migrate_file (xlator_t *this, loc_t *loc, xlator_t *from, xlator_t *to,
/* create the destination, with required modes/xattr */
ret = __dht_rebalance_create_dst_file (to, from, loc, &stbuf,
&dst_fd, xattr);
- if (ret)
- goto out;
+ if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ DHT_MSG_MIGRATE_FILE_FAILED,
+ "Migrate file failed: %s: "
+ "failed to create dest file on %s",
+ loc->path, to->name);
+ goto out;
+ }
clean_dst = _gf_true;
ret = __dht_check_free_space (to, from, loc, &stbuf, flag);
if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, 0,
+ DHT_MSG_MIGRATE_FILE_FAILED,
+ "Migrate file failed: %s: "
+ "Disk space check failed on %s",
+ loc->path, to->name);
goto out;
}
@@ -1345,7 +1356,7 @@ dht_migrate_file (xlator_t *this, loc_t *loc, xlator_t *from, xlator_t *to,
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, 0,
DHT_MSG_MIGRATE_FILE_FAILED,
- "Migrate file failed: failed to open %s on %s",
+ "Migrate file failed: %s: failed to open on %s",
loc->path, from->name);
goto out;
}
@@ -1360,7 +1371,7 @@ dht_migrate_file (xlator_t *this, loc_t *loc, xlator_t *from, xlator_t *to,
if (ret) {
gf_msg (this->name, GF_LOG_ERROR, -ret,
DHT_MSG_MIGRATE_FILE_FAILED,
- "Migrate file failed:failed to lookup %s on %s ",
+ "Migrate file failed: %s: failed to lookup %s ",
loc->path, from->name);
ret = -1;
goto out;
@@ -2427,6 +2438,9 @@ gf_defrag_get_entry (xlator_t *this, int i, struct dht_container **container,
goto out;
}
+ gf_uuid_copy (entry_loc.inode->gfid,
+ df_entry->d_stat.ia_gfid);
+
if (gf_uuid_is_null (df_entry->d_stat.ia_gfid)) {
gf_msg (this->name, GF_LOG_ERROR, 0,
DHT_MSG_GFID_NULL,