protocol: code cleanup

make dict serialize and unserialization code a macro

Change-Id: I459c77c6c1f54118c6c94390162670f4159b9690
BUG: 764890
Signed-off-by: Amar Tumballi <amar@gluster.com>
Reviewed-on: http://review.gluster.com/2742
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
core: add an extra flag to readv()/writev() API

needed to implement a proper handling of open flag alterations
using fcntl() on fd.

Change-Id: Ic280d5db6f1dc0418d5c439abb8db1d3ac21ced0
Signed-off-by: Amar Tumballi <amar@gluster.com>
BUG: 782265
Reviewed-on: http://review.gluster.com/2723
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
features/marker: set loc->gfid in setxattr initiated from marker.

Change-Id: I7abb62272b7c8bb25ad37cbc13da7b4713924b7a
BUG: 787151
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Reviewed-on: http://review.gluster.com/2736
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
cluster/stripe: Support for NFS anonymous fd's

Moving storing of all ctx info to inode ctx. anonymous fd's do not
have the ctx stored in them, hence readv/writev can fail.
Open call does not need the additional lookup calls, as all the
required fctx info will be available in the inode ctx populated
any one of the following create/mknod/lookup

Change-Id: I94ca69ff821d46ac8ed3ba1b87b97a3d1c736566
BUG: 786095
Signed-off-by: shishir gowda <shishirng@gluster.com>
Reviewed-on: http://review.gluster.com/2726
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
features/quota: fix a crash in fgetxattr() by checking for NULL arg

'name' can be NULL in getxattr() as it is overloaded in glusterfs
code to support listxattr() too.

Change-Id: I70ccee027828e9b2b08da770f513c4edc5c7a46b
BUG: 772601
Signed-off-by: Amar Tumballi <amar@gluster.com>
Reviewed-on: http://review.gluster.com/2743
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
locks: Added a getxattr interface to clear locks on a given inode.

getxattr returns a summary of no. of inodelks/entrylks cleared.
cmd_structure: trusted.glusterfs.clrlk.t<type>.k<kind>[.{range|basename}]
where,
type = "inode"| "entry"| "posix"
kind = "granted"| "blocked" | "all"
range = off,a-b, where a, b = 'start', 'len' from offset 'off'

Change-Id: I8a771530531030a9d4268643bc6823786ccb51f2
BUG: 789858
Signed-off-by: Krishnan Parthasarathi <kp@gluster.com>
Reviewed-on: http://review.gluster.com/2551
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
rpc : fix the leak with glusterfs v2 auth structure conversion

both 'groups' and 'lkowner' were getting leaked after the conversion

Change-Id: Iab7cc1cf5afdad18ead9f33e6ccf98e0a934a09a
BUG: 790298
Signed-off-by: Amar Tumballi <amar@gluster.com>
Reviewed-on: http://review.gluster.com/2746
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
protocol xdr: remove 'path<>'

client was sending 'path' on wire, which gets ignored on server
side, and also doesn't get freed up, which causes memory leak.

also with not having path on wire, the xdr size on wire most of the
time can remain constant, which helps in allocating RDMA buffers.

Change-Id: Ie0d36a670be60b02fd1e925c6f977b1a71def5cd
BUG: 790298
Signed-off-by: Amar Tumballi <amar@gluster.com>
Reviewed-on: http://review.gluster.com/2744
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
glusterd: Fail volume 'modify' operations when rb is ongoing

* add-brick, stop-volume, remove-brick are the operations that are explicitly
 'failed' when attempted while replace-brick is in progress.
* we attach the volume-id to the dst_brick volfile ensuring that the replace-brick
  operation holds 'claim' on it.

Change-Id: If60b2af566ca940b2add600b473c99730e06ab47
BUG: 765470
Signed-off-by: Krishnan Parthasarathi <kp@gluster.com>
Reviewed-on: http://review.gluster.com/2740
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Allows Successful log rotation when no bricks are specified.

log rotate must happen for all the bricks if no specific
brick path is given as an argument for the command.

Change-Id: I39e55883fd301bedffae996384a8284119011951
BUG: 765578
Signed-off-by: Rahul C S <rahulcs@redhat.com>
Reviewed-on: http://review.gluster.com/2748
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
nfs: avoid logging invalid fdctx in case of anonymous fds

if get_fd_ctx fails (as in case of anonymous fds), overwhelming
amount of entries are seen in the nfs log, causing dd and other
heavy i/o operations to become unresponsive. this patch logs an
invalid fdctx only if it is not an anonymous fd.

