| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
Today the main users of client uuid are protocol layers, locks, leases.
Protocol layers requires each client uuid to be unique, even across
connects and disconnects. Locks and leases on the server side also use
the same client uid which changes across file migrations. Which makes the graph
switch and file migration tedious for locks and leases.
file migration across bricks becomes difficult as client uuid for the same
client, is different on the other brick.
The exact set of issues exists for leases as well.
Solution would be to introduce a constant in the client-uid string which
the locks and leases can use to identify the owner client across bricks.
Client uuid currently:
%s(ctx uuid)-%s(protocol client name)-%d(graph id)%s(setvolume count/reconnect count)
Proposed Client uuid:
"CTX_ID:%s-GRAPH_ID:%d-PID:%d-HOST:%s-PC_NAME:%s-RECON_NO:%s"
- CTX_ID: This is will be constant per client.
- GRAPH_ID, PID, HOST, PC_NAME(protocol client name), RECON_NO(setvolume count)
remains the same.
Change-Id: Ia81d57a9693207cd325d7b26aee4593fcbd6482c
BUG: 1369028
Signed-off-by: Susant Palai <spalai@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
issue: Calling "mq_inode_ctx_get" without checking return value
function: marker_rename_unwind
fix: typecasted the return value of function to void
Change-Id: I552b1d76df434dfc3d9c2273ec63ccc4b9f960f2
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The trusted.SGI_ACL_FILE appears to set posix
ACLs on the linkto file that is a target of
file migration. This can mess up file permissions
and cause linkto identification to fail.
Now we remove all ACL xattrs from the results of
the listxattr call on the source before setting them
on the target.
Change-Id: I56802dbaed783a16e3fb90f59f4ce849f8a4a9b4
BUG: 1514329
Signed-off-by: N Balachandran <nbalacha@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
In an arbiter volume, lookup was being served from one of the sink
bricks (source brick was down). shard uses the iatt values from lookup cbk
to calculate the size and block count, which in this case were incorrect
values. shard_local_t->last_block was thus initialised to -1, resulting
in an infinite while loop in shard_common_resolve_shards().
Fix:
Use client quorum logic to allow or fail the lookups from afr if there
are no readable subvolumes. So in replica-3 or arbiter vols, if there is
no good copy or if quorum is not met, fail lookup with ENOTCONN.
With this fix, we are also removing support for quorum-reads xlator
option. So if quorum is not met, neither read nor write txns are allowed
and we fail the fop with ENOTCONN.
Change-Id: Ic65c00c24f77ece007328b421494eee62a505fa0
BUG: 1467250
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
When eager-lock is on, and two writes happen in parallel on a FD
we were observing the following behaviour:
- First write fails on one data brick
- Since the post-op is not yet happened, the inode refresh will get
both the data bricks as readable and set it in the inode context
- In flight split brain check see both the data bricks as readable
and allows the second write
- Second write fails on the other data brick
- Now the post-op happens and marks both the data bricks as bad and
arbiter will become source for healing
Fix:
Adding one more variable called write_suvol in inode context and it
will have the in memory representation of the writable subvols. Inode
refresh will not update this value and its lifetime is pre-op through
unlock in the afr transaction. Initially the pre-op will set this
value same as read_subvol in inode context and then in the in flight
split brain check we will use this value instead of read_subvol.
After all the checks we will update the value of this and set the
read_subvol same as this to avoid having incorrect value in that.
Change-Id: I2ef6904524ab91af861d59690974bbc529ab1af3
BUG: 1482064
Signed-off-by: karthik-us <ksubrahm@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Problem : Overwritting the value of ret in extract_db_params.
Fix : The value is used in out.
Change-Id: Ib7bee999c6f19e0c83ef47deab61835977162bd5
BUG: 789278
Signed-off-by: Subha sree Mohankumar <smohanku@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Coverity issues fixed in this patch:
254, 256, 295, 791, 546
from: https://download.gluster.org/pub/gluster/glusterfs/static-analysis/
master/glusterfs-coverity/2017-10-30-9aa574a5/html/
Change-Id: I44b7d307a3434040125d8b1d6fb18221f30f678d
BUG: 789278
Signed-off-by: hari gowtham <hgowtham@redhat.com>
|
|
|
|
|
|
|
|
|
| |
Add new fields used by GD2 to the upcall xlator options.
Updates #302
Change-Id: Ia684648aa06312ca9649f00af17575162adb4996
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
|
|
|
|
|
|
|
| |
Updates: #302
Change-Id: Ib401eb6fa187ab2498de8b5cdf4686e388192208
Signed-off-by: hari gowtham <hgowtham@redhat.com>
|
|
|
|
|
|
|
| |
Updates #302
Change-Id: Ifb604914a5d8b5c47ea2de0c026043b71a783387
Signed-off-by: Kaushal M <kaushal@redhat.com>
|
|
|
|
|
|
|
| |
Updates: #302
Change-Id: Ibbf0f99d4b81a5e9a5ccee1889214b74f083a7db
Signed-off-by: Aravinda VK <avishwan@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
With https://review.gluster.org/18059 introducing new fields into the
volume_option structure, this change takes care of the changes required
at the barrier side.
Updates #302
Change-Id: If991df10b130c762a44883668a00e49943a508f8
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
|
|
|
| |
Updates #302
Change-Id: I320eabf0c83295e90a312316a8373ccf5bf91dc4
Signed-off-by: Kotresh HR <khiremat@redhat.com>
|
|
|
|
|
|
|
| |
watchlists should not over-write values gathered in previous invocation.
Change-Id: I5634930d20e720ad6509b03a64360d7320800565
Signed-off-by: Amar Tumballi <amarts@redhat.com>
|
|
|
|
|
| |
Change-Id: I2dd0dbb1949a8cab0a40e08f39182366a8a44990
Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
|
|
|
|
|
| |
Change-Id: Ieb3d1910f0284bd951089c197abc569ae95e5bcd
Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
|
|
|
|
|
|
|
|
|
| |
fix for the coverity id:
258, 162
Change-Id: I35ba21e37e186b7c1ce54faf5b24f48858e6fc70
BUG: 789278
Signed-off-by: hari gowtham <hgowtham@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
issue: Calling "chdir" without checking return value
function: gf_fuse_unmount_daemon
fix: typecasted return value of function to void.
Change-Id: I5f06fbe886a35c2d4c9f763eeb01771e9451f232
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
| |
This patch fixes coveruty issues 737,738,172,188,728,198,235,35.
Change-Id: I632ddc5edbfb03bc81ce27f02886b8e262c1d946
BUG: 789278
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
|
| |
Change-Id: Idfc62026ca50aaf8767f093b4daefd7119564a1f
Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes issues 230,592,593,110,63 from [1]
[1] https://download.gluster.org/pub/gluster/glusterfs/static-analysis/master/glusterfs-coverity/2017-10-30-9aa574a5/html/
Note: Resolve FORWARD_NULL coverity issue in glusterfs_ctx_new is
also fixed with this patch.
BUG: 789278
Change-Id: Ic4199a144a14cc9ead7366fb1c9699197141bc86
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes get-state CLI related coverity issues 477, 511, 515, 523,
526 and 527 from the report at [1]
[1] https://download.gluster.org/pub/gluster/glusterfs/static-analysis/master/glusterfs-coverity/2017-10-30-9aa574a5/html/
Change-Id: Ieb6f64c9035b4d9338d9515de003d607b7a4e9bc
BUG: 789278
Signed-off-by: Samikshan Bairagya <samikshan@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Structured logging infra is available in logging library with
issue #240. Log messages with dynamic content are identified and
converted to structured logging format(`gf_msg` to `gf_smsg` and
`gf_log` to `gf_slog`)
BUG: 1501054
Change-Id: I5fccc354730c07cb9ae444d0b959d1d72bd9be49
Signed-off-by: Aravinda VK <avishwan@redhat.com>
|
|
|
|
|
|
|
|
| |
Replaced strcpy, strcat with strncpy, strncat calls.
Change-Id: Ibf46a2b5ae4a0dd1632be46d6fe3597f6ace7a41
BUG: 789278
Signed-off-by: Kamal Mohanan <kmohanan@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 'setkey' will be used as the key by GD2 when setting the option
during volgen. 'setkey' also supports using varstrings.
This is mainly to be used for options, which use a different key for
'volume set' and in volfiles. For eg. the 'auth.*' options of
protocol/server.
The protocol/server xlator has been updated to make use of this for the
auth.allow and auth.reject options.
Updates #302
Change-Id: I1fd2fd69625c9db48595bd3f494c221625255169
Signed-off-by: Amar Tumballi <amarts@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issue:
Glusterevents daemon hardcodes glusterd working directory
even though it can be changed later in .vol file
which causes breaks in the code.
Fix: Use python subprocess module to get the working directory
of gluster daemon in eventsapiconf.py.in.
Change-Id: I5e92185604f8c8aeb77dabdc00f9ea0f8e92c88d
BUG: 1512455
Signed-off-by: Vishal Pandey <vishpandey2014@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
function: glusterd_store_retrieve_options
issue: Calling "gf_store_iter_destroy" without checking return value
fix: typecasted the return value of the function to void
Change-Id: I6dc4f4308b1eca8d6ee85834a1530ff356c73898
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fixed Python pep8 issues
- Removed dead code
- Rewritten configuration management
- Rewritten Arguments/subcommands handling
- Added Args upgrade to accommodate all these changes without changing
glusterd code
- use of md5 removed, which was used to hash the brick path for workdir
Both Master and Slave nodes will have subdir for session in the
format "<mastervol>_<primary_slave_host>_<slavevol>
$GLUSTER_LOGDIR/geo-replication/<mastervol>_<primary_slave_host>_<slavevol>
$GLUSTER_LOGDIR/geo-replication-slaves/<mastervol>_<primary_slave_host>_<slavevol>
Log file paths renamed since session info is available with directory
name itself.
$LOG_DIR_MASTER/
- gsyncd.log - Gsyncd, Worker monitor logs
- mnt-<brick-path>.log - Aux mount logs, mounted by each worker
- changes-<brick-path>.log - Changelog related logs(One per brick)
$LOG_DIR_SLAVE/
- gsyncd.log - Slave Gsyncd logs
- mnt-<master-node>-<master-brick-path>.log - Aux mount logs,
mounted for each connection from master-node:master-brick
- mnt-mbr-<master-node>-<master-brick-path>.log - Same as above,
but mountbroker setup
Fixes: #73
Change-Id: I2ec2a21e4e2a92fd92899d026e8543725276f021
Signed-off-by: Aravinda VK <avishwan@redhat.com>
|
|
|
|
|
|
|
|
|
| |
The op-version used for the new option was wrong. It has been set
to 3.13.0.
Change-Id: I88fbd7834e4a8018c8906303e734c251e90be8cf
BUG: 1502610
Signed-off-by: Xavier Hernandez <jahernan@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
function: stripe_entry_self_heal
issue: Execution cannot reach this statement: "dict_unref(xdata);"
fix: removed the 'if' condition and the corresponding actions because if the execution reaches this statement, then the value of xdata will always be NULL
Change-Id: Iebc825339e2e1236b92bed39d81a1a9aba10164e
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
issue: Execution cannot reach this statement: "rsp.op_errno = gf_errno_to_...".
function:__server_event_notify
fix: removed the if statement and the corresponding actions. Also, the variable was not being used anywhere else, so removed its declaration as well
Change-Id: I85259e276c482cc9c98b1a829426bcec7412ce3f
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
The data is not getting synced if master witnessed
IO as below.
1. echo "test_data" > f1
2. ln f1 f2
3. mv f2 f3
4. unlink f1
On master, 'f3' exists with data "test_data" but on
slave, only f3 exists with zero byte file without
backend gfid link.
Cause:
On master, since 'f2' no longer exists, the hardlink
is skipped during processing. Later, on trying to sync
rename, since source ('f2') doesn't exist, dst ('f3')
is created with same gfid. But in this use case, it
succeeds but backend gfid would not have linked as 'f1'
exists with the same gfid. So, rsync would fail with
ENOENT as backend gfid is not linked with 'f3' and 'f1'
is unlinked.
Fix:
On processing rename, if src doesn't exist on slave,
don't blindly create dst with same gfid. The gfid
needs to be checked, if it exists, hardlink needs
to be created instead of mknod.
Thanks Aravinda for helping in RCA :)
Change-Id: I5af4f99798ed1bcb297598a4bc796b701d1e0130
Signed-off-by: Kotresh HR <khiremat@redhat.com>
BUG: 1512483
Reporter: dimitri.ars@gmail.com
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: execution cannot enter into if block since the condition
!address is always false.
Fix: removing if block solves it.
Change-Id: I47b4beca7bdc095900b46e3f5a5cb9629aa2a4d7
BUG: 789278
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch solves a detection problem in configure.ac that prevented
that compilation detects builtin __atomic or __sync functions.
It also adds more atomic types and support for other atomic functions.
An special case has been added to support 64-bit atomics on 32-bit
systems. The solution is to fallback to the mutex solution only for
64-bit atomics, but smaller atomic types will still take advantage
of builtins if available.
Change-Id: I6b9afc7cd6e66b28a33278715583552872278801
BUG: 1510397
Signed-off-by: Xavier Hernandez <jahernan@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function: glusterd_volume_rebalance_use_rsp_dict
problem: Execution cannot reach this statement: "goto out;"
fix: removed the condition 'if(!ctx_dict)' and the corresponding action 'goto out;' because it will never be executed.
reason: if the execution reaches this condition, then the value of '!ctx_dict' will always be false otherwise the execution will reach the 'out'
label, skipping the execution of this conditional statement.
html link of issue: https://download.gluster.org/pub/gluster/glusterfs/static-analysis/master/glusterfs-coverity/2017-11-10-0f524f07/html/1/99glusterd-utils.c.html#error
Change-Id: I7ab6b2386bb01c54edd872f9f83bb8d2a4cd499f
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
issue: Calling "recursive_rmdir" without checking return value
fix: typecasted return value of function 'recursive_rmdir' to void
Change-Id: Ie95c2a2c503bb247afa69823d0043c3af5e036e8
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function: glusterd_import_volinfo
problem: Calling strncpy with a maximum size argument of 256 bytes on destination array "new_volinfo->parent_volname" of size 256 bytes might leave the destination string unterminated.
fix: The third argument of strncpy specifies the number of characters to be copied from the source string to the destination string. To make sure that the final string in destination is always null terminated, we copy 1 less character than the total capacity of the destination array and the last element of the array will be filled by '/0' automatically by the strncpy function.
html link of issue: https://download.gluster.org/pub/gluster/glusterfs/static-analysis/master/glusterfs-coverity/2017-11-10-0f524f07/html/1/39glusterd-utils.c.html#error
Change-Id: I76b0d10e6a932b0885531c9be3c4f4ce7239f3e1
BUG: 789278
Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Coverity Id:719,748,761
problem : The value of "ret" is overwritten in init_db and
add_conection_node
Change-Id: Iade8ca8d61c5e25e8c311b1375219f5f61d51bc3
BUG: 789278
Signed-off-by: Subha sree Mohankumar <smohanku@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Problem : Overwriting previous write to "ret" with value "EVENT_SEND_OK"
before itr can be used.
Fix: The value of ret is used in out.
Change-Id: I2cdb32e441c85c94de30de89a7a4121fd54d1acd
BUG: 789278
Signed-off-by: Subha sree Mohankumar <smohanku@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Coverity ID: 539
Coverity ID: 542
Coverity ID: 365
Coverity ID: 366
Coverity ID: 502
Coverity ID: 76
Change-Id: I0369856e8958e167a43065801096432b8855c114
BUG: 789278
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Error: DEADCODE:
xlators/features/changelog/lib/src/gf-changelog-journal-handler.c:524:
dead_error_begin: Execution cannot reach this statement: "default:".
Error: DEADCODE:
xlators/features/changelog/lib/src/gf-history-changelog.c:984:
dead_error_line: Execution cannot reach the expression "to" inside
this statement: "if (!from || !to)
ret = -1;".
Error: REVERSE_INULL:
xlators/features/changelog/lib/src/gf-changelog-journal-handler.c:678:
check_after_deref: Null-checking "entry" suggests that it may be null,
but it has already been dereferenced on all paths leading to the
check.
Error: STACK_USE:
xlators/features/changelog/lib/src/gf-changelog-journal-handler.c:275:
stack_use_local_overflow: Local variable "ascii" uses 12288 bytes of
stack space, which exceeds the maximum single use of 10000 bytes.
Error: STACK_USE:
xlators/features/changelog/lib/src/gf-changelog-journal-handler.c:167:
stack_use_local_overflow: Local variable "ascii" uses 12288 bytes of
stack space, which exceeds the maximum single use of 10000 bytes.
Error: STRING_NULL:
xlators/features/changelog/lib/src/gf-changelog-journal-handler.c:589:9:
string_null_sink_parm_call: Passing parameter "from_path" to "open"
which expects a null-terminated string.
Error: UNUSED_VALUE:
xlators/features/changelog/lib/src/gf-history-changelog.c:628:
assigned_value: Assigning value "-1" to "ret" here, but that stored
value is overwritten before it can be used.
Error: STRING_NULL:
xlators/features/changelog/lib/src/gf-history-changelog.c:518:
string_null_argument: Function "sys_pread" does not terminate string
"*ccd->changelog".
BUG: 789278
Change-Id: I1414ec6d4a118ce0c14df4dbe50995c85fe3ecf7
Signed-off-by: Aravinda VK <avishwan@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem: Sometime gluster daemons like glustershd can consume a lot of cpu and/
or memory if there is a large amount of data/ entries to be healed.
Solution: Until we have some form of throttling/ QoS mechanisms built into
gluster, we can use control groups for regulating cpu and memory of any gluster
daemon using control-cpu-load.sh and control-mem.sh scripts respectively.
Test: To test the control-cpu-load.sh script follow below procedure:
1) Setup distribute replica environment
2) Selfheal daemon off
3) Down one node from replica nodes
4) Create millions of files from mount point
5) Start down node
6) Check cpu usage for shd process in top command
7) Run script after provide shd pid with CPU quota value
8) Check again cpu usage for shd process in top command
Note: control-mem.sh script can cap the memory usage of the process to the set
limit, beyond which the process gets blocked. It resumes either when the memory
usage comes down or if the limit is increased.
BUG: 1496335
Change-Id: Id73c36b73ca600fa9f7905d84053d1e8633c996f
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
When we trigger the heal info split-brain command the o/p is not
streamed as it is received, but dumped at the end for all the bricks
together. This gives a perception that the command is hung.
Fix:
When we get a split brain entry while crawling throught the pending
heal entries, flush that immediately so that it prints the output
in a stream fashion and doesn't look like the cli is hung.
Change-Id: I7547e86b83202d66616749b8b31d4d0dff0abf07
BUG: 1506104
Signed-off-by: karthik-us <ksubrahm@redhat.com>
|
|
|
|
|
|
| |
Change-Id: I04c35305bfb663eabbf715eee78695adfd4a2d20
BUG: 1511310
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
|
|
|
|
|
|
| |
If geo-rep is configured on volume, don't allow
to disable changelog.
Change-Id: I7d1ba8b2939c8fe6ee6c59fb923d9aa1bdab553c
BUG: 1503227
Signed-off-by: Kotresh HR <khiremat@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes coverity issue 421
Problem: #include file "glusterd-utils.h" includes itself,
glusterd-utils.h -> glusterd-peer-utils.h -> glusterd-utils.h
Fix: include of glusterd-utils.h into glusterd-peer-utils.c instead
of glusterd-peer-utils.h.
Change-Id: I164732dfb1f64636577765124ddc5361ff0f1cc5
BUG: 789278
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Issue: pid is written into glusterd.pid by child process instead of
parent process while forking.
Fix: After fork returns child pid to parent process, it falls under
default case of switch statement, call glusterfs_pidfile_update()
in default case instead of postfork label.
Change-Id: I41b616c140592bf117601bc451dfd8b934a5b640
BUG: 1509340
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
|
|
|
|
| |
This patch fixes coverity issues 695,555,263
Change-Id: I3577cbc793b6652b24cc719037db2bdd5e27f196
BUG: 789278
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Coverity ID: 498
Coverity ID: 756
Coverity ID: 764
Coverity ID: 553
Coverity ID: 562
Coverity ID: 765
Coverity ID: 731
Coverity ID: 545
Coverity ID: 781
Change-Id: I5922db462ba3f71397ae097d7e56739c335114d3
BUG: 789278
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
Consider an EC volume with configuration 4 + 2.
The stripe size for this would be 512 * 4 = 2048.
That means, 2048 bytes of user data stored in one
stripe. Let's say 2048 + 512 = 2560 bytes are
already written on this volume. 512 Bytes would
be in second stripe. Now, if there are sequential
writes with offset 2560 and of size 1 Byte, we have
to read the whole stripe, encode it with 1 Byte and
then again have to write it back. Next, write with
offset 2561 and size of 1 Byte will again
READ-MODIFY-WRITE the whole stripe. This is causing
bad performance because of lots of READ request
travelling over the network.
There are some tools and scenario's where such kind
of load is coming and users are not aware of that.
Example: fio and zip
Solution:
One possible solution to deal with this issue is to
keep last stripe in memory. This way, we need not to
read it again and we can save READ fop going over the
network. Considering the above example, we have to
keep last 2048 bytes (maximum) in memory per file.
Change-Id: I3f95e6fc3ff81953646d374c445a40c6886b0b85
BUG: 1471753
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|