glusterfs SEGV on Fedora 17 from UFO fallocate(2) call

An upload of a file will cause the volume's glusterfs to SEGV
when it fields a FUSE_FALLOCATE op. Swift inspects libc to determine
if there is a symbol for fallocate(2) and if so will use it. And
while the libc in RHEL 6 does have fallocate(2), the version of
fuse in RHEL 6 does not support fallocate, and things are handled
gracefully elsewhere (the kernel perhaps?)

N.B. fallocate was added to version 7.19 of fuse. Fedora 17 and
later (and maybe earlier too) has 7.19. RHEL 6 still has 7.13.
Glusterfs uses the 7.13 version <linux/fuse.h>
(in contrib/fuse-include/fuse_kernel.h)

Thus on Fedora 17, with both fallocate(2) in libc and fallocate
support in fuse, the fallocate invocation is dispatched to glusterfs,
but the dispatch table (fuse_std_ops in
xlators/mount/fuse/src/fuse-bridge.c) is too short for one thing;
the fallocate opcode (43) indexes beyond the end of the table, and
even when that doesn't directly cause a SEGV, the NULL pointer at
that location does cause a SEGV when attempting to call the function
through the pointer.

BUG: 856704
Change-Id: I148acbf1265f01a15bd158f227c8a7cb9365606e
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/3938
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
All: License message change

License message changed for server-side, dual license GPLV2 and LGPLv3+.

Change-Id: Ia9e53061b9d2df3b3ef3bc9778dceff77db46a09
BUG: 852318
Signed-off-by: Varun Shastry <vshastry@redhat.com>
Reviewed-on: http://review.gluster.org/3940
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
glusterd: Fixed _is_prefix check for two file paths

Change-Id: Iad1f7c865c4ce5092d85379257ba7a5ec95f7ebc
BUG: 764890
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/3937
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
storage/posix: Option to set brick(of a volume)'s root dir's uid/gid

CLI
---
gluster volume set VOLNAME owner-uid uid
gluster volume set VOLNAME owner-gid gid
where uid,gid are the owner's user id and group id respectively that
would be set on the root of all brick (backend) fs.

TODO: uid/gid should not be -1. Today we don't validate that in CLI.

Change-Id: Ib6a2fb5e404691c5fe105a89faaeff3e1ab72e91
BUG: 853842
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/3891
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
cli: Fix double free in cli_add_key_group

Change-Id: I3c2f030ac7c53913612a3fbac5e582c47b005621
BUG: 851237
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/3943
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
mount/fuse: treat NULL gfid is a failure in lookup disregarding op_ret

It is not possible to inode_link() with a NULL gfid. If a lookup
(or any other "entry" op) returns a success but has a NULL gfid,
then treat it as a failure even if op_ret was 0.

Currently AFR does this when self-healing fails/aborts in certain
situations (like entrylk acquisition failure, gfid mismatch etc.)
returning a NULL gfid in struct iatt of lookup_cbk with op_ret = 0.
Fixing this is an independent patch and fuse-bridge needs to be
robust against such misformed replies in any case.

Change-Id: If5f75780c0b5b1303f466711f1992f90a77e768a
BUG: 856921
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/3952
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
gfapi: add symlink (auto resolution) support in resolver

- new internal API glfs_lresolve() for usage with APIs
  like glfs_lXXXX() (e.g. glfs_lstat())

Change-Id: I61c60af6bda3072f189684ad8ac9815d59f455fc
BUG: 839950
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/3866
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
features/quota: Avoid mem_put on null local

Problem:
QUOTA_STACK_UNWIND does not check if local is NULL before mem_put.
This leads to a callingfn log for every setxattr in quota.

Fix:
Made sure the mem_put happens only on non-null local in quota.

Additional changes:
Removed unused QUOTA_STACK_DESTROY macro.

Tests:
Peformed setfattr on the mount point and the Invalid argument
logs don't come anymore. Checked that the change does not introduce
any memory leak in quota.

Change-Id: Ie4534c7af0fff80e35d8510311055f930262594f
BUG: 856541
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.org/3936
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
protocol/server: dump the ltable and fd table related inodes only

