summaryrefslogtreecommitdiffstats
path: root/xlators
Commit message (Collapse)AuthorAgeFilesLines
* afr: add null check for thin-arbiter gfid.Ravishankar N2020-08-204-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>
* features/shard: optimization over shard lookup in case of preallocVinayakswami Hariharmath2020-08-201-7/+39
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Missing link to mntent_compat for glusterdDaniel Morante2020-08-191-2/+4
| | | | | Change-Id: I5d6d38759de4492de3256995e79d01b9ed7befef Fixes: #1376
* FreeBSD patches for fuse mount utilityDaniel Morante2020-08-191-1/+8
| | | | | Change-Id: Ib2bac85c28905bb8997fbb64db2308f2a6f31720 Fixes: #1376
* glusterd: performance improvementnik-redhat2020-08-184-69/+83
| | | | | | | | | | | | | | | | | | | | | | Issue: In the glusertd_op_stage_create_volume(), fetching of values from the dict is done, whereas same values are fetched by glusterd_check_brick_order() which is called from that function. This leads to unnecssary performance overhead. Fix: Instead of fetching the values again, passing the values to the glusterd_check_brick_order() if it's fethced before, else a NULL is passed and then only fetching is done here. Also, few changes are made to the code to reduce the cost of operations such as 'fast fail' for false conditions and a bit of code clean up. Fixes: #1397 Change-Id: Ic7b523adbca8eb63ef9eb29c206e3b19e05c0815 Signed-off-by: nik-redhat <nladha@redhat.com>
* glusterd: memory deallocated twicenik-redhat2020-08-181-9/+9
| | | | | | | | | | | | | | | | | | | | | Issue: If the the pointer tmptier is destroyed in the function code it still it checks for the same in the out label. And tries to destroy the same pointer again. Fix: So, instead of passing the ptr by value, if we pass it by reference then, on making the ptr in the function the value will persist, in the calling function and next time when the gf_store_iter_destory() is called it won't try to free the ptr again. CID: 1430122 Updates: #1060 Change-Id: I019cea8e301c7cc87be792c03b58722fc96f04ef Signed-off-by: nik-redhat <nladha@redhat.com>
* glusterd: shared storage mount fails in ipv6 environmentnik-redhat2020-08-181-0/+16
| | | | | | | | | | | | | | | | | Issue: In case of ipv6 environment, the mounting of glusterd_shared_storage volume fails as it doesn't recognises the ipv6 enviornment. Fix: In case of ipv6 environment, the address-family is passed to the hooks script on creating shared-storage, then depending upon the address-family --xlator-option=transport.address-family=inet6 option is added to the mount command, and the mounting succeeds. Fixes: #1406 Change-Id: Ib1888c34d85e6c01618b0ba214cbe1f57576908d Signed-off-by: nik-redhat <nladha@redhat.com>
* libglusterfs: add library wrapper for time()Dmitry Antipov2020-08-1715-28/+31
| | | | | | | | | Add thin convenient library wrapper gf_time(), adjust related users and comments as well. Change-Id: If8969af2f45ee69c30c3406bce5baa8305fb7f80 Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Updates: #1002
* afr/split-brain: fix client side split-brain resolution when quorum is enabledMohammed Rafi KC2020-08-134-16/+49
| | | | | | | | | | | | | | | | | | Problem: If we set favourite child policy, then automatic split-brain resolution should work in all cases. This was failing when quorum count was set to a non-zero value. The initial lookup before the read txn was failing with ENOTCONN. Since we don't have a readable subvol, we were failing it. We were only looking to the split brain resolution choice set through the cli command. Fix: We will now consider the favourite child policy if split-brain choice has not been set via cli command. Change-Id: Id2016c3a90d0763ac6f1a0131571053f595576f0 Fixes: #1404 Signed-off-by: Mohammed Rafi KC <rafi.kavungal@iternity.com>
* glusterd: Increase buffer length to save multiple hostnames in peer fileMohit Agrawal2020-08-041-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>
* dht: optimize rebalance crawl pathSusant Palai2020-07-314-5/+524
| | | | | | | | | | | | | | | | | | | | | | For distribute only volumes we can use the information for local subvolumes to avoid syncop calls which goes through the whole stack to fetch stat and entries. A separate function gf_defrag_fix_layout_puredist is introduced. TODO: A glusterd flag needs to be introduced in case we want to fall back to run the old way. Perf numbers: DirSize - 1Million Old New %diff Depth - 100 (Run 1) 353 74 +377% Depth - 100 (Run 2) 348 72 +377~% Depth - 50 246 122 +100% Depth - 3 174 114 +52% Change-Id: I67cc136cebd34092fd775e69f74c2d5b33d3156d Fixes: #1242 Signed-off-by: Susant Palai <spalai@redhat.com>
* glusterd/auth.allow : allow add-brick from peersSanju Rakonde2020-07-304-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | Problem: When auth.allow list is set to some ip's, add-brick operation is failing. Cause: add-brick commands creates a temparary mount on the bricks to set the extended attributes on the brick mount points. When auth.allow list is set to default i.e, * (all) we will not see any issue, but when it is set to certain ip's add-brick operation fails as temparory mount on the bricks fails because the peers are not part of auth.allow list. Solution: When auth.allow list is already set, add all the peers to the auth.allow list during add-brick operation. the old list will be replaced in post commit phase. As this can happen with replace-brick operation as well, added code to handle it. updates: #1391 Change-Id: I5ede8c35f05ab25ff431b88e074ddbe9c10a90f1 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* cluster/ec: Remove stale entries from indices/xattrop folderAshish Pandey2020-07-292-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>
* glusterd: fix resource leakSheetal Pamecha2020-07-291-0/+1
| | | | | | | CID: 1430146 Change-Id: Icce4ffa0e78575b110e0cfd9d5cfd133141680c1 Updates: #1060 Signed-off-by: Sheetal Pamecha <spamecha@redhat.com>
* libglusterfs/xlator: undefined symbol xlator_apinik-redhat2020-07-271-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Issue: On executiing the command gluster vol set help, an error comes up in glusterd logs stating `undefined symbol: xlator_api`. This issue is seen for the rpc-transport/socket.so file. Fix: The symbol `xlator_api` is not found in rpc-transport/socket.so file as it is not a xlator but a shared object for transport. In the `xlator.c` file, there is a function `xlator_volopt_dynload`, which looks for the default values of the options available in gluster, which is stored inside the respective xlator files for different voltypes. In each of these files the `options` object is present which contains the default values, which is therefore referenced from the `options` data member of `xlator_api` object in case of xlators.But, since `rpc-transport/socket.so` is not an xlator we don't have the `xlator_api` object present to point to that object. So, in case of `rpc-transport/socket.so` type we are accesing the `options` object directly from the `xlator_volopt_dynload` function to fetch the default values for the available options. Fixes: #827 Change-Id: I3b2b0c1f2a11896be250aaca1a33a65b044991d5 Signed-off-by: nik-redhat <nladha@redhat.com>
* fuse: change setlk interrupt strategy to 'sync'Csaba Henk2020-07-241-14/+5
| | | | | | | | | | | | | | | | | | | | | | | | | The setlk interrupt handler uses a 'fork' of the resolved fuse state from setlk (a copy with some edits) to initiate its own auxiliary fop. Thus the references stored in the fuse states of the setlk fop and of its interrupt handler are shared (apart from the ones edited by the interrupt handler -- but the bulk of them remain as is). The lifetimes of these references are tied to the setlk fop, which has established them by properly claiming their backing resources. To guarantee the validity of these references in the interrupt context, we need to make sure that the setlk fop did not reclaim the fuse state while the interrupt handler is running. In other words, the setlk fop needs to wait for the termination of the interrupt handler, which is accomplished by the 'sync' strategy of the interrupt API (passing true for the 'sync' argument of fuse_interrupt_finish_{fop,interrupt} functions). Change-Id: I9a6dc76972507be4b7ba8d023cc876e5fddf813f Updates: #1374 Signed-off-by: Csaba Henk <csaba@redhat.com>
* fuse: fix waiting for interrupt handlerCsaba Henk2020-07-242-7/+22
| | | | | | | | | | | | | | | | | | | | | | | With 'sync' strategy, a fop's cbk waits for the interrupt handler to finish by making a call to fuse_interrupt_finish_fop() with sync = true. The wait is implemented by monitoring an interrupt_state struct member via a condition variable. However, due to broken code logic, the pthread_cond_wait() call is never reached. This change introduces a new member to the fuse_interrupt_state_t enum (the type of aforementioned struct member), FUSE_INTERRUPT_WAITING_HANDLER, which is then used for indicating the state of waiting for the interrupt handler. Change-Id: I72ab06c37f45ff8f212a6a632bac1f647af05cbd Updates: #1374 Signed-off-by: Csaba Henk <csaba@redhat.com>
* Make FUSE notification optional at configure timeEmmanuel Dreyfus2020-07-231-4/+9
| | | | | | | | | | NetBSD FUSE does not implement FUSE notification yet. This changes makes this feature a configure time option so that it can be disabled. Fixes: #1381 Change-Id: I3d977d8d69b57e1ac6957be84a9ddbb69b100893 Type: Bug Signed-off-by: Emmanuel Dreyfus manu@netbsd.org
* glusterd: getspec() returns wrong response when volfile not foundTamar Shacked2020-07-231-2/+3
| | | | | | | | | | | | | | | In a cluster env: getspec() detects that volfile not found. but further on, this return code is set by another call so the error is lost and not handled. As a result the server responds with ambiguous message: {op_ret = -1, op_errno = 0..} - which cause the client to stuck. Fix: server side: don't override the failure error. fixes: #1375 Change-Id: Id394954d4d0746570c1ee7d98969649c305c6b0d Signed-off-by: Tamar Shacked <tshacked@redhat.com>
* Screen the .attribute directory on NetBSDEmmanuel Dreyfus2020-07-231-0/+39
| | | | | | | | | | | This directory holds the extended attribute backing store on FFSv1 filesystems. It should be ignored by glusterfs just like the .glusterfs directory. Fixes: #1361 Change-Id: Ia259be2af722a651473a312b5044b431c2b01b10 Type: Bug Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
* multiple xlators: wording - replace blacklist, whitelistYaniv Kaul2020-07-232-12/+12
| | | | | | | | | | Replace the use of blacklist and whitelist within the code. No functional changes. Fixes: #1378 Change-Id: Iaa10e31c3d460f52bfd12da906789fccca5ba4d4 Signed-off-by: Yaniv Kaul <ykaul@redhat.com>
* dht - fixing xattr inconsistencyBarak Sason Rofman2020-07-227-13/+111
| | | | | | | | | | | | | | | | | 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. This patch is a modification to a previous patch based on comments that were made after merge: https://review.gluster.org/#/c/glusterfs/+/24613/ fixes: #1324 Change-Id: Ifec0b7aea6cd40daa8b0319b881191cf83e031d1 Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
* cluster/ec: Improve detection of new healsXavi Hernandez2020-07-226-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>
* glusterd: avoid crashSanju Rakonde2020-07-201-1/+2
| | | | | | | | | When dirp is null, we should not call sys_closedir() on it. fixes: #1379 Change-Id: I33633df983aeea11e9d685e41ed9ec58644b6258 Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
* 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>
* 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
* [RFC]glusterd-utils.c: display which options have changedYaniv Kaul2020-07-101-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-091-1/+9
| | | | | | | | | 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>
* 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>
* 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-074-34/+28
| | | | | | | | | 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
* 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>
* 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-022-4/+4
| | | | | | | | | | | | | | | | | | "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>
* NetBSD build fixesEmmanuel Dreyfus2020-06-301-2/+2
| | | | | | | | | | | | | - 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-251-63/+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-251-0/+63
| | | | | | | | | | | | | 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-221-17/+2
| | | | | | | | 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-214-46/+67
| | | | | | | | | | | | | | | 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>
* mount/fuse: use cookies to get fuse-interrupt-record instead of xdataPranith Kumar K2020-06-181-21/+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>
* 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>