summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* cluster/afr: Fix race in lockinfo (f)getxattrrelease-8Xavi Hernandez2021-04-121-142/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cluster/afr: Fix race in lockinfo (f)getxattr A shared dictionary was updated outside the lock after having updated the number of remaining answers. This means that one thread may be processing the last answer and unwinding the request before another thread completes updating the dict. Thread 1 Thread 2 LOCK() call_cnt-- (=1) UNLOCK() LOCK() call_cnt-- (=0) UNLOCK() update_dict(dict) if (call_cnt == 0) { STACK_UNWIND(dict); } update_dict(dict) if (call_cnt == 0) { STACK_UNWIND(dict); } The updates from thread 1 are lost. This patch also reduces the work done inside the locked region and reduces code duplication. Fixes: #2161 Change-Id: Idc0d34ab19ea6031de0641f7b05c624d90fac8fa Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* extras: disable lookup-optimize in virt and block groupsXavi Hernandez2021-04-093-0/+3
| | | | | | | | | | | | | lookup-optimize doesn't provide any benefit for virtualized environments and gluster-block workloads, but it's known to cause corruption in some cases when sharding is also enabled and the volume is expanded or shrunk. For this reason, we disable lookup-optimize by default on those environments. Fixes: #2253 Change-Id: I25861aa50b335556a995a9c33318dd3afb41bf71 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* afr: remove priv->root_inode (#2244) (#2280)Ravishankar N2021-03-314-8/+1
| | | | | | | | | | | | | | priv->root_inode seems to be a remenant of pump xlator and was getting populated in discover code path. thin-arbiter code used it to populate loc info but it seems that in case of some daemons like quotad, the discover path for root gfid is not hit, causing it to crash. Fix: root inode can be accessed via this->itable->root, so use that and remove priv->rot_inode instances from the afr code. Fixes: #2234 Change-Id: Iec59c157f963a4dc455652a5c85a797d00cba52a Signed-off-by: Ravishankar N <ravishankar@redhat.com>
* cli: syntax check for arbiter volume creation (#2207) (#2223)Ravishankar N2021-03-312-1/+3
| | | | | | | | | | | commit 8e7bfd6a58b444b26cb50fb98870e77302f3b9eb changed the syntax for arbiter volume creation to 'replica 2 arbiter 1', while still allowing the old syntax of 'replica 3 arbiter 1'. But while doing so, it also removed a conditional check, thereby allowing replica count > 3. This patch fixes it. Updates: #2192 Change-Id: Ie109325adb6d78e287e658fd5f59c26ad002e2d3 Signed-off-by: Ravishankar N <ravishankar@redhat.com>
* socket: Resolve ssl_ctx leak for a brick while only mgmt SSL is enabled (#2213)mohit842021-03-041-2/+2
| | | | | | | | | | | | | | | | | | Problem: While only mgmt SSL is enabled for a brick process use_ssl flag is false for a brick process and socket api's cleanup ssl_ctx only while use_ssl and ssl_ctx both are valid Solution: To avoid a leak check only ssl_ctx, if it is valid cleanup ssl_ctx > Fixes: #1196 > Change-Id: I2f4295478f4149dcb7d608ea78ee5104f28812c3 > Signed-off-by: Mohit Agrawal <moagrawal@redhat.com> > (Reviewed on upstream link https://review.gluster.org/#/c/glusterfs/+/24366/) > (Cherry picked from commit 9873baee34afdf0c20f5fc98a7dbf2a9f07447e2) Fixes: #2210 Change-Id: Icc403209cbd535c8226a23654262be63b74e351e Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
* doc: Added release 8.4 notes (#2185)Rinku Kothiya2021-02-241-0/+30
| | | | | | Updates: #2183 Change-Id: If15e1d6f7bbf8d76b8cdee8c6e4de18f3e818b83 Signed-off-by: Rinku Kothiya <rkothiya@redhat.com>
* glusterd: Fix for shared storage in ipv6 env (#1972) (#2144)Nikhil Ladha2021-02-171-1/+1
| | | | | Change-Id: Ib38993724c709b35b603f9ac666630c50c932c3e Updates: #1406 Signed-off-by: nik-redhat <nladha@redhat.com>
* cluster/ec: Change self-heal-window-size to 4MiB by default (#2071) (#2140)Xavi Hernandez2021-02-171-1/+1
| | | | | | | | | | | | | The current block size used for self-heal by default is 128 KiB. This requires a significant amount of management requests for a very small portion of data healed. With this patch the block size is increased to 4 MiB. For a standard EC volume configuration of 4+2, this means that each healed block of a file will update 1 MiB on each brick. Change-Id: Ifeec4a2d54988017d038085720513c121b03445b Updates: #2067 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* posix: fix chmod error on symlinks (#2157)Xavi Hernandez2021-02-124-5/+19
| | | | | | | | | After glibc 2.32, lchmod() is returning EOPNOTSUPP instead of ENOSYS when called on symlinks. The man page says that the returned code is ENOTSUP. They are the same in linux, but this patch correctly handles all errors. Fixes: #2154 Change-Id: Ib3bb3d86d421cba3d7ec8d66b6beb131ef6e0925 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* cluster/dht: Perform migrate-file with lk-owner (#2105)Pranith Kumar Karampuri2021-02-094-20/+104
| | | | | fixes: #1529 Change-Id: I7f233ff41cda400d335f6a70ba09be736770116d Signed-off-by: Pranith Kumar K <pranith.karampuri@phonepe.com>
* dht: don't ignore xdata in fgetxattr (#2020) (#2032)Xavi Hernandez2021-02-061-2/+2
| | | | | | | | | | | DHT was passing NULL for xdata in fgetxattr() request, ignoring any data sent by upper xlators. This patch fixes the issue by sending the received xdata to lower xlators, as it's currently done for getxattr(). Fixes: #1991 Change-Id: If3d3f1f2ce6215f3b1acc46480e133cb4294eaec Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* cluster/afr: Change default self-heal-window-size to 1MB (#2111)Pranith Kumar Karampuri2021-02-042-3/+9
| | | | | | | | | At the moment self-heal-window-size is 128KB. This leads to healing data in 128KB chunks. With the growth of data and the avg file sizes nowadays, 1MB seems like a better default. Change-Id: I70c42c83b16c7adb53d6b5762969e878477efb5c Fixes: #2067 Signed-off-by: Pranith Kumar K <pranith.karampuri@phonepe.com>
* cluster/dht: Allow fix-layout only on directories (#2109) (#2115)Pranith Kumar Karampuri2021-02-042-0/+37
| | | | | | | | | | | | | Problem: fix-layout operation assumes that the directory passed is directory i.e. layout->cnt == conf->subvolume_cnt. This will lead to a crash when fix-layout is attempted on a file. Fix: Disallow fix-layout on files fixes: #2107 Change-Id: I2116b8773059f67e3260e9207e20eab3de711417 Signed-off-by: Pranith Kumar K <pranith.karampuri@phonepe.com>
* mount/fuse: Fix graph-switch when reader-thread-count is set (#1609)Pranith Kumar Karampuri2021-02-032-8/+68
| | | | | | | | | | | | | Problem: The current graph-switch code sets priv->handle_graph_switch to false even when graph-switch is in progress which leads to crashes in some cases Fix: priv->handle_graph_switch should be set to false only when graph-switch completes. fixes: #1539 Change-Id: I5b04f7220a0a6e65c5f5afa3e28d1afe9efcdc31 Signed-off-by: Pranith Kumar K <pranith.karampuri@phonepe.com>
* dht: handle DHT_SUBVOL_STATUS_KEY in dht_pt_getxattr (#1934) (#1968)Ravishankar N2021-01-051-0/+24
| | | | | | | | | | | In non distribute volumes (plain replicate, ec), DHT uses pass-through FOPs (dht_pt_getxattr) instead of the usual FOPS (dht_getxattr). The pass through FOP was not handling the DHT_SUBVOL_STATUS_KEY virtual xattr because of which geo-rep session was going into a faulty state. Fixing it now. updates: #1925 Change-Id: I766b5b5c047c954a9957ab78aca680eedef1ff1f Signed-off-by: Ravishankar N <ravishankar@redhat.com>
* doc: Added release 8.3 notes (#1860)Rinku Kothiya2020-12-011-0/+36
| | | | | | Updates: #1859 Change-Id: I6c91be8b0ccc2c71e7edafd0c64f4d92b71efd72 Signed-off-by: Rinku Kothiya <rkothiya@redhat.com>
* posix: In the commit 2f044c4587c6db3cb82b6128f056ec2ea2bc1b98 the ret (#1858)mohit842020-11-281-0/+1
| | | | | | | | | | update was missed in the function posix_get_gfid2path if GF_MALLOC is failed. Solution: Update the ret value to -1 if GF_MALLOC is failed Fixes: #1836 Change-Id: I510ebf0605ee49b84ff3570948771319f283b10e Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
* posix: Use MALLOC instead of alloca to allocate memory for xattrs list ↵mohit842020-11-273-5/+15
| | | | | | | | | | | | (#1730) (#1827) In case of file is having huge xattrs on backend a brick process is crashed while alloca(size) limit has been crossed 256k because iot_worker stack size is 256k. Fixes: #1699 Signed-off-by: Mohit Agrawal <moagrawa@redhat.com> Change-Id: I100468234f83329a7d65b43cbe4e10450c1ccecd
* glusterd: resource leaks (#1840)Nikhil Ladha2020-11-272-38/+29
| | | | | | | | | | | | | | | | | | | | | | | | * glusterd: resource leaks Issue: iobref was not freed before exiting the function if all the checks were OK, which caused the resource leak. Fix: Modified the code a bit to avoid use of an extra reference to the label, and to free the iobref and iobuf if not NULL, and then exit the function. CID: 1430118 Updates: #1060 Signed-off-by: nik-redhat <nladha@redhat.com> * Updated the changes Change-Id: I356fbab409ec3f22f585387819a441ded2e4ff1e Signed-off-by: nik-redhat <nladha@redhat.com>
* test case ./tests/bugs/core/bug-1650403.t is getting timed out (#1847)mohit842020-11-2713-13/+111
| | | | | | | | | | >> The patch is backport of master patch >> https://github.com/gluster/glusterfs/commit/fc129cc2226884cbf59409256823fd9c147391be >> and >> https://github.com/mohit84/glusterfs/commit/a06b592bf5511dde4add83852441416dcda22352 Fixes: #1663 Change-Id: Iad9acdd1e4fe80b68c644881ad2550a194a67d2d Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
* CLI: added an error message in case of timeout (#1842)Nikhil Ladha2020-11-251-1/+4
| | | | | | | | | Added an error message in CLI when there are volumes present in the cluster but timeout happens while fetching them. This PR fixes #1738 Backport of #1738 Signed-off-by: nik-redhat <nladha@redhat.com>
* ganesha-ha: revised regex exprs for --status (#1808)kalebskeithley2020-11-231-4/+4
| | | | | | | | | better whitespace in regex This has worked for years, but somehow no longer works on rhel8 Updates: #1000 Change-Id: I2c1a3537573d125608334772ba1a263c55407dd4 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* afr: call afr_is_lock_mode_mandatory only while xdata is valid (#1797) (#1829)mohit842020-11-231-9/+9
| | | | | | | | | afr_is_lock_mode_mandatory throws a warning message while xdata is not valid, to avoid a message call a function only while xdata is valid. Fixes: #1796 Change-Id: I32d37960ea4e936ba87e65811c1792a2f1158c0d Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
* glusterd: fix a bug in enabling nfs ganesha (#1813) (#1821)Ravishankar N2020-11-231-1/+1
| | | | | | | | | | | As detailed in the github issue,`gluster volume set Svolname ganesha.enable on` is currently broken due to a minor typo in the commit e081ac683b6a5bda548913, Fixing it now. Fixes: #1778 Change-Id: I99276fedc43f40e8a439e545bd2b8d1698aa03ee Signed-off-by: Ravishankar N <ravishankar@redhat.com> Tested-by: Strahil Nikolov <hunter86_bg@yahoo.com>
* fixed AFR_READ_POLICY_GFID_PID_HASH policy bug (#1561)Ravishankar N2020-10-201-1/+2
| | | | | | | Change-Id: Ib927a770a486c95e4b157e76ba96e9904d1a9716 Fixes: #1499 Signed-off-by: perrynzhou <perrynzhou@gmail.com> Co-authored-by: perrynzhou <perrynzhou@gmail.com>
* rfc.sh: Move -> github flow (#1602)Pranith Kumar Karampuri2020-10-131-58/+67
| | | | | Change-Id: Ia4750e4f01a89b16b212d2251136da0ed738d787 Fixes: #1601 Signed-off-by: Pranith Kumar K <pranith.karampuri@phonepe.com>
* geo-rep: Fix string comparisonKotresh HR2020-10-051-1/+1
| | | | | | | | | | | | Backport of: >Fixes: #1438 >Change-Id: If9f1c2e89e504512bcf77608fb4a4fedb19f0399 >Signed-off-by: Kotresh HR <khiremat@redhat.com> Fixes: #1438 Change-Id: If9f1c2e89e504512bcf77608fb4a4fedb19f0399 Signed-off-by: Shwetha K Acharya <sacharya@redhat.com> (cherry picked from commit 005d2ac1d8cc57e0e36f7cf230ae09a4f860bd16)
* features/bit-rot: invalid snprintf() buffer sizeDmitry Antipov2020-09-291-2/+2
| | | | | | | | | | | | | | | | | Found with clang-10 -Wfortify-source: bit-rot-scrub.c:1802:15: warning: 'snprintf' size argument is too large; destination buffer has size 32, but size argument is 4096 [-Wfortify-source] len = snprintf(key, PATH_MAX, "quarantine-%d", j); ^ bit-rot-scrub.c:1813:9: warning: 'snprintf' size argument is too large; destination buffer has size 32, but size argument is 4096 [-Wfortify-source] snprintf(main_key, PATH_MAX, "quarantine-%d", tmp_count); Change-Id: I9b9c09ef2223ed181d81215154345de976b82f13 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com> Fixes: #1221
* build: when building with tirpc, link xlators, etc., with libtirpcKaleb S. KEITHLEY2020-09-242-2/+3
| | | | | | | | | | | | | uncovered on Ubuntu Groovy (20.10, ubuntu's bleeding edge devel dist), seems to now have stricter link semantics than it did when we last built 8.1 and 7.5. Many xlators actually do have direct calls to xdr_sizeof(), so strictly speaking they should be linked with libtirpc. Change-Id: Iee1fd3528fde19db397c4eae6978d9b9a2c3e17f Updates: #1002 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* doc: Added release 8.2 notesRinku Kothiya2020-09-161-0/+27
| | | | | | | Updates: #1485 Change-Id: Ia42666051df1624444ea203bf8b7c876cf78b592 Signed-off-by: Rinku Kothiya <rkothiya@redhat.com>
* Events: Fixing coverity issues.Srijan Sivakumar2020-09-151-3/+5
| | | | | | | | | | | Fixing resource leak reported by coverity scan. CID: 1431237 Change-Id: I2bed106b3dc4296c50d80542ee678d32c6928c25 Updates: #1060 Signed-off-by: Srijan Sivakumar <ssivakum@redhat.com> (cherry picked from commit ebc0253269d8a538239dd0b99d42f56ea320b0f0)
* Events: Socket creation after getaddrinfo and IPv4 and IPv6 packet capturesrijan-sivakumar2020-09-143-15/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Issue: Currently, the socket creation is done prior to getaddrinfo function being invoked. This can cause mismatch in the protocol and address families of the created socket and the result of the getaddrinfo api. Also, the glustereventsd UDP server by default only captures IPv4 packets hence IPv6 packets are not even captured. Code Changes: 1. Modified the socket creation in such a way that the parameters taken in are dependent upon the result of the getaddrinfo function. 2. Created a subclass for adding address family in glustereventsd.py for both AF_INET and AF_INET6. 3. Modified addresses in the eventsapiconf.py.in Reasoning behind the approach: 1. If we are using getaddrinfo function then socket creation should happen only after we check if we received back valid addresses. Hence socket creation should come after the call to getaddrinfo 2. The listening server which pushes the events to the webhook has to listen for both IPv4 and IPv6 messages as we would not be sure as to what address family is picked in _gf_event. Fixes: #1377 Change-Id: I568dcd1a977c8832f0fef981e1f81cac7043c760 Signed-off-by: srijan-sivakumar <ssivakum@redhat.com> (cherry picked from commit 7c309928591deb8d0188793677958226ac03897a)
* glusterd: readdir-ahead off by defaultnik-redhat2020-09-141-1/+1
| | | | | | | | | | | | | Changing the default value of readdir-ahead to off, but it can be enabled/disabled later on if with gluster vol set <volname> performance.readdir-ahead enabel/disable command. Updates: #1472 Change-Id: Idb3e16e8be98d7a811fc8e5d09906919ef50fbab Signed-off-by: nik-redhat <nladha@redhat.com> (cherry picked from commit 84a4cf76219b6187fc625740d1a1ebbe40e9f22c)
* glusterd: cksum mismatch on upgrading to latest glusternik-redhat2020-09-141-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | Issue: In gluster versions less than 7, the checksums were calculated whether or not the quota is enabled or not, and that cksum value was also getting stored in the quota.cksum file. But, from gluster 7 version onwards cksum was calculated only if the quota is enabled. Due to this, the cksums in quota.cksum files differ after upgrading. Fix: Added a check to see if the OP_VERSION is less than 7 then, follow the previous method otherwise, move as per the latest changes for cksum calculation. This changes for the cksum calculation was done in this commit : https://github.com/gluster/glusterfs/commit/3b5eb592f5 Updates: #1332 Change-Id: I7a95e5e5f4d4be4983fb7816225bf9187856c003 Signed-off-by: nik-redhat <nladha@redhat.com> (cherry picked from commit 865cca1190e233381f975ff36118f46e29477dcf) Signed-off-by: nik-redhat <nladha@redhat.com>
* open-behind: implement create fopXavi Hernandez2020-09-141-0/+52
| | | | | | | | | | | | | | Open behind didn't implement create fop. This caused that files created were not accounted for the number of open fd's. This could cause future opens to be delayed when they shouldn't. This patch implements the create fop. It also fixes a problem when destroying the stack: when frame->local was not NULL, STACK_DESTROY() tried to mem_put() it, which is not correct. Fixes: #1440 Change-Id: Ic982bad07d4af30b915d7eb1fbcef7a847a45869 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* tests: provide an option to mark tests as 'flaky'Amar Tumballi2020-09-1415-40/+56
| | | | | | | | | | | | | | * also add some time gap in other tests to see if we get things properly * create a directory 'tests/000/', which can host any tests, which are flaky. * move all the tests mentioned in the issue to above directory. * as the above dir gets tested first, all flaky tests would be reported quickly. * change `run-tests.sh` to continue tests even if flaky tests fail. Reference: gluster/project-infrastructure#72 Updates: #1000 Change-Id: Ifdafa38d083ebd80f7ae3cbbc9aa3b68b6d21d0e Signed-off-by: Amar Tumballi <amar@kadalu.io> (cherry picked from 097db13c11390174c5b9f11aa0fd87eca1735871)
* libglusterfs: fix dict leakRavishankar N2020-09-074-10/+30
| | | | | | | | | | | | | | | Problem: gf_rev_dns_lookup_cached() allocated struct dnscache->dict if it was null but the freeing was left to the caller. Fix: Moved dict allocation and freeing into corresponding init and fini routines so that its easier for the caller to avoid such leaks. Updates: #1000 Change-Id: I90d6a6f85ca2dd4fe0ab461177aaa9ac9c1fbcf9 Signed-off-by: Ravishankar N <ravishankar@redhat.com> (cherry picked from commit 079f7a7d8a2bd85070c1da4dde2452ca82a1cdbb)
* doc: Updated release 8.1 notesRinku Kothiya2020-08-251-2/+2
| | | | | | | Updates: #1318 Change-Id: I87787a1aaf59302ad045ed6d2562920e17654678 Signed-off-by: Rinku Kothiya <rkothiya@redhat.com>
* doc: Added release 8.1 notesRinku Kothiya2020-08-241-0/+32
| | | | | | | Updates: #1318 Change-Id: I14d589bd9af85bdd4ae02902e41d4c5f7d930358 Signed-off-by: Rinku Kothiya <rkothiya@redhat.com>
* afr: add null check for thin-arbiter gfid.Ravishankar N2020-08-214-88/+13
| | | | | | | | | | | | | | | | | | | | | | Problem: Lookup/creation of thin-arbiter ID file happens in background during mounting. On new volumes, if the ID file creation is in progress, and a FOP fails on data brick, a post-op (xattrop) is attemtped on TA. Since the TA file's gfid is null at this point, the ASSERT checks in protocol/ client causes a crash. Fix: Given that we decided to do Lookup/creation of thin-arbiter in background, fail the other AFR FOPS on TA if the ID file's gfid is null instead of winding it down to protocol/client. Also remove afr_changelog_thin_arbiter_post_op() which seems to be dead code. Updates: #763 Change-Id: I70dc666faf55cc5c8f7cf8e7d36085e4fa399c4d Signed-off-by: Ravishankar N <ravishankar@redhat.com> (cherry picked from commit f9b5074394e3d2f3b6728aab97230ba620879426)
* open-behind: fix call_frame leakXavi Hernandez2020-08-211-4/+10
| | | | | | | | | | | | | When an open was delayed, a copy of the frame was created because the current frame was used to unwind the "fake" open. When the open was actually sent, the frame was correctly destroyed. However if the file was closed before needing to send the open, the frame was not destroyed. This patch correctly destroys the frame in all cases. Change-Id: I8c00fc7f15545c240e8151305d9e4cf06d653926 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com> Fixes: #1440
* posix: Implement a janitor thread to close fdMohit Agrawal2020-08-217-26/+160
| | | | | | | | | | | | | | | Problem: In the commit fb20713b380e1df8d7f9e9df96563be2f9144fd6 we use syntask to close fd but we have found the patch is reducing the performance Solution: Use janitor thread to close fd's and save the pfd ctx into ctx janitor list and also save the posix_xlator into pfd object to avoid the race condition during cleanup in brick_mux environment Change-Id: Ifb3d18a854b267333a3a9e39845bfefb83fbc092 Fixes: #1396 Signed-off-by: Mohit Agrawal <moagrawa@redhat.com> (cherry picked from commit 41b9616435cbdf671805856e487e373060c9455b)
* glusterd: dump SSL error stack on disconnectLeonid Ishimnikov2020-08-201-0/+7
| | | | | | | | | | | | | | | | | | Problem: When a non-SSL connection is attempted on an SSL-enabled management port, unrelated peers are subsequently disconnected from the node with a misleading error message. Cause: A non-SSL client causes OpenSSL to push a wrong version error into its thread-local error stack, but this error is never cleared, and it lingers in the stack until the thread is used by another SSL session, and a certain condition requires the error stack to be examined, at which time the old error is discovered and the connection is terminated. Solution: Log and clear the error stack upon terminating the connection. Change-Id: I82f3a723285df24dafc88850ae4fca65b69f6ae4 Fixes: #1418 Signed-off-by: Leonid Ishimnikov <lishim@fastmail.com> (cherry picked from commit bb5801d1480314e09b4203d2525bd01aada5c683)
* features/shard: optimization over shard lookup in case of preallocVinayakswami Hariharmath2020-08-202-7/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | Assume that we are preallocating a VM of size 1TB with a shard block size of 64MB then there will be ~16k shards. This creation happens in 2 steps shard_fallocate() path i.e 1. lookup for the shards if any already present and 2. mknod over those shards do not exist. But in case of fresh creation, we dont have to lookup for all shards which are not present as the the file size will be 0. Through this, we can save lookup on all shards which are not present. This optimization is quite useful in the case of preallocating big vm. Also if the file is already present and the call is to extend it to bigger size then we need not to lookup for non- existent shards. Just lookup preexisting shards, populate the inodes and issue mknod on extended size. Fixes: #1425 Change-Id: I60036fe8302c696e0ca80ff11ab0ef5bcdbd7880 Signed-off-by: Vinayakswami Hariharmath <vharihar@redhat.com> (cherry picked from commit 2ede911d07c6dc07a0f729526ab590ace77341ae)
* extras: Modify group 'virt' to include network-related optionsKrutika Dhananjay2020-08-201-0/+5
| | | | | | | | | | | | | This is needed to work around an issue seen where vms running on online hosts are getting killed when a different host is rebooted in ovirt-gluster hyperconverged environments. Actual RCA is quite lengthy and documented in the github issue. Please refer to it for more details. Change-Id: Ic25b5f50144ad42458e5c847e1e7e191032396c1 Fixes: #1217 Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com> (cherry picked from commit 5391f16fc4aa00f75af2a4c2707768370ace5f6c)
* cluster/ec: Remove stale entries from indices/xattrop folderAshish Pandey2020-08-202-2/+78
| | | | | | | | | | | | | | | | | | | | Problem: If a gfid is present in indices/xattrop folder while the file/dir is actaully healthy and all the xattrs are healthy, it causes lot of lookups by shd on an entry which does not need to be healed. This whole process eats up lot of CPU usage without doing meaningful work. Solution: Set trusted.ec.dirty xattr of the entry so that actual heal process happens and at the end of it, during unset of dirty, gfid enrty from indices/xattrop will be removed. Change-Id: Ib1b9377d8dda384bba49523e9ff6ba9f0699cc1b Fixes: #1385 Signed-off-by: Ashish Pandey <aspandey@redhat.com> (cherry picked from commit ba1b0a471dec968633f89c7f790b099fb4ad700d)
* glusterd: Increase buffer length to save multiple hostnames in peer fileMohit Agrawal2020-08-191-3/+3
| | | | | | | | | | | | | | | | Problem: At the time of handling friend update request glusterd updates peer file and if DNS has returned multiple hostnames for the same IP, glusterd saves all hostnames in peer file.In commit 1fa089e7a2b180e0bdcc1e7e09a63934a2a0c0ef We changed the approach to save all key value pairs in single shot. In case of a buffer is not having space to store the hostnames glusterd writes partial hostname in peer file. Solution: To avoid the failure increase the buffer length Change-Id: Iee969d165333e9c5ba69431d474c541b8f12d442 Fixes: #1407 Signed-off-by: Mohit Agrawal <moagrawa@redhat.com> (cherry picked from commit 6e8e73a06d71382f8f6e3cd83fe72692d19e66ba)
* geo-rep: Fix corner case in rename on mkdir during hybrid crawlSunny Kumar2020-08-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: The issue is being hit during hybrid mode while handling rename on slave. In this special case the rename is recorded as mkdir and geo-rep process it by resolving the path form backend. While resolving the backend path during this special handling one corner case is not considered. <snip> Traceback (most recent call last):   File "/usr/libexec/glusterfs/python/syncdaemon/repce.py", line 118, in worker     res = getattr(self.obj, rmeth)(*in_data[2:])   File "/usr/libexec/glusterfs/python/syncdaemon/resource.py", line 588, in entry_ops     src_entry = get_slv_dir_path(slv_host, slv_volume, gfid)   File "/usr/libexec/glusterfs/python/syncdaemon/syncdutils.py", line 710, in get_slv_dir_path     dir_entry = os.path.join(pfx, pargfid, basename)   File "/usr/lib64/python2.7/posixpath.py", line 75, in join     if b.startswith('/'): AttributeError: 'int' object has no attribute 'startswith' In pyhthon3: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python3.8/posixpath.py", line 90, in join genericpath._check_arg_types('join', a, *p) File "/usr/lib64/python3.8/genericpath.py", line 152, in _check_arg_types raise TypeError(f'{funcname}() argument must be str, bytes, or ' TypeError: join() argument must be str, bytes, or os.PathLike object, not 'int' </snip> Backport of: >Ptach link: https://review.gluster.org/#/c/glusterfs/+/24468/ >Change-Id: I8b926899c60ad8c4ffc886d57028ba70fd21e332 >Fixes: #1250 >Signed-off-by: Sunny Kumar <sunkumar@redhat.com> Change-Id: I8b926899c60ad8c4ffc886d57028ba70fd21e332 Fixes: #1250 Signed-off-by: Sunny Kumar <sunkumar@redhat.com> (cherry picked from commit 27f5c8ba844e9da54fc1304df4ffe015a3bbb9bd) Change-Id: I171eb9ad4e30f49cfe86cb258918682d3c0f5af9
* cluster/ec: Improve detection of new healsXavi Hernandez2020-08-196-28/+84
| | | | | | | | | | | | | | | | | | | | When EC successfully healed a directory it assumed that maybe other entries inside that directory could have been created, which could require additional heal cycles. For this reason, when the heal happened as part of one index heal iteration, it triggered a new iteration. The problem happened when the directory was healthy, so no new entries were added, but its index entry was not removed for some reason. In this case self-heal started and endless loop healing the same directory continuously, cause high CPU utilization. This patch improves detection of new files added to the heal index so that a new index heal iteration is only triggered if there is new work to do. Change-Id: I2355742b85fbfa6de758bccc5d2e1a283c82b53f Fixes: #1354 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* features/shard: Convert shard block indices to uint64Krutika Dhananjay2020-08-192-7/+10
| | | | | | | | | | | | | | | This patch fixes a crash in FOPs that operate on really large sharded files where number of participant shards could sometimes exceed signed int32 max. The patch also adds GF_ASSERTs to ensure that number of participating shards is always greater than 0 for files that do have more than one shard. Change-Id: I354de58796f350eb1aa42fcdf8092ca2e69ccbb6 Fixes: #1348 Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com> (cherry picked from commit cdf01cc47eb2efb427b5855732d9607eec2abc8a)