summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* rpc : Change the way client uuid is builtPoornima G2017-11-203-27/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* features/marker: coverity fixKartik_Burmee2017-11-191-1/+1
| | | | | | | | | | | | 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>
* cluster/dht: Don't set ACLs on linkto fileN Balachandran2017-11-191-0/+11
| | | | | | | | | | | | | | 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>
* afr: add checks for allowing lookupsRavishankar N2017-11-186-116/+164
| | | | | | | | | | | | | | | | | | | | | | 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>
* cluster/afr: Fix for arbiter becoming sourcekarthik-us2017-11-184-6/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* features/changetimerecorder:unused value coverity fixSubha sree Mohankumar2017-11-171-2/+1
| | | | | | | | | | 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>
* tier/glusterd: coverity issues in glusterd-tier.chari gowtham2017-11-171-3/+13
| | | | | | | | | | | | 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>
* Upcall: Add new GD2 fields to upcall xlator optionsSoumya Koduri2017-11-171-2/+8
| | | | | | | | | Add new fields used by GD2 to the upcall xlator options. Updates #302 Change-Id: Ia684648aa06312ca9649f00af17575162adb4996 Signed-off-by: Soumya Koduri <skoduri@redhat.com>
* features/changetimerecorder: xlators opts improvement for GD2hari gowtham2017-11-171-12/+46
| | | | | | | Updates: #302 Change-Id: Ib401eb6fa187ab2498de8b5cdf4686e388192208 Signed-off-by: hari gowtham <hgowtham@redhat.com>
* protocol/server: Update xlator options tableKaushal M2017-11-171-13/+43
| | | | | | | Updates #302 Change-Id: Ifb604914a5d8b5c47ea2de0c026043b71a783387 Signed-off-by: Kaushal M <kaushal@redhat.com>
* features/changelog: xlators opts improvement for GD2Aravinda VK2017-11-171-9/+34
| | | | | | | Updates: #302 Change-Id: Ibbf0f99d4b81a5e9a5ccee1889214b74f083a7db Signed-off-by: Aravinda VK <avishwan@redhat.com>
* barrier: redefine the optionsAtin Mukherjee2017-11-171-2/+6
| | | | | | | | | | | 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>
* feature/bitrot: stub xlators opts for GD2Kotresh HR2017-11-171-0/+5
| | | | | | Updates #302 Change-Id: I320eabf0c83295e90a312316a8373ccf5bf91dc4 Signed-off-by: Kotresh HR <khiremat@redhat.com>
* features/index: initialize the options properlyPranith Kumar2017-11-171-3/+12
| | | | | | | watchlists should not over-write values gathered in previous invocation. Change-Id: I5634930d20e720ad6509b03a64360d7320800565 Signed-off-by: Amar Tumballi <amarts@redhat.com>
* mailmap: add mailmap entry for potatogimJi-Hyeon Gim2017-11-161-0/+1
| | | | | Change-Id: I2dd0dbb1949a8cab0a40e08f39182366a8a44990 Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
* who-wrote-glusterfs: add an alias for potatogim@potatogim.netJi-Hyeon Gim2017-11-161-0/+1
| | | | | Change-Id: Ieb3d1910f0284bd951089c197abc569ae95e5bcd Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
* tier: coverity fix for tier-common.chari gowtham2017-11-161-28/+5
| | | | | | | | | fix for the coverity id: 258, 162 Change-Id: I35ba21e37e186b7c1ce54faf5b24f48858e6fc70 BUG: 789278 Signed-off-by: hari gowtham <hgowtham@redhat.com>
* fuse-lib: checked_return coverity fixKartik_Burmee2017-11-161-1/+1
| | | | | | | | | | | | 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>
* glusterd: Fix coverity issues in handshake moduleSanju Rakonde2017-11-151-10/+6
| | | | | | | | 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>
* who-wrote-glusterfs: add gluesys.com to domain-mapJi-Hyeon Gim2017-11-151-0/+1
| | | | | Change-Id: Idfc62026ca50aaf8767f093b4daefd7119564a1f Signed-off-by: Ji-Hyeon Gim <potatogim@gluesys.com>
* dict: Fix several coverity issues in dictMohit Agrawal2017-11-153-10/+37
| | | | | | | | | | | | | 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>
* glusterd: Fix coverity issues in glusterd-handler.cSamikshan Bairagya2017-11-151-9/+26
| | | | | | | | | | | 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>
* features/changelog: Structured logging supportAravinda VK2017-11-154-168/+230
| | | | | | | | | | | 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>
* xlators/features/trash: STRING_OVERFLOW Coverity fixes in trash.cKamal Mohanan2017-11-151-32/+59
| | | | | | | | Replaced strcpy, strcat with strncpy, strncat calls. Change-Id: Ibf46a2b5ae4a0dd1632be46d6fe3597f6ace7a41 BUG: 789278 Signed-off-by: Kamal Mohanan <kmohanan@redhat.com>
* libglusterfs/options: Add new member 'setkey' to xlator optionsKaushal M2017-11-152-2/+9
| | | | | | | | | | | | | | | | | 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>
* eventsapi: glustereventsd hardcodes working-directoryVishal Pandey2017-11-151-4/+21
| | | | | | | | | | | | | | 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>
* glusterd: checked_return coverity fixKartik_Burmee2017-11-151-1/+1
| | | | | | | | | | | | 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>
* geo-rep: Refactoring Config and Arguments parsingAravinda VK2017-11-1520-2310/+2607
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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>
* cluster/ec: Fix op-version for disperse.other-eager-lockXavier Hernandez2017-11-142-2/+2
| | | | | | | | | 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>
* cluster: dead_code coverity fixKartik_Burmee2017-11-141-2/+0
| | | | | | | | | | | | 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>
* glusterd: dead_code coverity fixKartik_Burmee2017-11-141-3/+0
| | | | | | | | | | | | 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>
* geo-rep: Fix data sync issue during hardlink, renameKotresh HR2017-11-141-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* glusterd: DEADCODE coverity fixSanju Rakonde2017-11-141-8/+0
| | | | | | | | | | | 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>
* libglusterfs/atomic: Improved atomic supportXavier Hernandez2017-11-146-97/+456
| | | | | | | | | | | | | | | | 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>
* glusterd: dead code coverity fixKartik_Burmee2017-11-141-2/+0
| | | | | | | | | | | | | | | | 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>
* glusterd: checked_return coverity fixKartik_Burmee2017-11-141-1/+1
| | | | | | | | | | 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>
* glusterd: buffer_size_warning coverity fixKartik_Burmee2017-11-131-1/+1
| | | | | | | | | | | | | | 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>
* libglusterfs/gfdb:coverity issue fixSubha sree Mohankumar2017-11-131-2/+1
| | | | | | | | | | | 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>
* libglusterfs:UNUSED VALUE coverity fixSubha sree Mohankumar2017-11-131-0/+1
| | | | | | | | | | | 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>
* debug/io-stats: Coverity fix in io-statsAshish Pandey2017-11-131-13/+29
| | | | | | | | | | | | | 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>
* features/libgfchangelog: Fix coverity issuesAravinda VK2017-11-132-35/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* extras: scripts to control CPU/MEMORY for any gluster daemon during runtimeMohit Agrawal2017-11-134-1/+254
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* cluster/afr: Print heal info split-brain output in stream fashionkarthik-us2017-11-131-0/+2
| | | | | | | | | | | | | | | | 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>
* tests: fix bug-1483058-replace-brick-quorum-validation.t spurious failureAtin Mukherjee2017-11-123-1/+19
| | | | | | Change-Id: I04c35305bfb663eabbf715eee78695adfd4a2d20 BUG: 1511310 Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
* glusterd: Validate changelog on geo-rep volumeKotresh HR2017-11-122-1/+62
| | | | | | | | | 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>
* glusterd: PW.INCLUDE_RECURSION coverity fixSanju Rakonde2017-11-122-1/+2
| | | | | | | | | | | | | | 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>
* glusterfsd: making parent process to write pidfile while forkingSanju Rakonde2017-11-121-9/+16
| | | | | | | | | | | | | 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>
* glusterd: few coverity fixes in glusterd-handler.cSanju Rakonde2017-11-121-6/+15
| | | | | | | | This patch fixes coverity issues 695,555,263 Change-Id: I3577cbc793b6652b24cc719037db2bdd5e27f196 BUG: 789278 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* mgmt/glusterd glusterd coverity fixesAshish Pandey2017-11-111-51/+61
| | | | | | | | | | | | | | | | 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>
* cluster/ec: Keep last written strip in in-memory cacheAshish Pandey2017-11-109-84/+525
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>