nfs: Unable to resolve FH

Bug (965435):  while deleting files/directory from multiple machines nfs server
logs show "Unable to resolve FH" error.

Cause: The error is shown whenever the server receives rmdir/remove call and the
file/directory is already deleted. Server always shows "Unable to resolve FH"
irrespective of what is the actual error.

Fix: The error message seems little misleading therefore changed the error
message to display the actual cause.

Change-Id: I4f9c151f737317d618278c59d9f66fe9f46350b8
BUG: 965435
Signed-off-by: Rajesh Joseph <rjoseph@redhat.com>
Reviewed-on: http://review.gluster.org/5057
Reviewed-by: Santosh Pradhan <spradhan@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
cluster/dht: Ignore decommissioned subvol in overlap optimization

Change-Id: Ib727948c6e21b19fd509f258ff0aea1c5d1a84d1
BUG: 966845
Signed-off-by: shishir gowda <sgowda@redhat.com>
Reviewed-on: http://review.gluster.org/5056
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
gfapi: optimistic resolution with ESTALE detection

Enhance the path resolver to be optimistic. Instead of performing
a wasteful ->lookup() fop for every component in every API call,
build in speculation logic to consider the previous resolution
result temporarily, and if it results in ESTALE either later in
the path resolution or in the FOP, then retry resolution with
->lookup() at every level and retry the FOP.

This is the same optimistic resolution/retry logic Linux kernel
resolver is proposing to use.

Change-Id: Iecbc25248754caf0915cd7205910563ff88ce5e7
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4928
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
md-cache: support negative xattr entries

Add support for negative xattr caching. For this, we need
to fetch xattrs in every opportunity (including readdirplus)
in order to treat missing key in cached dict as negative entry.

This is crucial to detect missing ACL xattrs in Samba workload.

Change-Id: I918a2ef4ab804724256f7546b15e808332ed518d
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4929
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
syncop: copy inode pointer in readdirplus

Change-Id: I9ab2b8ac2da9fe13f56b8b08f715a0b603ece0cb
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4930
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
gfapi: link inodes in relevant entry FOPs

Do not let inode linking to happen only in lookup(). While
that works, it is inefficient.

Change-Id: I51bbfb6255ec4324ab17ff00566375f49d120c06
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4931
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
dht,posix: support for case discovery

This is support for discovering a filename in a given directory
which has a case insensitive match of a given name. It is implemented
as a virtual extended attribute on the directory where the required
filename is specified in the key.

E.g:

  sh# getfattr -e "text" -n user.glusterfs.get_real_filename:FiLe-B /mnt/samba/patchy
  getfattr: Removing leading '/' from absolute path names
  # file: mnt/samba/patchy
  user.glusterfs.get_real_filename:FiLe-B="file-b"

In reality, there can be multiple "answers" as the backend filesystem is
case sensitive and there can be multiple files which can strcasecamp()
successfully. In this case we pick the first matched file from the first
responding server.

If a matching file does not exist, we return ENOENT (and NOT ENODATA).
This way the caller can differentiate between "unsupported" glusterfs
API and file not existing.

This API is used by Samba VFS to perform efficient discovery of the real
filename without doing a full scan at the Samba level.

Change-Id: I53054c4067cba69e585fd0bbce004495bc6e39e8
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4941
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
gfapi: provide stable st_dev in stat structure

Samba depends on st_dev being unique and stable for different
filesystems (it uses st_dev+st_ino as key to store metadata of
a file).

Change-Id: Ia022fabadfb5ef3fc9724c1b1ca86f1a20f98af9
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5045
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
pkg-config: present API version and not package version

This way PKG_MODULE() autoconf test checks for required API
rather than release version (e.g required API could be in all
all of 3.4.5, 3.5.1, 3.6.4 etc.)

With the first "release" of gfapi, the current version (4) will
be frozen.

Version 3 is sufficient for QEMU's requirement. Version 4 is
necessary for Samba VFS

Change-Id: Iada3a4c88b9c67413dcd57004fd8a62926a21b42
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4932
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
gfapi: ignore NULL and -1 parameters in glfs_set_logging()

Permit changing either logfile or level by specifying the other
as -1 or NULL respectively.

Change-Id: I7df05db7b613c57e0106a5cce846ae26d2a160d4
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5085
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
extras: prevent "glusterd dead but subsys locked"

