With this patch we are replacing the existing cluster-wide lock taken on glusterds across the cluster, with volume locks which are also taken on glusterds across the cluster, but are volume specific. So with the volume locks we are able to perform more than one gluster operation at the same time, as long as the operations are being performed on different volumes. We maintain a global list of volume-locks (using a dict for a list) where the key is the volume name, and which saves the uuid of the originator glusterd. These locks are held and released per volume transaction. In order to acheive multiple gluster operations occuring at the same time, we also separate opinfos in the op-state-machine, as a part of this patch. To do so, we generate a unique transaction-id (uuid) per gluster transaction. An opinfo is then associated with this transaction id, which is used throughout the transaction. We maintain a run-time global list(using a dict) of transaction-ids, and their respective opinfos to achieve this. Upstream Feature Page: http://www.gluster.org/community/documentation/index.php/Features/glusterd-volume-locks Change-Id: Iaad505a854bac8de8f83beec0357eb6cde3f7ea8 BUG: 1011470 Signed-off-by: Avra Sengupta <asengupt@redhat.com> Reviewed-on: http://review.gluster.org/5994 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Regression tests framework for GlusterFS
Prereq
- Build and install the version of glusterfs with your changes. Make sure the installed version is accessible from $PATH.
How-To
- To mount glusterfs, NEVER use 'mount -t glusterfs', instead use 'glusterfs -s ' method. This is because with the patch build setup doesnot install the /sbin/mount.glusterfs necessary, where as the glusterfs binary will be accessible with $PATH, and will pick the right version.
- (optional) Set environment variables to specify location of export directories and mount points. Unless you have special requirements, the defaults should just work. The variables themselves can be found at the top of tests/include.rc. All of them can be overriden with environment variables.
Usage
-
Execute
/usr/share/glusterfs/run-tests.sh
as root. -
If some test cases fail, report to GlusterFS community at
gluster-devel@nongnu.org
.
Reminder
- BE WARNED THAT THE TEST CASES DELETE /var/lib/glusterd/* !!!