Do not dump the entire inode table in the statedump. Instead dump
those inodes only which are present in fdtable or ltable.

Change-Id: If848f9a6198927b4cc0abd47339461f3ea41d6df
BUG: 844688
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/3848
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
glusterd: Fix remote processes not being shown in "volume status"

Also, refactor function name so it makes more sense.

Change-Id: I3bd3e1bdcacb522ddf4f39d09f73be1c53915362
BUG: 856480
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/3933
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Clean up of typepunning errors ( Strict aliasing warnings )

Change-Id: I48733967facc526fb523a8dc9bd068f8c5cc5971
BUG: 764282
Signed-off-by: Varun Shastry <vshastry@redhat.com>
Reviewed-on: http://review.gluster.org/3950
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
CLI: Displaying time as N/A when unix time is 0

Problem:
'volume top open' command was displaying '1970-01-01 00:00:00.000000' when no
file has opened yet.

Fix:
Made the fix in gf_time_fmt() to make it more generic according to patchset 1
review comment.

Change-Id: I748ed203bd0d9fbaac94b5b51ed708b34fccd434
BUG: 852000
Signed-off-by: Varun Shastry <vshastry@redhat.com>
Reviewed-on: http://review.gluster.org/3924
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
features/marker: if parent inode is NULL, then get it by inode_parent

* If parent inode is NULL (nameless lookups which uses gfid for looking up the
inode), then try to get it by inode_parent, instead of returning  which results
in the inode's contribution not being added to the list.

* Prevent exceesive logging while adding the inode's contribution to the list
  if the operation fails. (Check if the inode's gfid is null which indicates
  that the inode is not yet linked to the inode table and hence addition
  of its contribution to the list can fail).

Change-Id: I5300f00195ae92a5122613898ae3dabddb2d0bfe
BUG: 851953
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/3935
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
logging: log ENOENT errors in DEBUG mode instead of ERROR or INFO

Change-Id: I0a43769223991e4ad5206b4382d737a0c3557bf3
BUG: 851953
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/3934
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
cli/: Filter out the loopback address for brick creation.

Don't create the volumes with brick address 0.0.0.0 to 0.255.255.255
(http://en.wikipedia.org/wiki/Reserved_IP_addresses)

Change-Id: Ic5464ec370bddf498a5220acf2d367b877e21e66
BUG: 787627
Signed-off-by: Varun Shastry <vshastry@redhat.com>
Reviewed-on: http://review.gluster.org/3865
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
dual license

rebased

BUG: 820551
Change-Id: I9c51d68e52a9252c5a43af1677380a410ca69519
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/3856
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
mount/fuse: readdir() should return 32-bit inodes when 'enable-ino32' is used

The glusterfs mount option 'enable-ino32' does not change the behaviour
of readdir(). fuse_readdir_cbk() uses entry->d_ino directly, and this
was missed in commit c13823bd16b26bc471d3efb15f63b76fbfdf0309.

By adding the function gf_fuse_fill_dirent(), the fuse_dirent structure
is filled in a similar way as the fuse_attr structure. This helper uses
the same function to squash the 64-bit inode in a 32-bit attribute.

Change-Id: Ia20e7144613124a58691e7935cb793b6256aef79
BUG: 850352
URL: http://lists.nongnu.org/archive/html/gluster-devel/2012-09/msg00051.html
Tested-by: Steve Bakke <sbakke@netzyn.com>
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/3955
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
syncop: Implement access fop

Change-Id: I959144451790d7e47ae48564923d324451a9db23
BUG: 858602
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.org/3958
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
fuse: override 'gid-timeout' option to disable aux gid compatibility

while mounting -o gid-timeout=-1 will be treated as disabling aux-gid

Change-Id: I85c350868a8cc4a43f5e5aec9427222580da675b
BUG: 835834
Signed-off-by: Amar Tumballi <amarts@redhat.com>
Reviewed-on: http://review.gluster.org/3954
Reviewed-by: Brian Foster <bfoster@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
performance/io-cache: provide hook for dumping inode context

Change-Id: Idcf24200ad8f0cf018ab92118f6b77cc4b9edcab
BUG: 843787
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/3816
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>