diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2020-05-15 11:29:36 +0530 |
---|---|---|
committer | Krutika Dhananjay <kdhananj@redhat.com> | 2020-06-15 12:12:00 +0000 |
commit | cf7298e2db5a18cdba70b23a8e94952a2aed7280 (patch) | |
tree | 89717c32647a88d723fd1f265cb1c9feb8020a8b /tests | |
parent | dcbf54581717d10cf82cdce9bc08415ba1e1d19b (diff) |
features/shard: Aggregate size, block-count in iatt before unwinding setxattr
Posix translator returns pre and postbufs in the dict in {F}SETXATTR fops.
These iatts are further cached at layers like md-cache.
Shard translator, in its current state, simply returns these values without
updating the aggregated file size and block-count.
This patch fixes this problem.
Change-Id: I4da0eceb4235b91546df79270bcc0af8cd64e9ea
Fixes: #1243
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
(cherry picked from commit 29ec66c6ab77e2d6893c6e213a3d1fb148702c99)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bugs/shard/issue-1243.t | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/bugs/shard/issue-1243.t b/tests/bugs/shard/issue-1243.t new file mode 100644 index 00000000000..b0c092cdb45 --- /dev/null +++ b/tests/bugs/shard/issue-1243.t @@ -0,0 +1,31 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 $H0:$B0/${V0}{0,1} +TEST $CLI volume set $V0 features.shard on +TEST $CLI volume set $V0 features.shard-block-size 4MB +TEST $CLI volume set $V0 performance.quick-read off +TEST $CLI volume set $V0 performance.io-cache off +TEST $CLI volume set $V0 performance.read-ahead off +TEST $CLI volume set $V0 performance.strict-o-direct on +TEST $CLI volume start $V0 + +TEST $GFS --volfile-id=$V0 --volfile-server=$H0 $M0 + +TEST $CLI volume set $V0 md-cache-timeout 10 + +# Write data into a file such that its size crosses shard-block-size +TEST dd if=/dev/zero of=$M0/foo bs=1048576 count=8 oflag=direct + +# Execute a setxattr on the file. +TEST setfattr -n trusted.libvirt -v some-value $M0/foo + +# Size of the file should be the aggregated size, not the shard-block-size +EXPECT '8388608' stat -c %s $M0/foo + +cleanup |