summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/ec/src/ec-dir-write.c
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2017-01-04 13:37:23 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2017-01-05 21:19:21 -0800
commit395c55483724912821929ff2a793e99fd7bf4e71 (patch)
tree1fff324219788367a79cec312022b1364a01f30a /xlators/cluster/ec/src/ec-dir-write.c
parent95d07a3d2d68805d93d36a447436e27c48777939 (diff)
cluster/ec: Do lookup on an existing file in link
Problem: In link fop lookup is happening on the new fop which doesn't exist so the iatt ec serves parent xlators has size as zero which leads to 'cat' giving empty output Fix: Change code so that lookup happens on the existing link instead. BUG: 1409730 Change-Id: I70eb02fe0633e61d1d110575589cc2dbe5235d76 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/16320 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Xavier Hernandez <xhernandez@datalab.es> Tested-by: Xavier Hernandez <xhernandez@datalab.es> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/cluster/ec/src/ec-dir-write.c')
-rw-r--r--xlators/cluster/ec/src/ec-dir-write.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/xlators/cluster/ec/src/ec-dir-write.c b/xlators/cluster/ec/src/ec-dir-write.c
index 1272e3dfe0d..150dc66f21b 100644
--- a/xlators/cluster/ec/src/ec-dir-write.c
+++ b/xlators/cluster/ec/src/ec-dir-write.c
@@ -178,7 +178,7 @@ int32_t ec_manager_create(ec_fop_data_t * fop, int32_t state)
/* Fall through */
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -356,9 +356,9 @@ int32_t ec_manager_link(ec_fop_data_t * fop, int32_t state)
{
case EC_STATE_INIT:
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[1], EC_UPDATE_DATA |
- EC_UPDATE_META |
- EC_INODE_SIZE);
+ ec_lock_prepare_parent_inode(fop, &fop->loc[1], &fop->loc[0],
+ EC_UPDATE_DATA | EC_UPDATE_META |
+ EC_INODE_SIZE);
ec_lock(fop);
return EC_STATE_DISPATCH;
@@ -541,7 +541,7 @@ int32_t ec_manager_mkdir(ec_fop_data_t * fop, int32_t state)
/* Fall through */
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -747,7 +747,7 @@ int32_t ec_manager_mknod(ec_fop_data_t * fop, int32_t state)
/* Fall through */
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -906,10 +906,10 @@ int32_t ec_manager_rename(ec_fop_data_t * fop, int32_t state)
{
case EC_STATE_INIT:
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0], EC_UPDATE_DATA |
- EC_UPDATE_META |
- EC_INODE_SIZE);
- ec_lock_prepare_parent_inode(fop, &fop->loc[1],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], &fop->loc[0],
+ EC_UPDATE_DATA | EC_UPDATE_META |
+ EC_INODE_SIZE);
+ ec_lock_prepare_parent_inode(fop, &fop->loc[1], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -1068,7 +1068,7 @@ int32_t ec_manager_rmdir(ec_fop_data_t * fop, int32_t state)
{
case EC_STATE_INIT:
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -1214,7 +1214,7 @@ int32_t ec_manager_symlink(ec_fop_data_t * fop, int32_t state)
{
case EC_STATE_INIT:
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);
@@ -1380,7 +1380,7 @@ int32_t ec_manager_unlink(ec_fop_data_t * fop, int32_t state)
{
case EC_STATE_INIT:
case EC_STATE_LOCK:
- ec_lock_prepare_parent_inode(fop, &fop->loc[0],
+ ec_lock_prepare_parent_inode(fop, &fop->loc[0], NULL,
EC_UPDATE_DATA | EC_UPDATE_META);
ec_lock(fop);