7017 Commits

Author SHA1 Message Date
Harshavardhana
7808d4b789 Revert "extras: reverse test for '}' vs. following 'else' placement"
This reverts commit 0a8371bdfdd88e662d09def717cc0b822feb64e8.

Change-Id: I946f449ad213cea70fbbd9cd3951f5838b9f82e5
BUG: 1120646
Signed-off-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-on: http://review.gluster.org/8927
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Tested-by: Niels de Vos <ndevos@redhat.com>
2014-10-14 06:43:32 -07:00
Kotresh HR
3b5b5042ec glusterd/geo-rep: Fix race in updating status file
When geo-rep is in paused state and a node in a cluster
is rebooted, the geo-rep status goes to "faulty (Paused)"
and no worker processes are started on that node yet. In
this state, when geo-rep is resumed, there is a race in
updating status file between glusterd and gsyncd itself
as geo-rep is resumed first and then status is updated.
glusterd tries to update to previous state and gsyncd
tries to update it to "Initializing...(Paused)" on
restart as it was paused previously. If gsyncd on restart
wins, the state is always paused but the process is not
acutally paused. So the solution is glusterd to update
the status file and then resume.

Change-Id: I348761a6e8c3ad2630c79833bc86587d062a8f92
BUG: 1149982
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: http://review.gluster.org/8911
Reviewed-by: Aravinda VK <avishwan@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
2014-10-12 19:42:10 -07:00
Atin Mukherjee
f5d544d435 glusterd: print the peer name instead of a null UUID in a rpc failure message
This patch improves the failure message by printing the correct peer name
instead of a blank uuid in case of rpc connection is lost/broken.

Change-Id: Ia232792051f23896883b239982cb48130e3ce60e
BUG: 1146902
Signed-off-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-on: http://review.gluster.org/8597
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
2014-10-09 23:33:31 -07:00
Niels de Vos
430b874c4f glusterd: make bricks respect 'transport.socket.bind-address'
When GlusterD starts the brick processes, these will listen on all
interfaces. When the 'transport.socket.bind-address' option is set in
glusterd.vol, the brick processes should only listen on the specified
hostname or IP-address.

Change-Id: I8e7d1f294904081137c23f3446261329d0d13bba
BUG: 1149863
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8910
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
2014-10-08 21:10:08 -07:00
Mohammed Rafi KC
678e91718c rdma: mount hangs for rdma type transport.
rdma transport type mount will hang if there is a delay
in network to receive,we will set transport as connected
if we get an event type RDMA_CM_EVENT_ESTABLISHED,
we cannot assure whether client or server will get the
event first, the only condition is that the side which
sends the first request should wait for the event.
If client gets the event first, then it sends DUMP request,
in server side the request will reach, but it will reject
the rpc request since it didn't get the RDMA_CM_EVENT_ESTABLISHED.
So in server we will set the connected flag as soon
as rdma_accept is called.

Change-Id: Iac5845e3592666daa575c727822889779b5bd203
BUG: 1146492
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Reviewed-on: http://review.gluster.org/8850
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Tested-by: Raghavendra G <rgowdapp@redhat.com>
2014-10-08 01:44:36 -07:00
Niels de Vos
283fa797f4 glusterd: pass the bind-address to starting services
When the transport.socket.bind-address option is set to a hostname or
ip-address, the services started by GlusterD fail to connect to the
management daemon. GlusterD always forces the services to connect to the
"localhost" hostname, even if it is not listening on that address.

GlusterD should take the transport.socket.bind-address option into
consideration, and pass that to the glusterfs-clients with the -s or
--volfile commandline parameter.

Note that this is not a change that removes all hard-coded dependencies
on "localhost". This change merely makes it possible to start required
services when the transport.socket.bind-address option is set.

