summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
Diffstat (limited to 'xlators')
-rw-r--r--xlators/cluster/ec/src/ec-common.c32
-rw-r--r--xlators/cluster/ec/src/ec-data.h4
2 files changed, 9 insertions, 27 deletions
diff --git a/xlators/cluster/ec/src/ec-common.c b/xlators/cluster/ec/src/ec-common.c
index ba81fc7313f..062754b2aba 100644
--- a/xlators/cluster/ec/src/ec-common.c
+++ b/xlators/cluster/ec/src/ec-common.c
@@ -884,14 +884,6 @@ ec_prepare_update_cbk (call_frame_t *frame, void *cookie,
ctx->have_version = _gf_true;
- if (ec_dict_del_array(dict, EC_XATTR_DIRTY, ctx->pre_dirty,
- EC_VERSION_SIZE) == 0) {
- ctx->post_dirty[0] += ctx->pre_dirty[0];
- ctx->post_dirty[1] += ctx->pre_dirty[1];
-
- ctx->have_dirty = _gf_true;
- }
-
if (lock->loc.inode->ia_type == IA_IFREG) {
if (ec_dict_del_number(dict, EC_XATTR_SIZE, &ctx->pre_size) != 0) {
gf_log(this->name, GF_LOG_ERROR, "Unable to get size xattr");
@@ -1107,14 +1099,12 @@ void ec_clear_inode_info(ec_fop_data_t *fop, inode_t *inode)
ctx->have_config = _gf_false;
ctx->have_version = _gf_false;
ctx->have_size = _gf_false;
- ctx->have_dirty = _gf_false;
memset(&ctx->config, 0, sizeof(ctx->config));
memset(ctx->pre_version, 0, sizeof(ctx->pre_version));
memset(ctx->post_version, 0, sizeof(ctx->post_version));
ctx->pre_size = ctx->post_size = 0;
- memset(ctx->pre_dirty, 0, sizeof(ctx->pre_dirty));
- memset(ctx->post_dirty, 0, sizeof(ctx->post_dirty));
+ memset(ctx->dirty, 0, sizeof(ctx->dirty));
unlock:
UNLOCK(&inode->lock);
@@ -1472,13 +1462,6 @@ int32_t ec_update_size_version_done(call_frame_t * frame, void * cookie,
ctx->have_size = _gf_true;
}
- if (ec_dict_del_array(xattr, EC_XATTR_DIRTY, ctx->post_dirty,
- EC_VERSION_SIZE) == 0) {
- ctx->pre_dirty[0] = ctx->post_dirty[0];
- ctx->pre_dirty[1] = ctx->post_dirty[1];
-
- ctx->have_dirty = _gf_true;
- }
if ((ec_dict_del_config(xdata, EC_XATTR_CONFIG, &ctx->config) == 0) &&
ec_config_check(fop->parent, &ctx->config)) {
ctx->have_config = _gf_true;
@@ -1541,7 +1524,7 @@ ec_update_size_version(ec_lock_link_t *link, uint64_t *version,
/* If we don't have dirty information or it has been modified, we update
* it. */
- if (!ctx->have_dirty || (dirty[0] != 0) || (dirty[1] != 0)) {
+ if ((dirty[0] != 0) || (dirty[1] != 0)) {
if (ec_dict_set_array(dict, EC_XATTR_DIRTY, dirty,
EC_VERSION_SIZE) != 0) {
goto out;
@@ -1606,9 +1589,10 @@ ec_update_info(ec_lock_link_t *link)
size = ctx->post_size - ctx->pre_size;
- /* pre_dirty[*] will be 0 if have_dirty is false */
- dirty[0] = ctx->post_dirty[0] - ctx->pre_dirty[0];
- dirty[1] = ctx->post_dirty[1] - ctx->pre_dirty[1];
+ dirty[0] = ctx->dirty[0];
+ dirty[1] = ctx->dirty[1];
+ /*Dirty is not combined so just reset it right here*/
+ memset(ctx->dirty, 0, sizeof(ctx->dirty));
if ((version[0] != 0) || (version[1] != 0) ||
(dirty[0] != 0) || (dirty[1] != 0)) {
@@ -1817,13 +1801,13 @@ void ec_lock_reuse(ec_fop_data_t *fop)
if (link->update[0]) {
ctx->post_version[0]++;
if (ec->node_mask & ~fop->mask) {
- ctx->post_dirty[0]++;
+ ctx->dirty[0]++;
}
}
if (link->update[1]) {
ctx->post_version[1]++;
if (ec->node_mask & ~fop->mask) {
- ctx->post_dirty[1]++;
+ ctx->dirty[1]++;
}
}
}
diff --git a/xlators/cluster/ec/src/ec-data.h b/xlators/cluster/ec/src/ec-data.h
index 8204cf087de..8f6d5de17a0 100644
--- a/xlators/cluster/ec/src/ec-data.h
+++ b/xlators/cluster/ec/src/ec-data.h
@@ -72,14 +72,12 @@ struct _ec_inode
gf_boolean_t have_config;
gf_boolean_t have_version;
gf_boolean_t have_size;
- gf_boolean_t have_dirty;
ec_config_t config;
uint64_t pre_version[2];
uint64_t post_version[2];
uint64_t pre_size;
uint64_t post_size;
- uint64_t pre_dirty[2];
- uint64_t post_dirty[2];
+ uint64_t dirty[2];
struct list_head heal;
};