diff options
-rw-r--r-- | tests/basic/tier/tier-file-create.t | 59 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec-dir-write.c | 16 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec-inode-write.c | 22 |
3 files changed, 78 insertions, 19 deletions
diff --git a/tests/basic/tier/tier-file-create.t b/tests/basic/tier/tier-file-create.t new file mode 100644 index 00000000000..28caacd2a5a --- /dev/null +++ b/tests/basic/tier/tier-file-create.t @@ -0,0 +1,59 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../tier.rc + + +NUM_BRICKS=3 +DEMOTE_FREQ=5 +PROMOTE_FREQ=5 + + + +# Creates a tiered volume with pure distribute hot and cold tiers +# Both hot and cold tiers will have an equal number of bricks. + +function create_dist_tier_vol () { + mkdir $B0/cold + mkdir $B0/hot + TEST $CLI volume create $V0 disperse 6 disperse-data 4 $H0:$B0/cold/${V0}{1..12} + TEST $CLI volume set $V0 performance.quick-read off + TEST $CLI volume set $V0 performance.io-cache off + TEST $CLI volume set $V0 features.ctr-enabled on + TEST $CLI volume start $V0 + TEST $CLI volume attach-tier $V0 replica 2 $H0:$B0/hot/${V0}{0..$1} + TEST $CLI volume set $V0 cluster.tier-demote-frequency $DEMOTE_FREQ + TEST $CLI volume set $V0 cluster.tier-promote-frequency $PROMOTE_FREQ + TEST $CLI volume set $V0 cluster.read-freq-threshold 0 + TEST $CLI volume set $V0 cluster.write-freq-threshold 0 + TEST $CLI volume set $V0 cluster.tier-mode test +} + + +cleanup; + +#Basic checks +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info + + +#Create and start a tiered volume +create_dist_tier_vol $NUM_BRICKS + +# Mount FUSE +TEST glusterfs -s $H0 --volfile-id $V0 $M0 + +cd $M0 + +touch FILE1 + +HPATH=`find $B0/hot/ -name FILE1 | cut -d " " -f1` +echo $HPATH + +TEST ! getfattr -n "trusted.ec.size" $HPATH +cd + +cleanup; + diff --git a/xlators/cluster/ec/src/ec-dir-write.c b/xlators/cluster/ec/src/ec-dir-write.c index 3ae17e565ed..68741137619 100644 --- a/xlators/cluster/ec/src/ec-dir-write.c +++ b/xlators/cluster/ec/src/ec-dir-write.c @@ -307,7 +307,7 @@ void ec_create(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -472,7 +472,7 @@ void ec_link(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -648,7 +648,7 @@ void ec_mkdir(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -853,7 +853,7 @@ void ec_mknod(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -1018,7 +1018,7 @@ void ec_rename(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -1163,7 +1163,7 @@ void ec_rmdir(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -1329,7 +1329,7 @@ void ec_symlink(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " @@ -1475,7 +1475,7 @@ void ec_unlink(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, "Failed to reference a " diff --git a/xlators/cluster/ec/src/ec-inode-write.c b/xlators/cluster/ec/src/ec-inode-write.c index 4bd692dff57..6aeda5a2481 100644 --- a/xlators/cluster/ec/src/ec-inode-write.c +++ b/xlators/cluster/ec/src/ec-inode-write.c @@ -231,7 +231,7 @@ ec_removexattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref (xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -317,7 +317,7 @@ ec_fremovexattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -512,7 +512,7 @@ void ec_setattr(call_frame_t * frame, xlator_t * this, uintptr_t target, fop->iatt = *stbuf; } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -593,7 +593,7 @@ void ec_fsetattr(call_frame_t * frame, xlator_t * this, uintptr_t target, fop->iatt = *stbuf; } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -666,7 +666,7 @@ ec_setxattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (dict != NULL) { - fop->dict = dict_ref(dict); + fop->dict = dict_copy_with_ref(dict, NULL); if (fop->dict == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -677,7 +677,7 @@ ec_setxattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -795,7 +795,7 @@ ec_fsetxattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (dict != NULL) { - fop->dict = dict_ref(dict); + fop->dict = dict_copy_with_ref(dict, NULL); if (fop->dict == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -806,7 +806,7 @@ ec_fsetxattr (call_frame_t *frame, xlator_t *this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -1092,7 +1092,7 @@ void ec_truncate(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -1170,7 +1170,7 @@ void ec_ftruncate(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, @@ -1656,7 +1656,7 @@ void ec_writev(call_frame_t * frame, xlator_t * this, uintptr_t target, } } if (xdata != NULL) { - fop->xdata = dict_ref(xdata); + fop->xdata = dict_copy_with_ref(xdata, NULL); if (fop->xdata == NULL) { gf_msg (this->name, GF_LOG_ERROR, 0, EC_MSG_DICT_REF_FAIL, |