Change-Id: I36a0ed6c69342e6327adc258fea023929055d7f2
BUG: 1149863
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8908
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
2014-10-07 19:57:19 -07:00
Santosh Kumar Pradhan
ddb31110db gNFS: Subdir mount does not work on UDP proto
After enabling nfs.mount-udp, mounting a subdir on a volume over
NFS fails. Because mountudpproc3_mnt_3_svc() invokes nfs3_rootfh()
which internally calls mnt3_mntpath_to_export() to resolve the
mount path. mnt3_mntpath_to_export() just works if the mount path
requested is volume itself. It is not able to resolve, if the path
is a subdir inside the volume.

MOUNT over TCP uses mnt3_find_export() to resolve subdir path but
UDP can't use this routine because mnt3_find_export() needs the
req data (of type rpcsvc_request_t) and it's available only for
TCP version of RPC.

FIX:
(1) Use syncop_lookup() framework to resolve the MOUNT PATH by
    breaking it into components and resolve component-by-component.
    i.e. glfs_resolve_at () API from libgfapi shared object.
(2) If MOUNT PATH is subdir, then make sure subdir export is not
    disabled.
(3) Add auth mechanism to respect nfs.rpc-auth-allow/reject and
    subdir auth i.e. nfs.export-dir
(4) Enhanced error handling for MOUNT over UDP

Change-Id: I42ee69415d064b98af4f49773026562824f684d1
BUG: 1118311
Signed-off-by: Santosh Kumar Pradhan <spradhan@redhat.com>
Reviewed-on: http://review.gluster.org/8346
Reviewed-by: soumya k <skoduri@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
2014-10-07 00:51:29 -07:00
Emmanuel Dreyfus
1642ee54cf Regression test portability: rpc-coverage
- pull include.rc when running rpc-coverage.sh to get BSD stat(1)
  compatibility.
- fix type in statfs_test and use mode instead of size so that
  it cannot pass by chance like it did.
- BSD tail does not support --pid; Avoid that option by making
  the test simplier.
- Use a subshell instead of pushd/popd, which seems more reliable.
- Use flock -x instead of flock -e: same result on Linux, compatible
  with NetBSD flock.
- when using file descriptors in the shell, avoit too high numbers
  otherwise we can easily hit the descriptor limit.

BUG: 1129939
Change-Id: I51bad02a0ef47f20e4a2c49098c1c6701b7e6b09
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8566
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
2014-10-06 20:25:43 -07:00
Niels de Vos
3e7508eafb build: include contrib/umountd in the 'make dist' tarball
When running 'make dist' on Linux, the new contrib/umountd directory and
contents is not included in the resulting tarball. This causes the build
from the tarball to fail.

Change-Id: Ic575040212d91c6368f04b015cc9d2d5b2969a3a
BUG: 1129939
Reported-by: Emmanuel Dreyfus <manu@netbsd.org>
URL: http://supercolony.gluster.org/pipermail/gluster-devel/2014-October/042441.html
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8907
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-by: Emmanuel Dreyfus <manu@netbsd.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
2014-10-06 20:24:59 -07:00
Xavier Hernandez
dee517728d ec: Fix memory leak caused by undestroyed fops
Operations processed by ec_dispatch_one() were not correctly
completed by ec_complete(), leaving some structures in memory.

Now ec_complete() also calls ec_resume() for this type of fops.

Change-Id: Iaf0f2e8227399ebb735db9f1bd007593e0ece041
BUG: 1148520
Signed-off-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-on: http://review.gluster.org/8896
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-03 09:41:33 -07:00
Emmanuel Dreyfus
473c34f895 Do not hardcode umount(8) path, emulate lazy umount
1) Use a system-dependent macro for umount(8) location instead of
relying on $PATH  to find it, for security and portability sake.

2) Introduce gf_umount_lazy() to replace umount -l (-l for lazy) invocations,
which is only supported on Linux; On Linux behavior in unchanged. On other
systems, we fork an external process (umountd) that will take care of
periodically attempt to unmount, and optionally rmdir.

