summaryrefslogtreecommitdiffstats
path: root/xlators
Commit message (Collapse)AuthorAgeFilesLines
* cluster/dht: make rebalance use truncate incaseSusant Palai2017-11-223-71/+99
| | | | | | | | | .. the brick file system does not support fallocate. Change-Id: Id76cda2d8bb3b223b779e5e7a34f17c8bfa6283c BUG: 1488103 Signed-off-by: Susant Palai <spalai@redhat.com>
* features/locks: Fix memory leaksXavier Hernandez2017-11-225-5/+11
| | | | | | Change-Id: Ic1d2e17a7d14389b6734d1b88bd28c0a2907bbd6 BUG: 1515161 Signed-off-by: Xavier Hernandez <jahernan@redhat.com>
* libglusterfs: Handle FS errors gracefullyPranith Kumar K2017-11-222-2/+15
| | | | | | | | | | | | | | | Problem: FS sometimes doesn't give the expected return values. We need our common functions to guard against this. Example BUG: https://bugzilla.redhat.com/show_bug.cgi?id=864401 Fix: When the return value is not as per specification, change the return value to -1 and errno to EIO BUG: 1469487 Change-Id: I14739ab2e5ae225b1a91438b87f8928af56f2934 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
* ec: Use tiebreaker_inodelk where necessaryPranith Kumar K2017-11-221-8/+11
| | | | | | | | | | | | | | | | | When there are big directories or files that need to be healed, other shds are stuck on getting lock on self-heal domain for these directories/files. If there is a tie-breaker logic, other shds can heal some other files/directories while 1 of the shds is healing the big file/directory. Before this patch: 96.67 4890.64 us 12.89 us 646115887.30us 340869 INODELK After this patch: 40.76 42.35 us 15.09 us 6546.50us 438478 INODELK Fixes gluster/glusterfs#354 Change-Id: Ia995b5576b44f770c064090705c78459e543cc64 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
* cluster/dht: Coverity fixes for dht-rebalance.ckarthik-us2017-11-211-80/+54
| | | | | | | | | | | | | | | | | | Warning Functions DEADCODE gf_defrag_handle_migrate_error gf_defrag_get_entry gf_defrag_process_dir gf_defrag_start_crawl dht_migrate_file UNUSED_VALUE migrate_special_files dht_migrate_file FORWARD_NULL gf_tier_do_fix_layout Change-Id: I6f408585b83a267581a4273dae7c22b8993163d5 BUG: 789278 Signed-off-by: karthik-us <ksubrahm@redhat.com>
* protocol/server: use common function to reduce duplicate codeAmar Tumballi2017-11-211-1031/+216
| | | | | Change-Id: Ifad0a88245fa6fdbf4c43d813b47c314d2c50435 Signed-off-by: Amar Tumballi <amarts@redhat.com>
* Disable gfid2path by default on NetBSDEmmanuel Dreyfus2017-11-211-0/+11
| | | | | | | | | | | NetBSD storage of extended attributes for UFS1 badly scales when the list of extended attributes names rises. gfid2path can add as many extended attributes names as we have files, hence we keep it disabled for performance sake. Change-Id: Id77b5f5ceb4d5eba1b3362b4b9fc693450ffbc2b Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org> BUG: 1129939
* cluster/dht: dead code coverity fixKartik_Burmee2017-11-211-3/+0
| | | | | | | | | | | | issue: Execution cannot reach this statement: "call_stub_destroy(stub);" function: dht_mkdir_hashed_cbk fix: removed the statement and the corresponding 'if' condition block. Change-Id: I3e31056ee489ede6864e51a8e666edc7da3c175f BUG: 789278 Signed-off-by: Kartik_Burmee <kburmee@redhat.com>
* Revert "debug/io-stats: Append stats for each interval in the same file"cholcombe9732017-11-201-1/+1
| | | | | | | | | This reverts commit fc73ae5f81ef5926e3dc2311db116250d0f2a321. See bug: https://bugzilla.redhat.com/show_bug.cgi?id=1513692 Change-Id: I00d5989b042d4e345621c596d5370d324948557f Bug: 1513692 Signed-off-by: Chris Holcombe <xfactor973@gmail.com>
* features/worm: new config option to manage deletion of Worm files.Vishal Pandey2017-11-204-1/+20
| | | | | | | | | | | | | | | | | | | | Add a new configuration option worm-files-deletable to file-level Worm in order to control behaviour of Worm files upon deletion. Steps to Test: 1. Add all the configuration options to a volume to activate file-level-worm 2. Option features.worm-files-deletable is set to 1 by default. 3. Create a new file and wait for the retention time to expire. 4. After retention time expires, do an truncate, rename, unlink, link or write to send the file in Worm state. 5. After that do `rm -f filename`. 6. The file is successfully removed. 7. Repeat from step 2 by setting features.worm-files-deletable 0. This time deletion should not be successful. Change-Id: Ibc89861ee296e065330b93a9f9606be5da40af31 BUG: 1508898 Signed-off-by: Vishal Pandey <vishpandey2014@gmail.com>
* rpc : Change the way client uuid is builtPoornima G2017-11-201-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-184-93/+162
| | | | | | | | | | | | | | | | | | | | | | 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>
* 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>
* 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>
* 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-151-2/+5
| | | | | | | | | | | | | | | | | 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>
* 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>
* 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>
* 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-144-22/+22
| | | | | | | | | | | | | | | | 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>
* 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>
* 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>
* 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>
* features/bitrot: Fix coverity issuesKotresh HR2017-11-096-22/+40
| | | | | | | | | | | | | 1. br_update_scrub_finish_time: BUFFER_SIZE_WARNING 2. br_read_bad_object_dir : DEADCODE 3. bit-rot.c: init : RESOURCE_LEAK 4. br_stub_fsetxattr : STACK_USE 5. br_stub_setxattr : STACK_USE 6. bit-rot-stub.c: init : BUFFER_SIZE_WARNING Change-Id: Ie620f431bd7548fedae2152aa756ccdcd89ddf89 Signed-off-by: Kotresh HR <khiremat@redhat.com> BUG: 789278
* quota: fixes issue in quota.conf when setting large number of limitsSanoj Unnikrishnan2017-11-091-12/+33
| | | | | | | | | | | | | | | Problem: It was not possible to configure more than 7712 quota limits. This was because a stack buffer of size 131072 was used to read from quota.conf file. In the new format of quota.conf file each gfid entry takes 17bytes (16byte gfid + 1 byte type). So, the buf_size was not a multiple of gfid entry size and as per code this was considered as corruption. Solution: make buf size multiple of gfid entry size Change-Id: Id036225505a47a4f6fa515a572ee7b0c958f30ed BUG: 1510940 Signed-off-by: Sanoj Unnikrishnan <sunnikri@redhat.com>
* glusterd: display gluster volume status, when quorum type is serverSanju Rakonde2017-11-091-0/+6
| | | | | | | | | | | | | Problem: when server-quorum-type is server, after restarting glusterd in the node which is up, gluster volume status is giving incorrect information. Fix: check whether server is blank, before adding other keys into the dictionary. Change-Id: I926ebdffab330ccef844f23f6d6556e137914047 BUG: 1511339 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* mount/fuse: use fstat in getattr implementation if any opened fd is availableRaghavendra G2017-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The restriction of using fds opened by the same Pid means fds cannot be shared across threads of multithreaded application. Note that fops from kernel have different Pid for different threads. Imagine following sequence of operations: * Turn off performance.open-behind * Thread t1 opens an fd - fd1 - on file "file". Let's assume nodeid of "file" is "nodeid-file". * Thread t2 does RENAME ("newfile", "file"). Let's assume nodeid of "newfile" as "nodeid-newfile". * t2 proceeds to do fstat (fd1) The above set of operations can sometimes result in ESTALE/ENOENT errors. RENAME overwrites "file" with "newfile" changing its nodeid from "nodeid-file" to "nodeid-newfile" and post RENAME, "nodeid-file" is removed from the backend. If fstat carries nodeid-file as argument, which can happen if lookup has not refreshed the nodeid of "file" and since t2 doesn't have an fd opened, fuse_getattr_resume uses STAT which will fail as "nodeid-file" no longer exists. Since the above set of operations and sharing of fds across multiple threads are valid, this is a bug. The fix is to use any fd opened on the inode. In this specific example fuse_getattr_resume will find fd1 and winds down the call as fstat (fd1) which won't fail. Cross-checked with "Miklos Szeredi" <mszeredi.at.redhat.dot.com> for any security issues with this solution and he approves the solution. Thanks to "Miklos Szeredi" <mszeredi.at.redhat.dot.com> for all the pointers and discussions. Change-Id: I88dd29b3607cd2594eee9d72a1637b5346c8d49c BUG: 1510401 Signed-off-by: Raghavendra G <rgowdapp@redhat.com>