summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2016-03-11 18:38:30 +0100
committerNiels de Vos <ndevos@redhat.com>2016-03-12 06:34:06 -0800
commitab52c1e6966ca2ebafa2cd487f28972b90bc1421 (patch)
treee469390dc89a67af83783d0a1f1474dd0ee711a7
parent173eb1a056daef79cd593290250211d86de2cb82 (diff)
doc: release notes for GlusterFS 3.5.9v3.5.9release-3.5
BUG: 1306988 Change-Id: Iae465e6a35d475f3824e493036f4787802aacb26 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: https://review.gluster.org/13685 NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Smoke: Gluster Build System <jenkins@build.gluster.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
-rw-r--r--doc/release-notes/3.5.9.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/doc/release-notes/3.5.9.md b/doc/release-notes/3.5.9.md
new file mode 100644
index 00000000000..2cdf6774a0e
--- /dev/null
+++ b/doc/release-notes/3.5.9.md
@@ -0,0 +1,56 @@
+## Release Notes for GlusterFS 3.5.9
+
+This is a bugfix release. The [Release Notes for 3.5.0](3.5.0.md),
+[3.5.1](3.5.1.md), [3.5.2](3.5.2.md), [3.5.3](3.5.3.md), [3.5.4](3.5.4.md),
+[3.5.5](3.5.5.md), [3.5.6](3.5.6.md), [3.5.7](3.5.7.md) and [3.5.8](3.5.8.md)
+contain a listing of all the new features that were added and bugs fixed in the
+GlusterFS 3.5 stable release.
+
+### Bugs Fixed:
+
+- [1313968](https://bugzilla.redhat.com/1313968): Request for XML output ignored when stdin is not a tty
+- [1315559](https://bugzilla.redhat.com/1315559): SEEK_HOLE and SEEK_DATA should return EINVAL when protocol support is missing
+
+### Known Issues:
+
+- The following configuration changes are necessary for 'qemu' and 'samba vfs
+ plugin' integration with libgfapi to work seamlessly:
+
+ 1. `gluster volume set <volname> server.allow-insecure on`
+ 2. restarting the volume is necessary
+
+ ~~~
+ gluster volume stop <volname>
+ gluster volume start <volname>
+ ~~~
+
+ 3. Edit `/etc/glusterfs/glusterd.vol` to contain this line:
+
+ ~~~
+ option rpc-auth-allow-insecure on
+ ~~~
+
+ 4. restarting glusterd is necessary
+
+ ~~~
+ service glusterd restart
+ ~~~
+
+ More details are also documented in the Gluster Wiki on the [Libgfapi with qemu libvirt](http://www.gluster.org/community/documentation/index.php/Libgfapi_with_qemu_libvirt) page.
+
+- For Block Device translator based volumes open-behind translator at the
+ client side needs to be disabled.
+
+ ~~~
+ gluster volume set <volname> performance.open-behind disabled
+ ~~~
+
+- libgfapi clients calling `glfs_fini` before a successful `glfs_init` will cause the client to
+ hang as reported [here](http://lists.gnu.org/archive/html/gluster-devel/2014-04/msg00179.html).
+ The workaround is NOT to call `glfs_fini` for error cases encountered before a successful
+ `glfs_init`. This is being tracked in [Bug 1134050](https://bugzilla.redhat.com/1134050) for
+ glusterfs-3.5 and [Bug 1093594](https://bugzilla.redhat.com/1093594) for mainline.
+
+- If the `/var/run/gluster` directory does not exist enabling quota will likely
+ fail ([Bug 1117888](https://bugzilla.redhat.com/show_bug.cgi?id=1117888)).
+
okup_anonymous (inode);
/* if (fd); then we already have increased the refcount in
- __fd_lookup(), so no need of one more fd_ref().
+ __fd_lookup_anonymous(), so no need of one more fd_ref().
if (!fd); then both create and bind wont bump up the ref
count, so we have to call fd_ref() after bind. */
if (!fd) {
- fd = __fd_create (inode, (uint64_t)-1);
+ fd = __fd_create (inode, 0);
if (!fd)
return NULL;
+ fd->anonymous = _gf_true;
+
__fd_bind (fd);
__fd_ref (fd);
@@ -752,7 +772,7 @@ fd_anonymous (inode_t *inode)
gf_boolean_t
fd_is_anonymous (fd_t *fd)
{
- return (fd && fd->pid == -1);
+ return (fd && fd->anonymous);
}
@@ -900,7 +920,7 @@ fd_ctx_get (fd_t *fd, xlator_t *xlator, uint64_t *value)
}
-int
+static int
__fd_ctx_del (fd_t *fd, xlator_t *xlator, uint64_t *value)
{
int index = 0;
diff --git a/libglusterfs/src/fd.h b/libglusterfs/src/fd.h
index 42df22b95e7..a70707bc1bf 100644
--- a/libglusterfs/src/fd.h
+++ b/libglusterfs/src/fd.h
@@ -22,6 +22,7 @@
#include "glusterfs.h"
#include "locking.h"
#include "fd-lk.h"
+#include "common-utils.h"
struct _inode;
struct _dict;
@@ -38,12 +39,8 @@ struct _fd_ctx {
};
};
-/* If this structure changes, please have mercy on the booster maintainer
- * and update the fd_t struct in booster/src/booster-fd.h.
- * See the comment there to know why.
- */
struct _fd {
- uint64_t pid;
+ uint64_t pid;
int32_t flags;
int32_t refcount;
struct list_head inode_list;
@@ -53,6 +50,7 @@ struct _fd {
struct _fd_ctx *_ctx;
int xl_count; /* Number of xl referred in this fd */
struct fd_lk_ctx *lk_ctx;
+ gf_boolean_t anonymous; /* geo-rep anonymous fd */
};
typedef struct _fd fd_t;
@@ -118,10 +116,6 @@ fd_t *
fd_ref (fd_t *fd);
-fd_t *
-__fd_unref (fd_t *fd);
-
-
void
fd_unref (fd_t *fd);
@@ -153,8 +147,6 @@ fd_list_empty (struct _inode *inode);
fd_t *
fd_bind (fd_t *fd);
-fd_t *
-__fd_bind (fd_t *fd);
int
fd_ctx_set (fd_t *fd, xlator_t *xlator, uint64_t value);
@@ -167,7 +159,6 @@ fd_ctx_get (fd_t *fd, xlator_t *xlator, uint64_t *value);
int
fd_ctx_del (fd_t *fd, xlator_t *xlator, uint64_t *value);
-
int
__fd_ctx_set (fd_t *fd, xlator_t *xlator, uint64_t value);
@@ -176,20 +167,12 @@ int
__fd_ctx_get (fd_t *fd, xlator_t *xlator, uint64_t *value);
-int
-__fd_ctx_del (fd_t *fd, xlator_t *xlator, uint64_t *value);
-
-fd_t *
-__fd_ref (fd_t *fd);
-
void
fd_ctx_dump (fd_t *fd, char *prefix);
fdentry_t *
gf_fd_fdtable_copy_all_fds (fdtable_t *fdtable, uint32_t *count);
-fdentry_t *
-__gf_fd_fdtable_copy_all_fds (fdtable_t *fdtable, uint32_t *count);
void
gf_fdptr_put (fdtable_t *fdtable, fd_t *fd);
diff --git a/tests/bugs/bug-874272.t b/tests/bugs/bug-874272.t
new file mode 100755
index 00000000000..01793a36873
--- /dev/null
+++ b/tests/bugs/bug-874272.t
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+. $(dirname $0)/../include.rc
+
+cleanup;
+
+TEST glusterd
+TEST pidof glusterd
+TEST $CLI volume info;
+
+function volinfo_field()
+{
+ local vol=$1;
+ local field=$2;
+
+ $CLI volume info $vol | grep "^$field: " | sed 's/.*: //';
+}
+
+TEST $CLI volume create $V0 $H0:$B0/brick1;
+EXPECT 'Created' volinfo_field $V0 'Status';
+
+TEST $CLI volume start $V0;
+EXPECT 'Started' volinfo_field $V0 'Status';
+
+## Wait for volume to register with rpc.mountd
+sleep 5;
+
+#mount on a random dir
+TEST MOUNTDIR="/tmp/$RANDOM"
+TEST mkdir $MOUNTDIR
+TEST mount -t nfs -o vers=3,nolock,soft,intr $H0:/$V0 $MOUNTDIR;
+flag=0
+
+TEST touch $MOUNTDIR/testfile
+
+TEST GEOREPDIR="/tmp/$RANDOM"
+TEST mkdir $GEOREPDIR
+
+TEST $CLI volume geo-replication $V0 file:///$GEOREPDIR start
+
+for i in {1..500}; do cat /etc/passwd >> $MOUNTDIR/testfile; if [ $? -ne 0 ]; then flag=1; break; fi; done
+TEST [ $flag -eq 0 ]
+TEST rm -rf $GEOREPDIR
+
+TEST umount $MOUNTDIR
+TEST rm -rf $MOUNTDIR
+
+cleanup;
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c
index c4f93100faa..80d1e53a886 100644
--- a/xlators/storage/posix/src/posix-helpers.c
+++ b/xlators/storage/posix/src/posix-helpers.c
@@ -1014,7 +1014,7 @@ __posix_fd_ctx_get (fd_t *fd, xlator_t *this, struct posix_fd **pfd_p)
goto out;
}
- if (fd->pid != -1)
+ if (!fd_is_anonymous(fd))
/* anonymous fd */
goto out;