Commit b5bf14a6 added support for a file under /var/lock/subsys,
Hoewever, killproc does remove the $PIDFILE which cases subsequent
checks on its existence to fail. When glusterd was stopped successfully,
the $PIDFILE has been removed already, there is no need to try to remove
is again.

Upon executing '/sbin/service glusterd status', the message 'glusterd
dead but subsys locked' would be returned because the file under
/var/lock/subsys was not removed.

Bug: 960476
Change-Id: I781fe463e3c5472e42d668155cee4f63d349a568
Reported-by: Satheesaran Sundaramoorthi <sasundar@redhat.com>
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/5074
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
glusterd: Allow volume start force to succeed if brick directories are recreated

Change-Id: I4fc3c5c829adca256bb131f4a2722abc95741158
BUG: 963665
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/5020
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
gfapi: handle graph switch (cwd, fds, locks)

- Migrate open fds to new graph
- Migrate locks held in open fd to new fd
- Refresh CWD, so resolution of relative paths happens on refreshed
  inode (on new graph).

Change-Id: I4b18083b9b290107ebda1f917fc85b635ab72fb4
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5059
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <raghavendra@gluster.com>
logging: Fix to avoid excessive logging.

mem_get function: Log message related to mem_pool 
calloc is removed  as its been calculated in mempool
'stats'.  This messgae is consuming nearly half of 
the total log messages in DEBUG mode.

dht_hash_compute function: Changed log level from DEBUG 
to TRACE.

client_fdctx_destroy function: Changed log  level from DEBUG 
to TRACE.

Change-Id: Ic948db0419e76df4e95ebd0cabaf66eadbaada6b
BUG: 966851
Signed-off-by: Venkatesh Somyajulu <vsomyaju@redhat.com>
Reviewed-on: http://review.gluster.org/5086
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
protocol/client: Prevent excessive logging of client's "disconnect" messages.

Problem: Currently when gluster volume start force is executed, client process
         will talk to glusterd to get the port of the brick. But if brick's path
         is not available it cannot return brick's port. So client process will
         keep connecting and disconnecting from glusterd for port-query which
         is ultimately responsible for execssive logging of disconnect messages.

Fix:     Message will be logged just once at INFO level after the first
         disconnect from glusterd. Afterwards "disconnect" messages will be
         logged in DEBUG mode.

Change-Id: I2b787f3820b5da45e090c562e5698fcfe24a02cd
BUG: 959969
Signed-off-by: Venkatesh Somyajulu <vsomyaju@redhat.com>
Reviewed-on: http://review.gluster.org/4953
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
doc: Move relevant files out of legacy.

Change-Id: Iff9166dd7baa3d60b70ffab5ce9a692d211fa4fb
BUG: 811311
Signed-off-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-on: http://review.gluster.org/5091
Reviewed-by: Justin Clift <jclift@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
performance/write-behind: Enable write-behind when strict_O_DIRECT is not set.

When open() with O_DIRECT happens, write-behind was being disabled for the
fd irrespective of strict_O_DIRECT option. This commit disables write-behind
only when strict_O_DIRECT is enabled.

Change-Id: Ieef180e52910c3bf64d46b26b0e5dc3b8542f6d2
BUG: 923556
Signed-off-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-on: http://review.gluster.org/4697
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
glusterd-volgen: Enable open-behind based on op-version

This patch enables the open-behind by default only when the op-version
allows it. Also the volume op-version calculations take account of this
enablement.

Change-Id: Idf7a3c274ec4828aafc815cdd1df829ecb853354
BUG: 954256
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/4866
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
configure.ac: add build option for glupy

Check whether Python.h, glupy dependency, is installed in the system.
 ('Python.h' part of python-devel or python-dev package.)

Allow following build options:
 --enable-glupy   build glupy; If dependencies are not met, abort
                  configure script run with error.

 --disable-glupy  don't build glupy even if dependencies are met.

 default          build glupy; If dependencies are not met, don't build
                  glupy and allow configure script run with warning.

glupy-specific dependencies:
 python2.x, python-devel/python-dev package

Change-Id: Ia495dd00cac7d12ad76645c8576a0adc0cb5d590
BUG: 961856
Signed-off-by: Ram Raja <rraja@redhat.com>
Reviewed-on: http://review.gluster.org/5093
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
socket: convert socket functions to file scope (static)

The function names used in socket.c conflict with Samba's
socket functions (samba.git/source4/lib/socket/socket.h). Convert
our functions to file scope as they are anyways not called across
files.

Change-Id: If98ae557d3e2868f257c021b283ede6a5e92de02
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5104
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>