Change-Id: I4e917d150d6a053af77d47a94a2f1c2633acadb5
BUG: 787365
Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com>
Reviewed-on: http://review.gluster.com/2747
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
mgmt/glusterd: changes to run nfs server and self-heal daemon with valgrind

Currently glusterd can start only the brick processes in the valgrind mode.
This patch ensures that nfs server and self-heal daemon are also started
with valgrind along with the bricks.

Change-Id: I3136deb58d54075627cdd204002eb26fdfdde462
BUG: 773600
Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Reviewed-on: http://review.gluster.com/2638
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
features/marker: copy the gfid to loc from oplocal->loc.inode

Change-Id: I8cfb70c163a3c4a0bd682678f71b38b5bae20ab4
BUG: 790393
Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Reviewed-on: http://review.gluster.com/2750
Reviewed-by: Vijay Bellur <vijay@gluster.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
cli: Enable output in XML

This patch enables gluster cli to output data in xml format. XML output can be
obtained by passing "--xml" as an argument.

A new "volume list" command, which lists the volumes present in a cluster, has
been added. This can be used for obtaining a quick list of volumes.

Several commands, including "volume top", "volume profile", "volume status" and
"volume info", "volume list", have custom XML output routines. Other commands
use either one of the 2 generic output routines, cli_xml_output_str() &
cli_xml_output_dict().
NOTE: When using "all" for "volume status" and "volume info" the XML output will
have multiple roots.

Change-Id: I6117baa02ec06fda116177dbd401f66521263ac6
BUG: 790713
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.com/2753
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
filter stripe internal xattrs from getxattr call

Change-Id: Ia0e9662644494c61033e7a7853353294598984af
BUG: 787964
Signed-off-by: Shylesh Kumar <shylesh@gluster.com>
Reviewed-on: http://review.gluster.com/2758
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
storage/posix: reset op_ret to -1 after call to MAKE_INODE_HANDLE

MAKE_INODE_HANDLE uses op_ret. We do not reset it to -1, and in few
instances we jump to label out, where we unwind with op_ret.

Change-Id: Iac4d9f250f5253b3ce0cd91cc385168247efd4a8
BUG: 788998
Signed-off-by: shishir gowda <shishirng@gluster.com>
Reviewed-on: http://review.gluster.com/2759
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
posix: handle some internal behavior in posix_mknod()

assume a case of link() systemcall, which is handled in distribute by
creating a 'linkfile' in hashed subvolume, if the 'oldloc' is present
in different subvolume. we have same 'gfid' for the linkfile as that
of file for consistency. Now, a file with multiple hardlinks, we may
end up with 'hardlinked' linkfiles. dht create linkfile using 'mknod()'
fop, and as now posix_mknod() is not equipped to handle this situation.

this patch fixes the situation by looking at the 'internal' key set in
the dictionary to differentiate the call which originates from inside
with regular system calls.

Change-Id: Ibff7c31f8e0c8bdae035c705c93a295f080ff985
BUG: 763844
Signed-off-by: Amar Tumballi <amar@gluster.com>
Reviewed-on: http://review.gluster.com/2755
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
protocol: remove the 'path<>' from rename() and link()

missed it in the previous round of cleanup, path is completely
useless in resolve function.

Change-Id: I1aef0f5276afb77dfacfcc0c337ac80b4fcacc55
Signed-off-by: Amar Tumballi <amar@gluster.com>
BUG: 790298
Reviewed-on: http://review.gluster.com/2756
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
cli: Fix for statedump crashing gluster processes

1. Fixes the bug in statedump causing the gluster process to crash when an unknown
option was given in the 'glusterdump.*.options' file.
2. Also fixes cli, making it send full statedump option strings even when only
partial option strings are given in 'volume statedump' command.
3. Minor change to order of operations during statedump to allow option parsing
errors to be written to the dump file.

Change-Id: Ic878cbca4dbf46b83fba0fd88fcb3c03f05ae46d
BUG: 772586
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.com/2706
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>
mount/fuse: unref the fd from resolve to avoid fd leak

Change-Id: I162e07219b98669bc6e09784830ca9407518fd8b
BUG: 794618
Signed-off-by: Raghavendra Bhat <raghavendrabhat@gluster.com>
Reviewed-on: http://review.gluster.com/2760
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vijay@gluster.com>