summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* doc: update fuse interrupt documentationCsaba Henk2020-07-201-8/+89
| | | | | | | | | | | | | | | | | | | | As Issue #1310 pointed out, for fops that have interrupt handlers the fop handler needs to pay attention to give the proper FUSE response when it's interrupted. This change extends the interrupt documentation with guidelines regarding the FUSE response. Also: - improve wording - add an 'Overview' section to explain the code flow before going in to the technical details Change-Id: I852bfb717b1bde73f220878d6376429564413820 updates: #1374 Signed-off-by: Csaba Henk <csaba@redhat.com>
* run-tests.sh improvementsCsaba Henk2020-07-191-2/+38
| | | | | | | | | | | | Added --help and -R options. -R sets $retry to "no"; so far there was no way to disable retrying (default value for $retry is yes and threre was an option only for enablement). Change-Id: Ia7cedac52be72fe2abd60fb6bdd1927cfda0e229 Updates: #1000 Signed-off-by: Csaba Henk <csaba@redhat.com>
* libglusterfs: fix warnings issued with gcc-10 -Wtype-limitsDmitry Antipov2020-07-191-65/+94
| | | | | | | | | | | | | dict.c:1129:16: warning: comparison is always false due to limited range of data type [-Wtype-limits] dict.c:1129:38: warning: comparison is always false due to limited range of data type [-Wtype-limits] dict.c:1151:16: warning: comparison is always false due to limited range of data type [-Wtype-limits] dict.c:1151:39: warning: comparison is always false due to limited range of data type [-Wtype-limits] Improve error checking and unify to common style as well. Change-Id: Ia4f890bfaaf4e29c8514ee7e4d824d69020b9332 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Updates: #1002
* xlators/cluster/afr: lto-type-mismatchKaleb S. KEITHLEY2020-07-191-1/+2
| | | | | | | | | | | | | | | | [ 144s] afr-dir-read.h:15:1: warning: type of 'afr_opendir' does not match original declaration [-Wlto-type-mismatch] [ 144s] 15 | afr_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, dict_t *xdata) [ 144s] | ^ [ 144s] afr-dir-read.c:71:1: note: type mismatch in parameter 5 [ 144s] 71 | afr_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) [ 144s] | ^ [ 144s] afr-dir-read.c:71:1: note: 'afr_opendir' was previously declared here only a warning, more of a truth-and-beauty thing Change-Id: I2d6ff3fa0a8c5e6ef36e090a6545eaf638752192 Updates: #1002 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* tests/features/interrupt.t: fixesCsaba Henk2020-07-191-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Modify the patterns for which we grep the logs so that they don't match themselves. The test runner inserts the invocation of the cases to the log, thus the patterns will occur in the logs verbatim. So if the pattern matches itself, the test case will be moot (always reporting success). - Invoke the test utility (open-and-sleep) on unique paths so that the file at the passed path shall be created on each invocation. The kernel does not send an interrupt if the file is extant. (This was shadowed by the above mistske with result evaluation.) - Modify the pattern for which we grep the log in the test case where interrupt handling is expected so that it asserts that the interrupt was handled. (So far we did not exclude the possibility of the interrupt triggered but not handled due to a race; however, it seems to be the case that this theoretic race does not have the potential to prevent interrupt handling. And if this ever changes in the future we'd rather be notified about that.) Change-Id: I606da2b4064c1ecc4781c7dfdefed95a433478ce Updates: #1374 Signed-off-by: Csaba Henk <csaba@redhat.com>
* cluster/dht: suppress file migration error for node not supposed to migrate fileTamar Shacked2020-07-151-13/+25
| | | | | | | | | | | | | | | | | | | | | A rebalance process does a lookup for every file in the dir it is processing before checking if it supposed to migrate the file. In this issue there are two rebalance processses running on a replica subvol: R1 is migrating the FILE. R2 is not supposed to migrate the FILE, but it does a lookup and finds a stale linkfile which is mostly due to a stale layout. Then, it tries to unlink the stale linkfile and gets EBUSY as the linkfile fd is open due R1 migration. As a result a misleading error msg about FILE migration failure due EBUSY is logged in R2 logfile. Fix: suppress the error in case it occured in a node that is not supposed to migrate the file. fixes: #1371 Change-Id: I37832b404e2b0cc40ac5caf45f14c32c891e71f3 Signed-off-by: Tamar Shacked <tshacked@redhat.com>
* cluster/afr: Fixing coverity issueskarthik-us2020-07-131-2/+4
| | | | | | | | | | | Fixing the unchecked return value issues reported by coverity scan CID: 1400734 CID: 1400750 Change-Id: I3c953df9ade4a1548e41e18018edb1b041f7e15e Signed-off-by: karthik-us <ksubrahm@redhat.com> Updates: #1060
* geo-replication: Fix IPv6 parsingAravinda Vishwanathapura2020-07-122-5/+43
| | | | | | | | | | | Brick paths in Volinfo used `:` as delimiter, Geo-rep uses split based on `:` char. This will go wrong with IPv6. This patch handles the IPv6 case and handles the split properly. Fixes: #1366 Change-Id: I25e88d693744381c0ccf3c1dbf1541b84be2499d Signed-off-by: Aravinda Vishwanathapura <aravinda@kadalu.io>
* [RFC]glusterd-utils.c: display which options have changedYaniv Kaul2020-07-102-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Display which options were not changed from the default. The user may have opted to change some global or volume options from the default they were initially. Display '(DEFAULT)' if the values used are those that were not explicitly set by the user. Example output: Option Value ------ ----- cluster.server-quorum-ratio 50 cluster.enable-shared-storage disable (DEFAULT) cluster.op-version 80000 cluster.max-op-version 90000 cluster.brick-multiplex disable (DEFAULT) cluster.max-bricks-per-process 250 (DEFAULT) glusterd.vol_count_per_thread 100 (DEFAULT) cluster.localtime-logging disable (DEFAULT) cluster.daemon-log-level INFO (DEFAULT) Since glusterfind uses the value, it is now filtering the value and only picking the 1st word (which is the value itself) and ignores the rest, which may now be '(DEFAULT)'. Fixes: #1357 Change-Id: I7c59055158d099a5de38943f2169fd02c77f5d09 Signed-off-by: Yaniv Kaul <ykaul@redhat.com>
* glusterd: dereference of null pointernik-redhat2020-07-091-3/+3
| | | | | | | | | | | | | | Issue: 'this' is used before it is defined, therefore it can lead to a NULL dereference. Fix: Moved the definition of 'this', before it's use to avoid NULL dereference. Change-Id: I6ad382192129dfa3a206426e5610040e7a905be6 Updates: #1096 Signed-off-by: nik-redhat <nladha@redhat.com>
* xlators/protocol/server: lto-type-mismatchKaleb S. KEITHLEY2020-07-091-1/+1
| | | | | | | | | | | | | | | | | | [ 202s] server-common.h:192:1: warning: type of 'server4_post_link' does not match original declaration [-Wlto-type-mismatch] [ 202s] 192 | server4_post_link(server_state_t *state, gfx_common_3iatt_rsp *rsp, inode_t *inode, struct iatt *stbuf, struct iatt *pre, struct iatt *post); [ 202s] | ^ [ 202s] server-common.c:847:1: note: type mismatch in parameter 7 [ 202s] 847 | server4_post_link(server_state_t *state, gfx_common_3iatt_rsp *rsp,inode_t *inode, struct iatt *stbuf, struct iatt *pre, struct iatt *post, dict_t *xdata) [ 202s] | ^ [ 202s] server-common.c:847:1: note: 'server4_post_link' was previously declared here goes back to glusterfs-6 at least. Only a warning, more of a truth-and-beauty thing. Change-Id: Ib4a74b2d00aec519e9d80a4bdeca20eb6273777f Updates: #1002 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* dht: Heal missing dir entry on brick in revalidate pathSusant Palai2020-07-092-1/+42
| | | | | | | | | Mark dir as missing in layout structure to be healed in dht_selfheal_directory. fixes: #1327 Change-Id: If2c69294bd8107c26624cfe220f008bc3b952a4e Signed-off-by: Susant Palai <spalai@redhat.com>
* glusterd - fixing coverity issuesBarak Sason Rofman2020-07-091-0/+2
| | | | | | | | | Fixing double free issues Change-Id: Ie56753196335080f32f061329644ac462998ada2 CID: 1430112, 1430122 updates: #1202 Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
* nfs - fixing coverity issuesBarak Sason Rofman2020-07-094-9/+34
| | | | | | | | | Fixing use-after-free issues Change-Id: I33e599da6b8159695e2c9e989421b5877d7200b5 CID: 1430117, 1430138, 1430116 updates: #1202 Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
* cli: type mismatch global_quotad_rpc in cli-quotad-client.cKaleb S. KEITHLEY2020-07-0910-26/+8
| | | | | | | | | | | | | | | | | | | | | | | | | ... [ 236s] (.text+0x0): multiple definition of `cli_default_conn_timeout'; cli.o (symbol from plugin):(.text+0x0): first defined here [ 236s] cli-quotad-client.c:13:24: warning: type of 'global_quotad_rpc' does not match original declaration [-Wlto-type-mismatch] [ 236s] 13 | extern struct rpc_clnt global_quotad_rpc; [ 236s] | ^ [ 236s] cli.c:80:18: note: 'global_quotad_rpc' was previously declared here [ 236s] 80 | struct rpc_clnt *global_quotad_rpc; [ 236s] | ^ [ 236s] cli.c:80:18: note: code may be misoptimized unless '-fno-strict-aliasing' is used [ 239s] collect2: error: ld returned 1 exit status ... move several global extern decls to cli.h. Found on SUSE Tumbleweed w/ gcc-10 and LTO. This bug goes back at least as far as release-6. Curiously this only popped up as an error when building 6.9, not 7.4 or 8.0. And not when building 8.0 on Fedora rawhide/33. Change-Id: I765642cea77b524a36368a7ff1a2976ef049dd0f Fixes: #1356 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* xlator/mgmt/glusterd: lto-type-mismatchKaleb S. KEITHLEY2020-07-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | Seen in fedora rawhide/33, and SUSE tumbleweed, in all versions going back at least as far as glusterfs-6. [ 351s] glusterd.c:68:13: warning: type of 'snap_mount_dir' does not match original declaration [-Wlto-type-mismatch] [ 351s] 68 | extern char snap_mount_dir[PATH_MAX]; [ 351s] | ^ [ 351s] glusterd-snapshot.c:65:6: note: array types have different bounds [ 351s] 65 | char snap_mount_dir[VALID_GLUSTERD_PATHMAX]; [ 351s] | ^ [ 351s] glusterd-snapshot.c:65:6: note: 'snap_mount_dir' was previously declared here In this case it's only a warning, but certainly merits fixing. Another case where a decl in a header file instead of open-coding extern decls in multiple .c files would have been preferable. Change-Id: Idc91e536a56a1a7717be83ed27698069e71dff67 Updates: #1002 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* features/shard: Convert shard block indices to uint64Krutika Dhananjay2020-07-082-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>
* glusterd: null dereferencenik-redhat2020-07-083-5/+5
| | | | | | | | | | | | | | | | | | | | Issue: There has been either an explicit null dereference or a dereference after null check in some cases. Fix: Added the proper condition for null check and fixed null derefencing. CID: 1430106 : Dereference after null check CID: 1430120 : Explicit null dereferenced CID: 1430132 : Dereference after null check CID: 1430134 : Dereference after null check Change-Id: I7e795cf9f7146a633097c26a766f16b159881fa3 Updates: #1060 Signed-off-by: nik-redhat <nladha@redhat.com>
* afr: null dereference & nagative valuenik-redhat2020-07-082-2/+2
| | | | | | | | | | | | | | Added a check for NULL before dereferencing the object as it may be NULL in few cases inside the funtion. Also, added a check for the negative value of gfid_idx. CID: 1430140 CID: 1430145 Change-Id: Ib7d23459b48bbc471dbcccab6d20572261882d11 Updates: #1060 Signed-off-by: nik-redhat <nladha@redhat.com>
* libglusterfs, glusterd: tweak directory scanningDmitry Antipov2020-07-076-50/+40
| | | | | | | | | Replace an over-engineered GF_SKIP_IRRELEVANT_ENTRIES() with inline function gf_irrelevant_entry(), adjust related users. Change-Id: I6f66c460f22a82dd9ebeeedc2c55fdbc10f4eec5 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Fixes: #1350
* geo-rep: Fix corner case in rename on mkdir during hybrid crawlSunny Kumar2020-07-071-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> Change-Id: I8b926899c60ad8c4ffc886d57028ba70fd21e332 Fixes: #1250 Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
* build: improve support for sanitizersDmitry Antipov2020-07-062-28/+37
| | | | | | | | Fix --enable-asan and --enable-tsan, add --enable-ubsan. Change-Id: Ifb3c44107ecaee4cad4bc88dd81c49c6cd691764 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Fixes: #1320
* glusterfsd - fixing a coverity issueBarak Sason Rofman2020-07-061-0/+1
| | | | | | | | | Fixing a resource leak issue Change-Id: I6c75de02887ddd59f7edfd65ebeca9d9629c6f1f CID: 1430129 updates: #1202 Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
* tests: added volume operations to increase code coveragenik-redhat2020-07-065-14/+144
| | | | | | | | | | | | Added test for volume options like localtime-logging, fixed enable-shared-storage to include function coverage and few negative tests for other volume options to increase the code coverage in the glusterd component. Change-Id: Ib1706c1fd5bc98a64dcb5c8b15a121d639a597d7 Updates: #1052 Signed-off-by: nik-redhat <nladha@redhat.com>
* glusterd: change the log-level to WarningSanju Rakonde2020-07-061-1/+1
| | | | | | | | | Reason for changing the log-level stated at the github isse fixes: #1353 Change-Id: I21202075916c5a7525e5f26e7fb595efe7717b66 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* api: libgfapi symbol versions break LTO in Fedora rawhide/f33Kaleb S. KEITHLEY2020-07-036-355/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The way symbol versions are implemented is incompatible with gcc-10 and LTO. Fedora provenpackager Jeff Law (law [at] redhat.com) writes in the Fedora dist-git glusterfs.spec: This package uses top level ASM constructs which are incompatible with LTO. Top level ASMs are often used to implement symbol versioning. gcc-10 introduces a new mechanism for symbol versioning which works with LTO. Converting packages to use that mechanism instead of toplevel ASMs is recommended. In particular, note that the version of gluster in Fedora rawhide/f33 is glusterfs-8.0RC0. Once this fix is merged it will be necessary to backport it to the release-8 branch. At the time that gfapi symbol versions were first implemented we copied the GNU libc (glibc) symbol version implementation following Uli Drepper's symbol versioning HOWTO. Now gcc-10 has a symver attribute that can be used instead. (Maybe it has been there all along?) Both the original implemenation and this implemenation yield the same symbol versions. This can be seen by running `nm -D --with-symbol-versions libgfapi.so` on the libgfapi.so built before and after applying this fix. Change-Id: I05fda580afacfff1bfc07be810dd1afc08a92fb8 Fixes: #1352 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* Issue with gf_fill_iatt_for_direntSoumya Koduri2020-07-031-1/+1
| | | | | | | | | | | | In "gf_fill_iatt_for_dirent()", while calculating inode_path for loc, the inode should be of parent's. Instead it is loc.inode which results in error and eventually lookup/readdirp fails. This patch fixes the same. Change-Id: Ied086234a4634e8cb13520521ac547c87b3c76b5 Fixes: #1351 Signed-off-by: Soumya Koduri <skoduri@redhat.com>
* glusterd: rebalance status displays stats as 0 after rebootSanju Rakonde2020-07-021-9/+20
| | | | | | | | | | | | | | | | | | | | | | | problem: while the rebalance is in progress, if a node is rebooted rebalance v status shows the stats of this node as 0 once the node is back. Reason: when the node is rebooted, once it is back glusterd_volume_defrag_restart() starts the rebalance and creates the rpc. but due to some race, rebalance process is sending disconnect event, so rpc object is getting destroyed. As the rpc object is null, request for fetching the latest stats is not sent to rebalance process. and stats are shows as default values which is 0. Solution: When the rpc object null, we should create the rpc if the rebalance process is up. so that request can be sent to rebalance process using the rpc. fixes: #1339 Change-Id: I1c7533fedd17dcaffc0f7a5a918c87356133a81c Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* build: Pass $(LIB_DL) using prog_LDADD or lib_LIBADDAnoop C S2020-07-023-6/+6
| | | | | | | | | | | | | | | | | | "Program and Library Variables" section from Automake manual suggests the following: . . . _LDADD and _LIBADD are inappropriate for passing program-specific linker flags (except for -l, -L, -dlopen and -dlpreopen). Use the _LDFLAGS variable for this purpose. . . . Therefore it is reasonable to move $(LIB_DL) additon from _LDFLAGS to _LDADD and _LIBADD variables for program and library respectively. Change-Id: Id8b4734c207ab28a08bcce683d316cdc7acb0bcd Updates: #1000 Signed-off-by: Anoop C S <anoopcs@redhat.com>
* glusterd: removing unused macronik-redhat2020-07-021-5/+2
| | | | | | | | | | | Removed the macro 'GD_MSG_DICT_SERL_LENGTH_GET_FAIL' from the glusterd-messages file as 'GD_MSG_DICT_ALLOC_AND_SERL_LENGTH_GET_FAIL' is used in it's place Change-Id: I69d7d95b5cb8f1bdd7e616d7a3e9539e891ba378 Fixes: #874 Signed-off-by: nik-redhat <nladha@redhat.com>
* MAINTAINERS: update to AFR maintainersRavishankar N2020-07-011-1/+2
| | | | | | | | | | | | | -P: Ravishankar N <ravishankar@redhat.com> +M: Ravishankar N <ravishankar@redhat.com> +P: Karthik US <ksubrahm@redhat.com> Based on contributions + subject matter knowledge and ack from current maintainer and project architects. updates: #1000 Change-Id: Iae7770094adda24331f17c260e9966816d9cf9be Signed-off-by: Ravishankar N <ravishankar@redhat.com>
* NetBSD build fixesEmmanuel Dreyfus2020-06-304-3/+10
| | | | | | | | | | | | | - Make sure -largp is used at link time - PTHREAD_MUTEX_ADAPTIVE_NP is not available, use PTHREAD_MUTEX_DEFAULT instead - Avoid non POSIX [[ ]] in scripts - Do not check of lock.spinlock is NULL since it is not a pointer (it is not a pointer on Linux either) Change-Id: I5e04a7c552d24f8a473c2b837828d1bddfa7e128 Fixes: #1347 Type: Bug Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
* glusterd: additional log informationnik-redhat2020-06-2931-569/+2077
| | | | | | | | | | | | | | | Issue: Some of the functions didn't had sufficient logging of information in case of failure. Fix: Added log information in few functions in case of failure indicating the cause of such event. Change-Id: I301cf3a1c8d2c94505c6ae0d83072b0241c36d84 fixes: #874 Signed-off-by: nik-redhat <nladha@redhat.com>
* Revert "dht - fixing xattr inconsistency"Barak Sason Rofman2020-06-252-117/+0
| | | | | | | | | | | | This reverts commit 620158475f462251c996901a8e24306ef6cb4c42. The patch to revert is https://review.gluster.org/#/c/glusterfs/+/24613/ Reverting is required as comments were posted regarding a more efficient implementation were made after the patch was merged. A new patch will be posted to adress the comments will be posted. updates: #1324 Change-Id: I59205baefe1cada033c736d41ce9c51b21727d3f Signed-off-by: Barak Sason Rofman <redhat@gmail.com>
* dht - fixing xattr inconsistencyBarak Sason Rofman2020-06-252-0/+117
| | | | | | | | | | | | | The scenario of setting an xattr to a dir, killing one of the bricks, removing the xattr, bringing back the brick results in xattr inconsistency - The downed brick will still have the xattr, but the rest won't. This patch add a mechanism that will remove the extra xattrs during lookup. fixes: #1324 Change-Id: Ibcc449bad6c7cb46bcae380e42e4496d733b453d Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
* storage/posix, libglusterfs: library function to sync filesystemDmitry Antipov2020-06-225-17/+39
| | | | | | | | Convert an ad-hoc hack to a regular library function gf_syncfs(). Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Change-Id: I3ed93e9f28f22c273df1466ba4a458eacb8df395 Fixes: #1329
* glusterd: add-brick command failureSanju Rakonde2020-06-216-49/+115
| | | | | | | | | | | | | | | Problem: add-brick operation is failing when replica or disperse count is not mentioned in the add-brick command. Reason: with commit a113d93 we are checking brick order while doing add-brick operation for replica and disperse volumes. If replica count or disperse count is not mentioned in the command, the dict get is failing and resulting add-brick operation failure. fixes: #1306 Change-Id: Ie957540e303bfb5f2d69015661a60d7e72557353 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* extras/systemd: Move StartLimitIntervalSec to [Unit] sectionAnoop C S2020-06-191-1/+2
| | | | | | | | | | | | | | | | | | | | | | | It has been a while since systemd moved[1] StartLimitInterval= and StartLimitBurst= options(along with some others) from [Service] to [Unit] section. Additionally StartLimitInterval= got renamed[2] to StartLimitIntervalSec= and can be configured only in [Service] section. Therefore making necessary modifications to avoid following warning: $ sudo systemd-analyze verify glusterd.service /usr/local/lib/systemd/system/glusterd.service:21: Unknown key name 'StartLimitIntervalSec' in section 'Service', ignoring. For backward compatability reasons those options configured in [Service] section are also honoured but officially documented in man systemd.unit(5)[3]. [1] https://github.com/systemd/systemd/commit/6bf0f408e4833152197fb38fb10a9989c89f3a59 [2] https://github.com/systemd/systemd/commit/f0367da7d1a61ad698a55d17b5c28ddce0dc265a [3] https://www.freedesktop.org/software/systemd/man/systemd.unit.html Change-Id: I72a5b65930ddcf1d84c7e66f11685fa9a6fbda9a Updates: #1000 Signed-off-by: Anoop C S <anoopcs@redhat.com>
* cli: fix data race when handling connection statusDmitry Antipov2020-06-184-11/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found with GCC ThreadSanitizer: WARNING: ThreadSanitizer: data race (pid=287943) Write of size 4 at 0x00000047dfa0 by thread T4: #0 cli_rpc_notify /path/to/glusterfs/cli/src/cli.c:313 (gluster+0x40a6df) #1 rpc_clnt_handle_disconnect /path/to/glusterfs/rpc/rpc-lib/src/rpc-clnt.c:821 (libgfrpc.so.0+0x13f04) #2 rpc_clnt_notify /path/to/glusterfs/rpc/rpc-lib/src/rpc-clnt.c:882 (libgfrpc.so.0+0x13f04) #3 rpc_transport_notify /path/to/glusterfs/rpc/rpc-lib/src/rpc-transport.c:520 (libgfrpc.so.0+0xf070) #4 socket_event_poll_err /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:1364 (socket.so+0x812c) #5 socket_event_handler /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2958 (socket.so+0xc453) #6 socket_event_handler /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2854 (socket.so+0xc453) #7 event_dispatch_epoll_handler /path/to/glusterfs/libglusterfs/src/event-epoll.c:640 (libglusterfs.so.0+0xcaf23) #8 event_dispatch_epoll_worker /path/to/glusterfs/libglusterfs/src/event-epoll.c:751 (libglusterfs.so.0+0xcaf23) #9 <null> <null> (libtsan.so.0+0x2d33f) Previous read of size 4 at 0x00000047dfa0 by thread T3 (mutexes: write M3587): #0 cli_cmd_await_connected /path/to/glusterfs/cli/src/cli-cmd.c:321 (gluster+0x40ca37) #1 cli_cmd_process /path/to/glusterfs/cli/src/cli-cmd.c:123 (gluster+0x40cc74) #2 cli_batch /path/to/glusterfs/cli/src/input.c:29 (gluster+0x40c2b9) #3 <null> <null> (libtsan.so.0+0x2d33f) Location is global 'connected' of size 4 at 0x00000047dfa0 (gluster+0x00000047dfa0) Change-Id: Ie85a8a80a2c5b82252c0c1d45e68ebe9938da2eb Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Fixes: #1311
* mount/fuse: use cookies to get fuse-interrupt-record instead of xdataPranith Kumar K2020-06-182-22/+7
| | | | | | | | | | | | | | | | | | | | | Problem: On executing tests/features/flock_interrupt.t the following error log appears [2020-06-16 11:51:54.631072 +0000] E [fuse-bridge.c:4791:fuse_setlk_interrupt_handler_cbk] 0-glusterfs-fuse: interrupt record not found This happens because fuse-interrupt-record is never sent on the wire by getxattr fop and there is no guarantee that in the cbk it will be available in case of failures. Fix: wind getxattr fop with fuse-interrupt-record as cookie and recover it in the cbk Fixes: #1310 Change-Id: I4cfff154321a449114fc26e9440db0f08e5c7daa Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
* features/locks: posixlk-clear-lock should set error as EINTRPranith Kumar K2020-06-181-2/+2
| | | | | | | | | | | | | | Problem: fuse on receiving interrupt for setlk sends clear-lock "fop" using virtual-getxattr. At the moment blocked locks which are cleared return EAGAIN errno as opposed to EINTR errno Fix: Return EINTR errno. Updates: #1310 Change-Id: I47de0fcaec370b267f2f5f89deeb37e1b9c0ee9b Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
* rpc: fix undefined behaviour in __builtin_ctzDmitry Antipov2020-06-175-41/+53
| | | | | | | | | | | | | | | | | | | | | | | | Found with GCC UBsan: rpcsvc.c:102:36: runtime error: passing zero to ctz(), which is not a valid argument #0 0x7fcd1ff6faa4 in rpcsvc_get_free_queue_index /path/to/glusterfs/rpc/rpc-lib/src/rpcsvc.c:102 #1 0x7fcd1ff81e12 in rpcsvc_handle_rpc_call /path/to/glusterfs/rpc/rpc-lib/src/rpcsvc.c:837 #2 0x7fcd1ff833ad in rpcsvc_notify /path/to/glusterfs/rpc/rpc-lib/src/rpcsvc.c:1000 #3 0x7fcd1ff8829d in rpc_transport_notify /path/to/glusterfs/rpc/rpc-lib/src/rpc-transport.c:520 #4 0x7fcd0dd72f16 in socket_event_poll_in_async /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2502 #5 0x7fcd0dd8986a in gf_async ../../../../libglusterfs/src/glusterfs/async.h:189 #6 0x7fcd0dd8986a in socket_event_poll_in /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2543 #7 0x7fcd0dd8986a in socket_event_handler /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2934 #8 0x7fcd0dd8986a in socket_event_handler /path/to/glusterfs/rpc/rpc-transport/socket/src/socket.c:2854 #9 0x7fcd2048aff7 in event_dispatch_epoll_handler /path/to/glusterfs/libglusterfs/src/event-epoll.c:640 #10 0x7fcd2048aff7 in event_dispatch_epoll_worker /path/to/glusterfs/libglusterfs/src/event-epoll.c:751 ... Fix, simplify, and prefer 'unsigned long' as underlying bitmap type. Change-Id: If3f24dfe7bef8bc7a11a679366e219a73caeb9e4 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Fixes: #1283
* volgen: add an option to disable aclAmar Tumballi2020-06-172-2/+26
| | | | | | | | | | | | | | | Also add a message saying this is to be used only for 'debug' purpose only. This is helpful to corner the issue to acl. There were recently many issues reported related to permissions, and acl access denied bugs. The bugs were elsewhere, but to validate them and to get people back to service (in certain cases like oVirt, where gluster volumes are used mostly by single user), this option can be used. Updates: #876 Change-Id: I7be4401153607e11c9efb831ab794df4176604df Signed-off-by: Amar Tumballi <amar@kadalu.io>
* tests/glusterd: spurious failure of ↵Sanju Rakonde2020-06-171-3/+15
| | | | | | | | | | | | | | | | | | | | tests/bugs/glusterd/mgmt-handshake-and-volume-sync-post-glusterd-restart.t Test Summary Report ------------------- tests/bugs/glusterd/mgmt-handshake-and-volume-sync-post-glusterd-restart.t (Wstat: 0 Tests: 23 Failed: 3) Failed tests: 21-23 After glusterd restart, volume start is failing. Looks like, it need some time to sync the data. Adding sleep for the same. Note: All other changes are made to avoid spurious failures in the future. fixes: #1272 Change-Id: Ib184757fb936e03b5b6208465e44a8e790b71c1c Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* locks: prevent deletion of locked entriesXavi Hernandez2020-06-177-113/+674
| | | | | | | | | | | | | | To keep consistency inside transactions started by locking an entry or an inode, this change delays the removal of entries that are currently locked by one or more clients. Once all locks are released, the removal is processed. It has also been improved the detection of stale inodes in the locking code of EC. Fixes: #990 Change-Id: Ic8ba23d9480f80c7f74e7a310bf8a15922320fd5 Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
* glusterd: migrating remove-brick commands to mgmt v3 frameworkSanju Rakonde2020-06-173-9/+136
| | | | | | | | | | | Currently remove-brick commands follow sync-op framework. For code extensibility (like, adding more phases in the trnasaction) we are migrating the command to mgmt v3 framework. fixes: #1164 Change-Id: I5d363223d6f9dc7a70b61adb9d3a5250e84a71b4 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* packaging: refactor to align with common practicesKaleb S. KEITHLEY2020-06-161-0/+11
| | | | | | | | Apparently some sdditional Obsoletes: are required Change-Id: I919ae5a0fcc6f720e3eab4784af36977b9eef044 Fixes: #1126 Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
* afr: more quorum checks in lookup and new entry markingRavishankar N2020-06-164-13/+25
| | | | | | | | | | | | | | | | Problem: See github issue for details. Fix: -In lookup if the entry exists in 2 out of 3 bricks, don't fail the lookup with ENOENT just because there is an entrylk on the parent. Consider quorum before deciding. -If entry FOP does not succeed on quorum no. of bricks, do not perform new entry mark. Fixes: #1303 Change-Id: I56df8c89ad53b29fa450c7930a7b7ccec9f4a6c5 Signed-off-by: Ravishankar N <ravishankar@redhat.com>
* extras: Modify group 'virt' to include network-related optionsKrutika Dhananjay2020-06-151-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>
* Indicate timezone offsets in timestampsCsaba Henk2020-06-1523-190/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Logs and other output carrying timestamps will have now timezone offsets indicated, eg.: [2020-03-12 07:01:05.584482 +0000] I [MSGID: 106143] [glusterd-pmap.c:388:pmap_registry_remove] 0-pmap: removing brick (null) on port 49153 To this end, - gf_time_fmt() now inserts timezone offset via %z strftime(3) template. - A new utility function has been added, gf_time_fmt_tv(), that takes a struct timeval pointer (*tv) instead of a time_t value to specify the time. If tv->tv_usec is negative, gf_time_fmt_tv(... tv ...) is equivalent to gf_time_fmt(... tv->tv_sec ...) Otherwise it also inserts tv->tv_usec to the formatted string. - Building timestamps of usec precision has been converted to gf_time_fmt_tv, which is necessary because the method of appending a period and the usec value to the end of the timestamp does not work if the timestamp has zone offset, but it's also beneficial in terms of eliminating repetition. - The buffer passed to gf_time_fmt/gf_time_fmt_tv has been unified to be of GF_TIMESTR_SIZE size (256). We need slightly larger buffer space to accommodate the zone offset and it's preferable to use a buffer which is undisputedly large enough. This change does *not* do the following: - Retaining a method of timestamp creation without timezone offset. As to my understanding we don't need such backward compatibility as the code just emits timestamps to logs and other diagnostic texts, and doesn't do any later processing on them that would rely on their format. An exception to this, ie. a case where timestamp is built for internal use, is graph.c:fill_uuid(). As far as I can see, what matters in that case is the uniqueness of the produced string, not the format. - Implementing a single-token (space free) timestamp format. While some timestamp formats used to be single-token, now all of them will include a space preceding the offset indicator. Again, I did not see a use case where this could be significant in terms of representation. - Moving the codebase to a single unified timestamp format and dropping the fmt argument of gf_time_fmt/gf_time_fmt_tv. While the gf_timefmt_FT format is almost ubiquitous, there are a few cases where different formats are used. I'm not convinced there is any reason to not use gf_timefmt_FT in those cases too, but I did not want to make a decision in this regard. Change-Id: I0af73ab5d490cca7ed8d07a2ce7ac22a6df2920a Updates: #837 Signed-off-by: Csaba Henk <csaba@redhat.com>