BUG: 1129939
Change-Id: Ia91167c0652f8ddab85136324b08f87c5ac1e51d
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8649
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Csaba Henk <csaba@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-03 07:57:47 -07:00
Emmanuel Dreyfus
baa6f0ad75 POSIX filesystem compliance: PATH_MAX
POSIX mandates the filesystem to support paths of lengths up to
_XOPEN_PATH_MAX (1024).  This is the PATH_MAX limit here:
http://pubs.opengroup.org/onlinepubs/009604499/basedefs/limits.h.html

When using a path of 1023 bytes, the posix xlator attempts to create
an absolute path by  prefixing the 1023 bytes path by the brick
base path. The result is an absolute path of more than _XOPEN_PATH_MAX
bytes which may be rejected by the backend filesystem.

Linux's ext3fs PATH_MAX seems to defaut to 4096, which means it
will work (except if brick base path is longer than 2072 bytes but
it is unlikely to happen. NetBSD's FFS PATH_MAX defaults to 1024,
which means the bug can happen regardless of brick base path length.

If this condition is detected for a brick, the proposed fix is to
chdir() the brick glusterfsd daemon to its brick base directory.
Then when encountering a path that will exceed _XOPEN_PATH_MAX once
prefixed by the brick base path, a relative path is used instead
of an absolute one. We do not always use relative path because some
operations require an absolute path on the brick base path itself
(e.g.: statvfs).

At least on NetBSD, this chdir() uncovers a race condition which
causes file lookup to fail with ENODATA for a few seconds. The
volume quickly reaches a sane state, but regression tests are fast
enough to choke on it. The reason is obscure (as often with race
conditions), but sleeping one second after the chdir() seems to
change scheduling enough that the problem disapear.

Note that since the chdir() is done if brick backend filesystem
does not support path long enough, it will not occur with Linux
ext3fs (except if brick base path is over 2072 bytes long).

BUG: 1129939
Change-Id: I7db3567948bc8fa8d99ca5f5ba6647fe425186a9
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8596
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-03 02:05:48 -07:00
Xavier Hernandez
a97ad9b69b test/ec: Fix spurious failures caused by self-heal
The sha1sum of a file may update the access time of that file.
If this happens while a brick is down, as it is forced in the
test, that brick doesn't get the update, getting out of sync.

When the brick is restarted, self-heal repairs the file, but
the test shouldn't access brick contents until self-heal finishes.
If this is combined with a kill of another brick before self-heal
has finished repairing the file, the volume could become inaccessible.

Since the purpose of these tests is only to check ec functionality
(there is another test that checks self-heal), the test that corrupts
the file has been removed.

Additional checks to validate the state of the volume have been added
to avoid some timing issues.

BUG: 1144108
Change-Id: Ibd9288de519914663998a1fbc4321ec92ed6082c
Signed-off-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-on: http://review.gluster.org/8892
Reviewed-by: Emmanuel Dreyfus <manu@netbsd.org>
Tested-by: Emmanuel Dreyfus <manu@netbsd.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-03 02:01:26 -07:00
Xavier Hernandez
7e76bd2430 ec: Add state dump support
Change-Id: I4504f3050674dde217e79af28cb4d2b5370fe2d5
BUG: 1148010
Signed-off-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-on: http://review.gluster.org/8891
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Emmanuel Dreyfus <manu@netbsd.org>
Tested-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-03 02:00:46 -07:00
Jeff Darcy
0a8371bdfd extras: reverse test for '}' vs. following 'else' placement
The two-line form "}\nelse {" has been more common than the one-line
form "} else {" in our code for years, and IMO for good reason (see
the comment in the diff).

Change-Id: Ic22c76fe76f0d91300daff36e755a18a8db58852
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/8888
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-10-02 07:01:15 -07:00
Niels de Vos
f2131b8c79 gNFS: allow truncate() from SETATTR over NFS for owner
NFSv3 does not have a TRUNCATE procedure, instead it is part of the
SETATTR (change the 'size' attribute). SETATTR with a new 'size'
succeeds on other NFS-servers, even when the owner of the file does not
have write permissions. Make Gluster/NFS behave the same way, by
checking if the RPC/pid comes from the NFS-server, and allow truncate()
when the file is owned by the user calling SETATTR.

BUG: 955753
Change-Id: I4b7cb8efe5a2032c6cd2eef6af610032f76d8b39
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8889
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: soumya k <skoduri@redhat.com>
2014-10-02 00:24:36 -07:00
Emmanuel Dreyfus
0e1419d6fb Regression test portability: truncate
Use truncate -s 1M instead of truncate --size=1m for portability sake

BUG: 1129939
Change-Id: I5bf6ca1f9bb4fa3c91796a659a06bf368776b3e5
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8894
Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
2014-10-01 08:54:31 -07:00
Emmanuel Dreyfus
f54dd171bc Regression test portability: stat
Improve BSD compatibility for stat. The new version attemps to spawn
less stat subprocesses.

Also add translation for %X %Y and %Z

BUG: 1129939
Change-Id: I2b2134f9e8336a952aee6c7679ba0491abd5a35c
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8565
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
2014-10-01 08:51:25 -07:00
Emmanuel Dreyfus
192d5e6654 Regression test portability: rpmbuild
rpmbuild is required, check for its presence.

BUG: 1129939
Change-Id: Iae8534bf897a4605620277688a180d6542c1c80b
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8810
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
2014-10-01 08:48:46 -07:00
Pranith Kumar K
443e48abf9 cluster/afr: Add afr-v1 xattr compatibility
All the special cases v1 handles and also
self-accusing pending changelog from v1 pre-op also is handled
in this patch.

Change-Id: Ie10f71633fb20276f01ecafbd728f20483e7029c
BUG: 1128721
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/8536
Reviewed-by: Ravishankar N <ravishankar@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
2014-10-01 03:29:12 -07:00
vmallika
f95a25c35e glusterd/quota: Heal pgfid xattr on existing data when the quota is
enable

The pgfid extended attributes are used to construct the ancestry path
(from the file to the volume root) for nameless lookups on files.
As NFS relies on nameless lookups heavily, quota enforcement through NFS
would be inconsistent if quota were to be enabled on a volume with
existing data.

Solution is to heal the pgfid extended attributes as a part of lookup
perfomed by quota-crawl process. In a posix lookup check for pgfid xattr
and if it is missing set the xattr.

Change-Id: I5912ea96787625c496bde56d43ac9162596032e9
BUG: 1147378
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/8878
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-30 09:42:02 -07:00
Emmanuel Dreyfus
c65d4ea8a1 Fix invalid seekdir() usage
According to POSIX, seekdir() should only be given offset obtained from
telldir() on the same DIR *
http://pubs.opengroup.org/onlinepubs/9699919799/functions/seekdir.html

Code from afr-self-heald.c and index.c is operating outside of the
specification, by doing using seekdir() with offset from a previously
open/close/re-open directory. This seems to work on Linux (although with
no guarantee it will always in the future). On NetBSD the seekdir()
with a in invalid offset is a nilpotent operation, and causes an infinite
loop, since index_fill_readdir() always restart from the beginning of the
directory.

The situation is fixed by using a non anonymous fd in afr-self-heald.c:
we explicitely open the directory so that it remains open on the brick
side during the timeframe where we want to reuse offsets in seekdir().
This requires adding an opendir fop in index xlator.

If the brick was not updated, the opendir will fail and we fallback
to the standard violating approach for backward compatibility on Linux.
On other systems we fail since it never worked.

While there, add tests to check seekdir() success in index and posix
xlators, so that incorrect usage from calling code produce an explicit
error instead of an infinite loop. We can only do it on non Linux systems,
for the sake of backward compatibility when the brick was updated but
not the client.

BUG: 1129939
Change-Id: I88ca90acfcfee280988124bd6addc1a1893ca7ab
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8760
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-30 09:40:36 -07:00
Xavier Hernandez
36d2975714 doc: added documentation for dispersed volumes
Change-Id: I8a8368bdbe31af30a239aaf8cc478429e10c3f57
BUG: 1147563
Signed-off-by: Xavier Hernandez <xhernandez@datalab.es>
Reviewed-on: http://review.gluster.org/8885
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
2014-09-30 09:37:26 -07:00
GauravKumarGarg
535c425911 glusterd: Perform brick order check in originator node.
Currently in case of multi node cluster brick-order check for
replicate volume done on every node. Its waste of time to perform
brick order check on every node.

This change will perform brick order check only at originator node.

Change-Id: I8687fd28e587de8a280a9003b015ccd5729c9740
BUG: 1091935
Signed-off-by: ggarg <ggarg@redhat.com>
Reviewed-on: http://review.gluster.org/8881
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
Tested-by: Kaushal M <kaushal@redhat.com>
2014-09-29 21:46:21 -07:00
Sachin Pandit
2736421b26 USS : Decide the log entry based on the type of graph.
Problem : When a lookup is issued, and if the entry is not found
then snapview-client will log failure stating that
"Lookup on normal graph failed with error Stale file handle"
irrespective of type of graph it received call back from.

Solution : Introduced a check to find out the graph from which
the snapview-client received call-back.

Change-Id: Iadd5b525c394be3675d40231711058e1cf1396cd
BUG: 1146479
Signed-off-by: Sachin Pandit <spandit@redhat.com>
Reviewed-on: http://review.gluster.org/8851
Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-29 08:13:42 -07:00
Pranith Kumar K
94045e4ae7 cluster/afr: Launch self-heal only when all the brick status is known
Problem:
File goes into split-brain because of wrong erasing of xattrs.

RCA:
The issue happens because index self-heal is triggered even before all the
bricks are up. So what ends up happening while erasing the xattrs is, xattrs
are erased only on the sink brick for the brick that it thinks is up leading to
split-brain

Example:
lets say the xattrs before heal started are:
brick 2:
trusted.afr.vol1-client-2=0x000000020000000000000000
trusted.afr.vol1-client-3=0x000000020000000000000000

brick 3:
trusted.afr.vol1-client-2=0x000010040000000000000000
trusted.afr.vol1-client-3=0x000000000000000000000000

if only brick-2 came up at the time of triggering the self-heal only
'trusted.afr.vol1-client-2' is erased leading to the following xattrs:

brick 2:
trusted.afr.vol1-client-2=0x000000000000000000000000
trusted.afr.vol1-client-3=0x000000020000000000000000

brick 3:
trusted.afr.vol1-client-2=0x000010040000000000000000
trusted.afr.vol1-client-3=0x000000000000000000000000

So the file goes into split-brain.

Change-Id: I1185713c688e0f41fd32bf2a5953c505d17a3173
BUG: 1142601
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/8755
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
2014-09-29 05:46:55 -07:00
Anuradha
3ba5f1d38d cluster/afr : Fix incorrect looping of index healer
Sending appropriate return value from afr_selfheal()
fixes the issue.

Credits : Krutika Dhananjay and Pranith Kumar.

Change-Id: I01dbd49476f6bfbd02028fdde1f60cc0324a1e39
BUG: 1146812
Signed-off-by: Anuradha <atalur@redhat.com>
Reviewed-on: http://review.gluster.org/8868
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
2014-09-29 02:58:23 -07:00
Harshavardhana
37ee11f4d4 Sane default for SSL on OSX
- /opt/local is not preferred anymore use /usr/local

Change-Id: I30cad4cbd28850063f26121cace05371e13bb314
BUG: 1129939
Signed-off-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-on: http://review.gluster.org/8872
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-29 01:30:44 -07:00
Ravishankar N
2a2f113068 glusterfs: allow setxattr of keys with null values.
Disk based file systems allow to get/set extended attribute key-value pairs where
value can be null. Fuse/libgfapi clients must be able to do the same on a
gluster volume.

Change-Id: Ifc11134cc07f1a3ede43f9d027554dcd10b5c930
BUG: 1135514
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Reviewed-on: http://review.gluster.org/8567
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-29 01:13:08 -07:00
Kotresh HR
7113d873af geo-rep: Fix rename of directory syncing.
The rename of directories are captured in all distributed
brick changelogs. gsyncd processess these changelogs on
each brick parallellaly. The first changelog to get processed
will be successful. All subsequent ones will stat the 'src'
and if not present, tries to create freshly on slave. It
should be done only for files and not for directories.
Hence when this code path was hit, regular file's blob
is sent as directory's blob and gfid-access translator
was erroring out as 'Invalid blob length' with errno as
'ENOMEM'

Change-Id: I50545b02b98846464876795159d2446340155c82
BUG: 1146823
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: http://review.gluster.org/8865
Reviewed-by: Aravinda VK <avishwan@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
2014-09-28 23:32:42 -07:00
Krutika Dhananjay
cf595e84a5 cluster/afr: Fix inode leak
Change-Id: I723b65d6fcae5bd39c0daece3b2f48baf0a72166
BUG: 1145471
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/8875
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
2014-09-28 22:30:42 -07:00
hchiramm
e26b62b1a2 spec: Change summary of glusterfs to distributed file system.
BUG:1146519
Change-Id: I9b24321d9e677b535f8d79691862cf919553d635
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
Reviewed-on: http://review.gluster.org/8844
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Lalatendu Mohanty <lmohanty@redhat.com>
2014-09-26 10:16:20 -07:00
Emmanuel Dreyfus
3d36edb00c Use sane OS-dependent defaults for SSL configuration
Current code assumes /etc/ssl exists, which may not be the case.
Attempt to guess sane default for a few OS.

BUG: 1129939
Change-Id: I0f3168f79b8f4275636581041740dfcaf25f3edd
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8790
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-26 03:32:42 -07:00
Emmanuel Dreyfus
8e57090f7d Do not forbid fallocate on non Linux systems
Linux fallocate() differs from posix_fallocate() by
an extra flag that can have the FALLOC_FL_KEEP_SIZE value;

Do not test FALLOC_FL_KEEP_SIZE existence to enable fallocate()
in posix xlator, as sys_fallocate() in libglusterfs provides
support for both implementations.

BUG: 1129939
Change-Id: Idf41a0396028a15e81281791bf6912d7fd674e3f
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8856
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-26 03:31:24 -07:00
Krutika Dhananjay
5123949beb cluster/afr: More dict_t leak fixes
Change-Id: I6618b7b2df0f88a3e6252f9136135cf402147a37
BUG: 1134221
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/8852
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
2014-09-26 03:06:35 -07:00
Kaleb S. KEITHLEY
c3101c66ba glusterfs.spec.in: add psmisc to -server subpackage
apparently some minimalist installs omit psmisc
psmisc is needed for the killall in various %pre and %post scriptlets

smarter logic for restarting glusterd in %post server

Change-Id: I505573b364cc27321bb4117a387bdf71fe3ce310
BUG: 1146426
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Humble Chirammal <hchiramm@redhat.com>
Reviewed-by: Lalatendu Mohanty <lmohanty@redhat.com>
Tested-by: Lalatendu Mohanty <lmohanty@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8867
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
2014-09-26 01:51:23 -07:00
Aravinda VK
3c29c50cf6 geo-rep: fix same file different gfid in master and slave
While processing RENAME in changelog, if the file is unlinked
in master, then geo-rep was sending UNLINK to slave instead of
RENAME.

If rsync job fails if one of the file failed to sync in the job.
This patch adds logic to remove GFID from data list if the same
changelog has UNLINK entry for it after the DATA. Or it removes
those GFIDs during retry of changelogs processing.

BUG: 1143853
Change-Id: I982dc976397cd0ab676bb912583f66a28f821926
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: http://review.gluster.org/8761
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Kotresh HR <khiremat@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Tested-by: Venky Shankar <vshankar@redhat.com>
2014-09-26 00:18:48 -07:00
Gaurav Kumar Garg
60a75cdca7 glusterd: file-snapshot and features-encryption options should be validate correctly
By giving non-boolean value to volume set command for features.file-snapshot
and features.encryption option the command failed after that subsequent
volume set request with valid value of the existing any volume set option
fail.

Previously when user supplies a non-boolean value in volume set command
for features.file-snapshot and features.encryption option's then
validation of that value was done by volinfo->dict but actual value
of that option store in input dictonary. Now with this change it
will refer correct dictonary for validation of supplies value.

Change-Id: I4a93d8be848cd33fdf4b4eb9b1a8d15ec9d1e66a
BUG: 1140162
Reviewed-on: http://review.gluster.org/8688
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
2014-09-25 22:52:08 -07:00
Emmanuel Dreyfus
adace43107 32 bit fix: use off_t and not size_t for truncate()
Make sure off_t and not size_t is used when holding file offsets for
ftruncate()/truncate(). It works on 64 bit machines where
sizeof(size_t) == sizeof(off_t) == 8, but breaks for big offsets on 32 bit
machines because sizeof(size_t) == 4 and sizeof(off_t) == 8

BUG: 1129939
Change-Id: Ia2637be772ba9b11731d59fdbffbd269f0ff56c8
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8742
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-25 10:34:18 -07:00
Bala.FA
94b0ac65c3 build: remove /sbin/ldconfig as interpreter
using /sbin/ldconfig as interpreter in pre/post/postun throws error
/sbin/ldconfig: relative path `1' used to build cache

BUG: 1145989
Change-Id: Ic321f200d92d2e49ff797965a006f63f483d29be
Signed-off-by: Bala.FA <barumuga@redhat.com>
Reviewed-on: http://review.gluster.org/8835
Reviewed-by: Lalatendu Mohanty <lmohanty@redhat.com>
Tested-by: Lalatendu Mohanty <lmohanty@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
2014-09-25 10:29:28 -07:00
Krutika Dhananjay
2471aa9aa2 cluster/afr: Fix locking issues in entry self-heal
Original reporter of the bug & designer of the solution:
        Pranith Kumar K <pkarampu@redhat.com>

Change-Id: I9ed89aa92e4cd0f8049f5f6c7a3701e52989ae5e
BUG: 1128721
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/8837
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
2014-09-24 23:39:47 -07:00
Harshavardhana
c16408ab40 OSX/FreeBSD: Regression fix
Introduced in "1f6e992f1aaa676be5bd47d17e58f1171825cf43"

Change-Id: I655cf613ca93a749ab5403cb3ec038e739993e2e
BUG: 1146279
Signed-off-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-on: http://review.gluster.org/8841
Reviewed-by: Justin Clift <justin@gluster.org>
Tested-by: Justin Clift <justin@gluster.org>
2014-09-24 16:23:01 -07:00
ggarg
b097225202 glusterd: Move brick order check from cli to glusterd.
Previously the brick order check for replicate volumes on volume
create and add-brick was done by the cli. This check would fail
when a hostname wasn't resolvable and would question the user
if it was ok to continue. If the user continued, glusterd would
fail the command again as the hostname wouldn't be resolvable.
This was unnecessary.

This change, moves the check from cli into glusterd. The check
is now performed during staging of volume create after the
bricks have been resolved. This prevents the above condition
from occurring.

As a result of this change, the user will no longer be
questioned and given an option to continue the operation
when a bad brick order is given or the brick order check
fails. In such a case, the user can use 'force' to bypass
the check and allow the command to succeed.

Change-Id: I009861efaf3fb7f553a9b00116a992f031f652cb
BUG: 1091935
Signed-off-by: ggarg <ggarg@redhat.com>
Reviewed-on: http://review.gluster.org/7589
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaushal M <kaushal@redhat.com>
2014-09-24 05:29:43 -07:00
Pranith Kumar K
70d76f20ee cluster/afr: Fix spurious metadata self-heals
- Added logging for metadata and data self-heals which helped
  in debugging this issue.
- Added checks to skip self-heals when no sinks are available to heal

Change-Id: I0d50dceb84cd9ad4fe00e0b749ddf7d4ff42348a
BUG: 1128721
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/8709
Reviewed-by: Krutika Dhananjay <kdhananj@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
2014-09-24 01:51:35 -07:00
Vijay Bellur
bd592f8b83 protocol: Log ENODATA & ENOATTR logs at DEBUG loglevel in removexattr_cbk.
Prevents messages of the following type from being seen by default in the log files:

[2014-09-19 07:57:39.877806] W
[client-rpc-fops.c:1232:client3_3_removexattr_cbk] 0-<volume_name>-client-0:
remote operation failed: No data available
[2014-09-19 07:57:39.877963] W
[client-rpc-fops.c:1232:client3_3_removexattr_cbk] 0-<volume_name>-client-1:
remote operation failed: No data available

Change-Id: I3b1a121b0fc272eb772547275bb8085ed19db5a1
BUG: 1144527
Signed-off-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-on: http://review.gluster.org/8781
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
2014-09-24 00:48:59 -07:00
Anuradha
3b871bee4a cluster/afr: Fixed mem leaks in self-heal code path.
AFR_STACK_RESET previously didn't cleanup afr_local_t,
leading to memory leaks. With this patch, cleanup is
done.

All credit goes to Pranith Kumar Karampuri.

Change-Id: I3c727ff4bb323dccb81da4b3168ac69bb340d17d
BUG: 1145471
Signed-off-by: Anuradha <atalur@redhat.com>
Reviewed-on: http://review.gluster.org/8821
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
2014-09-23 23:16:37 -07:00
Jeff Darcy
6e8ad12fba build: remove warnings for recommended style
Specifically:

 * space before function arguments

 * brace around single statement

Ideally we would *reverse* these tests so they warn under the exact
opposite conditions, but that would mean learning the internals of a
script written in a defective language with cryptic variable names and
too few comments.  Life's too short.  For now, just cutting down on some
of the spam (which might obscure more serious issues) should suffice.

BUG: 1120646
Change-Id: I5ec684d0d788a34f29af9b1761743c8860973993
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-on: http://review.gluster.org/8813
Reviewed-by: Harshavardhana <harsha@harshavardhana.net>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Tested-by: Harshavardhana <harsha@harshavardhana.net>
2014-09-23 14:30:13 -07:00
Harshavardhana
2288fec13e extras/checkpatch.pl: update coding guidelines script
- Allow 'quoted string split across lines' since its a
  GlusterFS common practice
- Remove a useless "+" - perl 5.20 complains with following
  warning "Useless use of greediness modifier '+'"

Change-Id: Ibaf276ec84757b3ecc3e6db7f5e720b8e8a12dff
BUG: 1120646
Signed-off-by: Harshavardhana <harsha@harshavardhana.net>
Reviewed-on: http://review.gluster.org/8811
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
2014-09-23 12:29:17 -07:00
Sachin Pandit
6ddfdde6fb doc/snapshot : admin guide updation.
Change-Id: I1980bc0984f941cd415fbc754495353f561155a8
BUG: 1145069
Signed-off-by: Sachin Pandit <spandit@redhat.com>
Reviewed-on: http://review.gluster.org/8817
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-23 10:23:56 -07:00
Emmanuel Dreyfus
5136c938dd Do not hardcode setfattr(1) path
Turn setfattr(1) absolute path into an OS-dependant macro. Let compiler
option override it to fit custom installation if needed.

BUG: 1129939
Change-Id: I8f469c5741a85b6e8d8f6299a9540b3d64611d2f
Signed-off-by: Emmanuel Dreyfus <manu@netbsd.org>
Reviewed-on: http://review.gluster.org/8786
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
2014-09-23 09:52:39 -07:00