diff options
author | shishir gowda <shishirng@gluster.com> | 2011-11-03 14:47:01 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2011-11-08 22:12:09 -0800 |
commit | fc9fbbc35efaa84e68e108895ad64b062feed280 (patch) | |
tree | 8020b68edb20d4df12920ca5f08e9298e296626f /xlators/cluster/dht | |
parent | 3200a2be434c462b43bf3ffe0343ddc8900c5d88 (diff) |
stripe readv_cbk: Fix stat return values
Workaround -
If the read request, does not fall to the subvolume with the largest
file size set, then we never return the correct size. This leads to
clients seeing a truncated file error.
The work around is to wipe stat being returned as part of read call.
Problem -
We were passing the stbuf returned by the first child/index, which
can be different to the size/blocks returned by stat. This led to
applications viewing the file as being truncated.
The stbuf size needs to be the largest of all results, and blocks
the aggregation from all subvolumes. (similar to stat)
BUG: 3774
Change-Id: I46c53c18b2b42b1f5b86b05555bbab73bf993476
Reviewed-on: http://review.gluster.com/666
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amar@gluster.com>
Diffstat (limited to 'xlators/cluster/dht')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/xlators/cluster/dht/src/dht-common.h b/xlators/cluster/dht/src/dht-common.h index 5d921239e..d79ed9556 100644 --- a/xlators/cluster/dht/src/dht-common.h +++ b/xlators/cluster/dht/src/dht-common.h @@ -219,7 +219,6 @@ struct dht_disk_layout { }; typedef struct dht_disk_layout dht_disk_layout_t; -#define WIPE(statp) do { typeof(*statp) z = {0,}; if (statp) *statp = z; } while (0) #define ENTRY_MISSING(op_ret, op_errno) (op_ret == -1 && op_errno == ENOENT) |