Release Notes for GlusterFS v 2.0.6: ------------------------------------ - Fixed an issue which would cause invalid files to be referred on the server, when a client re-connects after a disconnection - Bug 126 - Fixed random permission denied errors seen with distribute. - Bug 191 - Support for adding secondary --volfile-server option in mount.glusterfs - Bug 185 - IB-verbs buffer size increased to avoid frame losses - Bug 190 - Build errors on Solaris for libglusterfsclient fixed - Bug 115 - Fixed an issue in replicate which would affect coherent byte range locking - Bug 159 - mount.glusterfs works with non-bash shells also - Bug 139 - Some crashes fixed and minor tweaks added. Commit log of bugs fixed in GlusterFS v2.0.6: -------------------------------------------- commit 8dfdde57b38576270dd54f610b80f1288a16f09b Author: Vikas Gorur Date: Thu Aug 6 07:37:17 2009 +0000 Filter changelog xattrs in replicate The AFR changelog xattrs, "trusted.afr.*" are now filtered and prevented from being visible on the mountpoint. Signed-off-by: Anand V. Avati BUG: 9 (replicate's pending xattr's should not be visible on the mountpoint) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=9 commit 2be295d30acd61a919796227fef71f2757f88440 Author: Anand Avati Date: Thu Aug 6 21:51:33 2009 +0000 protocol/client: fixed registration of saved_fds In client_open_cbk, client_opendir_cbk the list_add_tail macros were invoked with wrong ordered arguments, causing the existing registered fd list to get unlinked from the saved_fds list. The effects of this is far fetched - when transport disconnects, open fds are no more marked bad as they are not reachable from the saved_fds list. After reconnection, resumed access on this fd causes reference to invalid fds on the server. It could appear in the form of 'unresolved fd' error, readdir happening on a file fd, files reading from other files, etc. Signed-off-by: Anand V. Avati BUG: 192 (sefault in posix-readdir) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=192 BUG: 126 (Immediate segfault when used for rootfs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=126 BUG: 173 ([ glusterfs 2.0.6rc1 ] - "server SEG fault") URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=173 BUG: 194 (Apache+Booster results in inconsistent download size using wget) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=194 commit f6ea2b29707d700596f73f3de8b7e09e824327d1 Author: Anand V. Avati Date: Thu Aug 6 00:57:44 2009 -0700 Removed BRANCH: tag commit bd56475921ef36effb162161b4d6423d7ac8e3f0 Author: Amar Tumballi Date: Tue Aug 4 18:34:15 2009 +0000 server-lookup: added path info from header to log message in the previous commit, the path info was removed to prevent the segfault, which instead could have been provided from request header directly. More specific information is required for debugging, and hence adding the path log. Signed-off-by: Anand V. Avati BUG: 189 (segfault in server-lookup) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=189 commit 925534952d05f828113ec45ff5c60294b76ef190 Author: Anand Avati Date: Tue Aug 4 18:15:22 2009 +0000 dht_stat_merge - use the highest uid when ambiguous When directories on different subvolumes have different ownerships, use the highest uid/gid till self-heal resolves the inconsistency Signed-off-by: Anand V. Avati BUG: 191 (random Permission denied errors) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=191 commit b834320d168feb54cf62bb1c0ae5af6f2704385e Author: Amar Tumballi Date: Tue Aug 4 18:14:30 2009 +0000 add check for making sure 'fd' belongs to directory in posix-readdir The root cause of this error is not found yet. But this check will make sure that there is no crash when the situation happens. Segfault can happen when a readdir() call comes over file's fd. Signed-off-by: Anand V. Avati BUG: 192 (sefault in posix-readdir) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=192 commit a313fd6657cb4a5310399edebe1f0c666e6a8d00 Author: Amar Tumballi Date: Tue Aug 4 17:00:17 2009 +0000 adding an option to mount.glusterfs for server failover while fetching volume files. Thanks to Cory Meyer With this option, 'single point of failure', in case of volfile server can be avoided. Signed-off-by: Anand V. Avati BUG: 185 (Request to support secondary volfile-server option in mount.glusterfs) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=185 commit fce2911e29e68bc3bf6fed2a68761877eda2156c Author: Amar Tumballi Date: Tue Aug 4 14:50:07 2009 +0000 increased ib-verbs buffer size Noticed that in few cases, where ib-verbs doesn't handle a bigger sized buffer to be sent across, which happens without problem in tcp. Caused frame losses in the case where server's reply msg was bigger, hence the msg got dropped at the server end. With this patch ib-verbs buffer size is fixed to 512KB. (4 x page-size) Signed-off-by: Anand V. Avati BUG: 190 (missing frames due to larger reply message size.. (ib-verbs)) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=190 commit 736624b3b930ecf0848bb3631af53df9d0b66f65 Author: Amar Tumballi Date: Tue Aug 4 14:40:27 2009 +0000 logging related bug fix in server_lookup() When 'dict_unserialize' failed, the log message was trying to print 'state->loc.path' and 'state->ino', which gets filled in later stages in flow. Caused segmentation fault when there was a failure. Signed-off-by: Anand V. Avati BUG: 189 (segfault in server-lookup) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=189 commit 3641846fa58210617c28f56b9713652f1a6dd798 Author: Vikas Gorur Date: Tue Aug 4 04:40:04 2009 +0000 cluster/afr: inode-read: Check stat buf for NULL before attempting to set inode number. Signed-off-by: Anand V. Avati BUG: 184 ([ glusterfs 2.0.6rc2 ] - Client Segfault while running fs-perf-test) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=184 commit 48b027c82322ef8c34c16e3da03a3375de3fe699 Author: Shehjar Tikoo Date: Fri Jul 31 12:37:40 2009 +0000 libglusterfsclient: Bind fd on fd creation code paths When an fd_t is fd_create'd, we need to call fd_bind on it to ensure that any fd_lookup on the inode gets us this fd. We're not doing this so translators like write-behind were not able to order path-based requests at all resulting in some fops like stat, which could be issued after a writev, overtaking a previous writev which is still being written-behind. Signed-off-by: Anand V. Avati BUG: 179 (fileop reports miscompares on read tests) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=179 commit cc58f457acfc452d8076b273c9bdab6cf0f9bb29 Author: Shehjar Tikoo Date: Fri Jul 31 04:15:13 2009 +0000 libglusterfsclient: Invalidate iattr cache on reads Earlier we have invalidated the iattr cache on writes. Now we need to do so for reads also, so that we are not updating the iattr cache with 0-filled stat received from io-cache. Signed-off-by: Anand V. Avati BUG: 180 (fileop fails at chmod with stale file handle error over unfs3) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=180 commit 5e3ca250dd50f5723bc6a2034c0d637f6cfd941d Author: Raghavendra G Date: Thu Jul 30 07:41:06 2009 +0000 afr: fix afr_utimens to wait for success of utimens on atleast priv->wait_count children. - need_unwind was initialised to 1 in afr_utimens_wind_cbk causing replicate to unwind just after first reply, irrespective of whether it was a success or failure. Signed-off-by: Anand V. Avati BUG: 71 (dns failure causing "Transport endpoint is not connected") URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=71 commit 65c03aa578340e78bd828f1f1aae991ef0cdc448 Author: Shehjar Tikoo Date: Thu Jul 30 12:04:54 2009 +0000 replicate: Return ino from first subvolume on inode creation fops Signed-off-by: Anand V. Avati BUG: 177 (replicate: On file/dir creation, replicate returns inode from random subvolumes) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=177 commit c8765d4d807cc9e63c8d96a568fc05002fa7cbd3 Author: Shehjar Tikoo Date: Thu Jul 30 12:04:26 2009 +0000 libglusterfsclient: Use iobufs for storing application write data Till now we've been creating an iovec, storing references in it to the application data and simply passing it on to the translator tree. This means that the buffer being passed to the translators is not at all associated with the memory ref'd by the iobref argument to write fop. This is a problem when write-behind is a translator in the tree since it assumes that the memory in the iovecs passed to write fops is already refcounted by the iobref and so it simply copies the address of the application data. The problem is that the application can continue using this buffer, free it or over-write it destroying the data that write-behind may write at a later time. The solution involves copying the application's write buffer into an iobuf which will be referred to by the iobref. Signed-off-by: Anand V. Avati BUG: 178 (libglusterfsclient: Data corruption on using write-behind in translator tree) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=178 commit bf93ef3c5d352f68d718e48ab2b5037b8b369413 Author: Shehjar Tikoo Date: Wed Jul 29 08:03:24 2009 +0000 booster: Fix fd leak due to incorrect NULL check Signed-off-by: Anand V. Avati BUG: 174 (booster: fd_ts, they are a leakin) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=174 commit e097c572b82a9c24b33d9eb00b87204ba44d6267 Author: Amar Tumballi Date: Mon Jul 27 16:49:14 2009 +0000 server-protocol: fix in server-loc-fill() to continue with 'hashed' inode, even if inode_path() on the inode fails. This will is needed for few lock operations, to unlock the lock held on inode. (ie, it fixes 'rm -rf *' hang issue, seen from multiple clients). Signed-off-by: Anand V. Avati BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112 commit c6fcc71d720b1cd550a8f1386020567786acf3b2 Author: Shehjar Tikoo Date: Tue Jul 28 04:51:15 2009 +0000 libglusterfsclient: Fix solaris build error Signed-off-by: Anand V. Avati BUG: 115 (./configure adds libglusterfsclient when it shouldn't) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=115 commit 666243d4b665e4e7db08c39fd62d12cabde9f428 Author: Vikas Gorur Date: Thu Jul 23 11:25:01 2009 +0000 cluster/afr: Use user-supplied struct flock to STACK_WIND afr_lk_cbk: Use the original struct flock supplied by the user to do further STACK_WIND's, and not the flock returned by the previous STACK_WIND. Signed-off-by: Anand V. Avati BUG: 159 (Client hangs when coherent byte range locks is attempted in replicate setup) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=159 commit 4929a0f2fb31570906a4eb795b6c7655d107d3a9 Author: Basavanagowda Kanur Date: Fri Jul 24 06:25:53 2009 +0000 protocol/server: add checks for updatation of loc->parent in entrylk() or inodelk(). entrylk() and inodelk() should try to update loc->parent only if parent is not-NULL. because it is not an error to have loc->parent == NULL for entrylk() and inodelk() operations. Signed-off-by: Anand V. Avati BUG: 162 (Replication segfaults with many nodes) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=162 commit 698a573bfb167d8d6c51d07089995d861dd7fbd3 Author: Shehjar Tikoo Date: Fri Jul 24 09:30:54 2009 +0000 libglusterfsclient: Workaround for local memory corruption There seems to a reproduceable corruption specifically of the libglusterfs_client_local_t that is allocated for the read call. Therefore, the subsequent access to fd inside local leads to a segfault. This is a temporary fix. Signed-off-by: Anand V. Avati BUG: 164 (libglusterfsclient: Segfault due to memory corruption of frame local in libgf_client_read) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=164 commit 53438fa2826ea6a5ea9fd9751d797c2875c2dca5 Author: Vikas Gorur Date: Mon Jul 27 09:31:45 2009 +0000 cluster/afr: Return same inode number in stat buf for readv_cbk Remember the inode number that had been returned in lookup_cbk and set the stat buf->ino to the same. Signed-off-by: Anand V. Avati BUG: 166 (libglusterfsclient: Cached stat buf inode is different from ino in inode_t) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=166 commit 5a41851e86177e82a8d4ae1457972d5011466eef Author: Vikas Gorur Date: Mon Jul 27 04:29:26 2009 +0000 cluster/afr: Set inode number in unwind_buf in the inode-write calls. Signed-off-by: Anand V. Avati BUG: 166 (libglusterfsclient: Cached stat buf inode is different from ino in inode_t) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=166 commit 87071f027c47ac04b482527a2be58480b4fd5973 Author: Vikas Gorur Date: Wed Jul 15 09:36:36 2009 +0000 Return stat from read subvolume in dir-write ops. Signed-off-by: Anand V. Avati BUG: 138 (create family calls do not return stat buf from read child) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=138 commit c045d4264bb83fb5e5384379aa3a824fe3038dc8 Author: Vikas Gorur Date: Tue Jul 14 08:05:14 2009 +0000 Return stat info from read-child in all the inode-write ops Also modifies the inode-write ops to wait for the call to read-child to return (whether success or failure) before unwinding. Signed-off-by: Anand V. Avati BUG: 125 (stat information not returned from the same subvolume always) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=125 commit 683fda4bf09c66f2ec7a47a8e4a5f08461031352 Author: Anand V. Avati Date: Thu Jul 23 15:38:32 2009 -0700 enable libglusterfsclient build by default commit bea6b86ef6defba89274ef85667c56cb52c17d7b Author: Shehjar Tikoo Date: Thu Jul 23 16:19:26 2009 +0000 libglusterfsclient: Avoid overwrite of inode found through ino number In libgf_client_loc_fill, there is a possibility that all the ino, par and name are specified as non-NULL,non-zero args. So if an inode is located in the itable using the ino and the subsequent search for the inode using the par-ino and the file name does not result in an inode being found, the current code over-writes the inode that was found through the ino. The correct behaviour is to stop further searches if inode was already found using ino. Signed-off-by: Anand V. Avati BUG: 161 (unfs3 crashes on link system call by fileop) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161 commit c2733b13aaa6d38eb165e770a936f8bfc19bc685 Author: Shehjar Tikoo Date: Thu Jul 23 16:18:43 2009 +0000 libglusterfsclient: Fill new loc with target's ino on link In the loc_t of the link being created, we must fill in the inode of the old/target loc since this is a link operation. The inode_link to the new parent is called in libgf_client_link. This fixes a crash while running fileop over a fully-loaded dist-repl vol file. Ref: Bugzilla 161 Signed-off-by: Anand V. Avati BUG: 161 (unfs3 crashes on link system call by fileop) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=161 commit 2add5760c412d85f56a1ca2fc61ca743d1ee2a74 Author: Shehjar Tikoo Date: Mon Jul 20 01:25:36 2009 +0000 libglusterfsclient: Fake a fsid for every VMP This is needed to work around the replicate behaviour of possibly returning device number for the same file from different subvolumes. Signed-off-by: Anand V. Avati BUG: 148 (replicate: Returns st_dev from different subvols resulting in ESTALE thru unfs3booster) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=148 commit 7b90b90780d3bb5a1b4a1c060fac1d2c4eb2a8dc Author: Shehjar Tikoo Date: Sun Jul 19 03:25:45 2009 +0000 libglusterfsclient: Move DHT root-lookup workaround to init The workaround for the DHT requirement for a lookup on / needs to be done only once when the xlator graph is inited. Doing it on every path's lookup results in a major performance penalty when using distribute subvolumes upwards of 16, as reported by Avati. Ref: bug 152 Signed-off-by: Anand V. Avati BUG: 152 (libglusterfsclient: DHT workaround is a major performance bottleneck) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=152 commit 20a142f76834668b9e1674010ba5af0b4b441474 Author: Amar Tumballi Date: Fri Jul 17 18:38:32 2009 +0000 added timestamp to crash dump log. also did some minor enhancements in formating Signed-off-by: Anand V. Avati BUG: 151 (crash dump log should be in 'logviewer' friendly format) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=151 commit f4513b4de104f1c6f40f7bbe0a4bd698340db805 Author: Anand Avati Date: Fri Jul 17 15:34:14 2009 +0000 Do not failover readdir in replicate Backport of http://patches.gluster.com/patch/561/ to release-2.0 Also, the failover version of afr_readdir_cbk is buggy and crashes when it is called after a failover inevitably Signed-off-by: Anand V. Avati BUG: 150 (AFR readdir should not failover to other subvolume) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=150 commit 215b62f1db24bc7ff55d224046e343401d78c38b Author: Amar Tumballi Date: Fri Jul 17 14:13:37 2009 +0000 server: don't check for 'loc->parent' in entrylk and inodelk calls the lock operation on entry or inode is going to happen on only one inode, and it doesn't need dentry (with info on parent) for the lock operation to complete. Hence, in server_{inode,entry}lk() calls after server_loc_fill, we -should not- be checking for parent inode. Signed-off-by: Anand V. Avati BUG: 112 (parallel deletion of files mounted by different clients on the same back-end hangs and/or does not completely delete) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=112 commit f5f018e66eaba3bf8cd8896c179692f055b2b309 Author: Amar Tumballi Date: Fri Jul 17 14:13:14 2009 +0000 removed mod_glusterfs from the build future plan is to have httpd use booster and libglusterfsclient instead. Signed-off-by: Anand V. Avati commit 031eb508731b1727ef0fcb5c2d525adadf5ef2b1 Author: Amar Tumballi Date: Fri Jul 17 14:12:50 2009 +0000 change mount.glusterfs.in to work with non-bash shells too. removed 'fuction ' prefix to function definitions which was very much /bin/bash specific. Thanks to Brent A. Nelson for the patch. Signed-off-by: Anand V. Avati BUG: 139 (tiny glitch in mount.glusterfs in 2.0.4) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=139 commit f45ea4244288a2397b72c272184c9113ee0c1f08 Author: Amar Tumballi Date: Fri Jul 17 14:12:24 2009 +0000 break inode_path if the length of the path crosses PATH_MAX Signed-off-by: Anand V. Avati BUG: 134 (infinite loop in inode_path ()) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=134 commit dbccda35cdcad06208e2fc7554287b539e0060a6 Author: Shehjar Tikoo Date: Fri Jul 17 08:47:32 2009 +0000 libglusterfsclient: Invalidate not update iattr cache on writev Signed-off-by: Anand V. Avati BUG: 149 (libglusterfsclient interacts incorrectly with write-behind on writev) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=149 commit fe134d4b0b675f13f3c2aa1152a1380be7192ced Author: Harshavardhana Date: Tue Jun 16 10:34:44 2009 +0000 Remove the trailing "/" which fails build with new version of automake Signed-off-by: Anand V. Avati commit e40e361126d7843f1141c1568c39a10f8510cf42 Author: Erick Tryzelaar Date: Fri Jul 10 17:23:28 2009 +0000 Add a random initial offset to the afr round robin index This patch helps to distribute load across an afr cluster when you have clients with the same access patterns, such as in benchmarking or map-reduce. By randomly offsetting the initial read_child_rr, clients should distribute reads over the afr nodes on average. A better solution could be to randomly shuffle the children instead of chosing a different initial offset. This should average the reads better across the nodes, but I'm not sure if there are any other consequences to doing this. Signed-off-by: Anand V. Avati commit f1313842a25d8d162db36ba8afb2a34b224f41ca Author: Shehjar Tikoo Date: Tue Jul 14 09:41:54 2009 +0000 fuse-bridge: Export user.glusterfs-booster-mount xattr This needs to be exported in order to have the booster Mount Point Bypass technique work through libglusterfsclient. Booster uses the mount point to register with libglusterfsclient as a VMP. Subsequently, all file operations on the mounted GlusterFS mount point get redirected to libglusterfsclient. This fixes bug 136. Signed-off-by: Anand V. Avati BUG: 136 (booster does not redirect ops on GlusterFS mount point into libglusterfsclient) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=136