summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--booster/src/booster-fd.c22
-rw-r--r--booster/src/booster.c576
-rw-r--r--booster/src/booster_fstab.c20
3 files changed, 547 insertions, 71 deletions
diff --git a/booster/src/booster-fd.c b/booster/src/booster-fd.c
index b74bd6fa6..5e83384ff 100644
--- a/booster/src/booster-fd.c
+++ b/booster/src/booster-fd.c
@@ -44,9 +44,7 @@ gf_roundup_power_of_two (uint nr)
uint result = 1;
if (nr < 0) {
- gf_log ("server-protocol/fd",
- GF_LOG_ERROR,
- "Negative number passed");
+ gf_log ("booster-fd", GF_LOG_ERROR, "Negative number passed");
return -1;
}
@@ -65,7 +63,7 @@ booster_fdtable_expand (booster_fdtable_t *fdtable, uint nr)
int32_t ret = -1;
if (fdtable == NULL || nr < 0) {
- gf_log ("fd", GF_LOG_ERROR, "invalid argument");
+ gf_log ("booster-fd", GF_LOG_ERROR, "Invalid argument");
errno = EINVAL;
ret = -1;
goto out;
@@ -80,6 +78,7 @@ booster_fdtable_expand (booster_fdtable_t *fdtable, uint nr)
fdtable->fds = CALLOC (nr, sizeof (fd_t *));
if (fdtable->fds == NULL) {
+ gf_log ("booster-fd", GF_LOG_ERROR, "Memory allocation failed");
fdtable->fds = oldfds;
oldfds = NULL;
ret = -1;
@@ -93,6 +92,8 @@ booster_fdtable_expand (booster_fdtable_t *fdtable, uint nr)
memcpy (fdtable->fds, oldfds, cpy);
}
+ gf_log ("booster-fd", GF_LOG_DEBUG, "FD-table expanded: Old: %d,New: %d"
+ , oldmax_fds, nr);
ret = 0;
out:
FREE (oldfds);
@@ -118,6 +119,8 @@ booster_fdtable_alloc (void)
UNLOCK (&fdtable->lock);
if (ret == -1) {
+ gf_log ("booster-fd", GF_LOG_ERROR, "FD-table allocation "
+ "failed");
FREE (fdtable);
fdtable = NULL;
}
@@ -197,11 +200,12 @@ booster_fd_unused_get (booster_fdtable_t *fdtable, fd_t *fdptr, int fd)
int error = 0;
if (fdtable == NULL || fdptr == NULL || fd < 0) {
- gf_log ("fd", GF_LOG_ERROR, "invalid argument");
+ gf_log ("booster-fd", GF_LOG_ERROR, "invalid argument");
errno = EINVAL;
return -1;
}
+ gf_log ("booster-fd", GF_LOG_DEBUG, "Requested fd: %d", fd);
LOCK (&fdtable->lock);
{
while (fdtable->max_fds < fd) {
@@ -239,8 +243,10 @@ booster_fd_put (booster_fdtable_t *fdtable, int fd)
return;
}
+ gf_log ("booster-fd", GF_LOG_DEBUG, "FD put: %d", fd);
if (!(fd < fdtable->max_fds)) {
- gf_log ("fd", GF_LOG_ERROR, "invalid argument");
+ gf_log ("booster-fd", GF_LOG_ERROR, "FD not in booster fd"
+ " table");
return;
}
@@ -266,8 +272,10 @@ booster_fdptr_get (booster_fdtable_t *fdtable, int fd)
return NULL;
}
+ gf_log ("booster-fd", GF_LOG_DEBUG, "FD ptr request: %d", fd);
if (!(fd < fdtable->max_fds)) {
- gf_log ("booster-fd", GF_LOG_ERROR, "invalid argument");
+ gf_log ("booster-fd", GF_LOG_ERROR, "FD not in booster fd"
+ " table");
errno = EINVAL;
return NULL;
}
diff --git a/booster/src/booster.c b/booster/src/booster.c
index 0ed914b1f..28878ae63 100644
--- a/booster/src/booster.c
+++ b/booster/src/booster.c
@@ -247,31 +247,41 @@ do_open (int fd, const char *pathname, int flags, mode_t mode, booster_op_t op)
.stat_timeout = 600,
};
+ gf_log ("booster", GF_LOG_DEBUG, "Opening using MPB: %s", pathname);
size = fgetxattr (fd, "user.glusterfs-booster-volfile", NULL, 0);
if (size == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Xattr "
+ "user.glusterfs-booster-volfile not found: %s",
+ strerror (errno));
goto out;
}
specfile = calloc (1, size);
if (!specfile) {
- fprintf (stderr, "cannot allocate memory: %s\n",
- strerror (errno));
+ gf_log ("booster", GF_LOG_ERROR, "Memory allocation failed");
goto out;
}
ret = fgetxattr (fd, "user.glusterfs-booster-volfile", specfile,
size);
if (ret == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Xattr "
+ "user.glusterfs-booster-volfile not found: %s",
+ strerror (errno));
goto out;
}
specfp = tmpfile ();
if (!specfp) {
+ gf_log ("booster", GF_LOG_ERROR, "Temp file creation failed"
+ ": %s", strerror (errno));
goto out;
}
ret = fwrite (specfile, size, 1, specfp);
if (ret != 1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to write volfile: %s",
+ strerror (errno));
goto out;
}
@@ -279,16 +289,23 @@ do_open (int fd, const char *pathname, int flags, mode_t mode, booster_op_t op)
size = fgetxattr (fd, "user.glusterfs-booster-mount", NULL, 0);
if (size == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Xattr "
+ "user.glusterfs-booster-mount not found: %s",
+ strerror (errno));
goto out;
}
mount_point = calloc (size, sizeof (char));
if (!mount_point) {
+ gf_log ("booster", GF_LOG_ERROR, "Memory allocation failed");
goto out;
}
ret = fgetxattr (fd, "user.glusterfs-booster-mount", mount_point, size);
if (ret == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Xattr "
+ "user.glusterfs-booster-mount not found: %s",
+ strerror (errno));
goto out;
}
@@ -302,28 +319,38 @@ do_open (int fd, const char *pathname, int flags, mode_t mode, booster_op_t op)
iparams.logfile = strdup (BOOSTER_DEFAULT_LOG);
}
+ gf_log ("booster", GF_LOG_DEBUG, "Using log-file: %s", iparams.logfile);
iparams.specfp = specfp;
ret = glusterfs_mount (mount_point, &iparams);
- if ((ret == -1) && (errno != EEXIST)) {
- goto out;
+ if (ret == -1) {
+ if (errno != EEXIST) {
+ gf_log ("booster", GF_LOG_ERROR, "Mount failed over"
+ " glusterfs");
+ goto out;
+ } else
+ gf_log ("booster", GF_LOG_ERROR, "Already mounted");
}
switch (op) {
case BOOSTER_OPEN:
+ gf_log ("booster", GF_LOG_DEBUG, "Booster open call");
fh = glusterfs_open (pathname, flags, mode);
break;
case BOOSTER_CREAT:
+ gf_log ("booster", GF_LOG_DEBUG, "Booster create call");
fh = glusterfs_creat (pathname, mode);
break;
}
if (!fh) {
+ gf_log ("booster", GF_LOG_ERROR, "Error performing operation");
goto out;
}
if (booster_fd_unused_get (booster_fdtable, fh, fd) == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to get unused FD");
goto out;
}
fh = NULL;
@@ -366,15 +393,21 @@ vmp_open (const char *pathname, int flags, ...)
else
fh = glusterfs_open (pathname, flags);
- if (!fh)
+ if (!fh) {
+ gf_log ("booster", GF_LOG_ERROR, "VMP open failed");
goto out;
+ }
fd = booster_get_process_fd ();
- if (fd == -1)
+ if (fd == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to create open fd");
goto fh_close_out;
+ }
- if (booster_fd_unused_get (booster_fdtable, fh, fd) == -1)
+ if (booster_fd_unused_get (booster_fdtable, fh, fd) == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to map fd into table");
goto realfd_close_out;
+ }
return fd;
@@ -405,6 +438,7 @@ booster_open (const char *pathname, int use64, int flags, ...)
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "Open: %s", pathname);
/* First try opening through the virtual mount point.
* The difference lies in the fact that:
* 1. We depend on libglusterfsclient library to perform
@@ -427,19 +461,31 @@ booster_open (const char *pathname, int use64, int flags, ...)
* actually was an error performing vmp_open. This must
* be returned to the user.
*/
- if (((ret < 0) && (errno != ENODEV)) || (ret > 0))
+ if ((ret < 0) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "Error in opening file over "
+ " VMP: %s", strerror (errno));
goto out;
+ }
- if (use64)
+ if (ret > 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "File opened");
+ goto out;
+ }
+
+ if (use64) {
+ gf_log ("booster", GF_LOG_DEBUG, "Using 64-bit open");
my_open = real_open64;
- else
+ } else {
+ gf_log ("booster", GF_LOG_DEBUG, "Using 32-bit open");
my_open = real_open;
+ }
/* It is possible the RESOLVE macro is not able
* to resolve the symbol of a function, in that case
* we dont want to seg-fault on calling a NULL functor.
*/
if (my_open == NULL) {
+ gf_log ("booster", GF_LOG_ERROR, "open not resolved");
ret = -1;
errno = ENOSYS;
goto out;
@@ -519,15 +565,22 @@ vmp_creat (const char *pathname, mode_t mode)
glusterfs_file_t fh = NULL;
fh = glusterfs_creat (pathname, mode);
- if (!fh)
+ if (!fh) {
+ gf_log ("booster", GF_LOG_ERROR, "Create failed: %s: %s",
+ pathname, strerror (errno));
goto out;
+ }
fd = booster_get_process_fd ();
- if (fd == -1)
+ if (fd == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to create fd");
goto close_out;
+ }
- if ((booster_fd_unused_get (booster_fdtable, fh, fd)) == -1)
+ if ((booster_fd_unused_get (booster_fdtable, fh, fd)) == -1) {
+ gf_log ("booster", GF_LOG_ERROR, "Failed to map unused fd");
goto real_close_out;
+ }
return fd;
@@ -551,10 +604,19 @@ creat (const char *pathname, mode_t mode)
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "Create: %s", pathname);
ret = vmp_creat (pathname, mode);
- if (((ret == -1) && (errno != ENODEV)) || (ret > 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "VMP create failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret > 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "File created");
goto out;
+ }
if (real_creat == NULL) {
errno = ENOSYS;
@@ -567,7 +629,9 @@ creat (const char *pathname, mode_t mode)
if (ret != -1) {
do_open (ret, pathname, GF_O_WRONLY | GF_O_TRUNC, mode,
BOOSTER_CREAT);
- }
+ } else
+ gf_log ("booster", GF_LOG_ERROR, "real create failed: %s",
+ strerror (errno));
out:
return ret;
@@ -582,14 +646,18 @@ pread (int fd, void *buf, size_t count, unsigned long offset)
ssize_t ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "pread: fd %d, count %ld, offset %ld",
+ fd, count, offset);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not booster fd");
if (real_pread == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_pread (fd, buf, count, offset);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_pread (glfs_fd, buf, count, offset);
booster_fdptr_put (glfs_fd);
}
@@ -604,14 +672,18 @@ pread64 (int fd, void *buf, size_t count, uint64_t offset)
ssize_t ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "pread64: fd %d, count %ld, offset"
+ " %ld", fd, count, offset);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not booster fd");
if (real_pread64 == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_pread64 (fd, buf, count, offset);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_pread (glfs_fd, buf, count, offset);
}
@@ -625,14 +697,17 @@ read (int fd, void *buf, size_t count)
int ret;
glusterfs_file_t glfs_fd;
+ gf_log ("booster", GF_LOG_DEBUG, "read: fd %d, count %ld", fd, count);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not booster fd");
if (real_read == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_read (fd, buf, count);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_read (glfs_fd, buf, count);
booster_fdptr_put (glfs_fd);
}
@@ -647,14 +722,17 @@ readv (int fd, const struct iovec *vector, int count)
int ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "readv: fd %d, iovecs %d", fd, count);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_readv == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_readv (fd, vector, count);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_readv (glfs_fd, vector, count);
booster_fdptr_put (glfs_fd);
}
@@ -669,15 +747,19 @@ write (int fd, const void *buf, size_t count)
int ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "write: fd %d, count %ld", fd, count);
+
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_write == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_write (fd, buf, count);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_write (glfs_fd, buf, count);
booster_fdptr_put (glfs_fd);
}
@@ -691,15 +773,18 @@ writev (int fd, const struct iovec *vector, int count)
int ret = 0;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "writev: fd %d, iovecs %d", fd, count);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_writev == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_writev (fd, vector, count);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_writev (glfs_fd, vector, count);
booster_fdptr_put (glfs_fd);
}
@@ -714,15 +799,19 @@ pwrite (int fd, const void *buf, size_t count, unsigned long offset)
int ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "pwrite: fd %d, count %ld, offset %ld"
+ , fd, count, offset);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_pwrite == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_pwrite (fd, buf, count, offset);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_pwrite (glfs_fd, buf, count, offset);
booster_fdptr_put (glfs_fd);
}
@@ -737,15 +826,19 @@ pwrite64 (int fd, const void *buf, size_t count, uint64_t offset)
int ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "pwrite64: fd %d, count %ld, offset"
+ "%ld", fd, count, offset);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (!glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_pwrite64 == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_pwrite64 (fd, buf, count, offset);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_pwrite (glfs_fd, buf, count, offset);
booster_fdptr_put (glfs_fd);
}
@@ -760,9 +853,11 @@ close (int fd)
int ret = -1;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "close: fd %s", fd);
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
booster_fd_put (booster_fdtable, fd);
ret = glusterfs_close (glfs_fd);
booster_fdptr_put (glfs_fd);
@@ -781,11 +876,16 @@ lseek (int filedes, unsigned long offset, int whence)
int ret;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "lseek: fd %d, offset %ld",
+ filedes, offset);
+
glfs_fd = booster_fdptr_get (booster_fdtable, filedes);
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_lseek (glfs_fd, offset, whence);
booster_fdptr_put (glfs_fd);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_lseek == NULL) {
errno = ENOSYS;
ret = -1;
@@ -804,11 +904,15 @@ lseek64 (int filedes, uint64_t offset, int whence)
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "lseek: fd %d, offset %"PRIu64,
+ filedes, offset);
glfs_fd = booster_fdptr_get (booster_fdtable, filedes);
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_lseek (glfs_fd, offset, whence);
booster_fdptr_put (glfs_fd);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_lseek64 == NULL) {
errno = ENOSYS;
ret = -1;
@@ -825,14 +929,17 @@ dup (int oldfd)
int ret = -1, new_fd = -1;
glusterfs_file_t glfs_fd = 0;
+ gf_log ("booster", GF_LOG_DEBUG, "dup: fd %d", oldfd);
glfs_fd = booster_fdptr_get (booster_fdtable, oldfd);
new_fd = real_dup (oldfd);
if (new_fd >=0 && glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = booster_fd_unused_get (booster_fdtable, glfs_fd,
new_fd);
fd_ref ((fd_t *)glfs_fd);
if (ret == -1) {
+ gf_log ("booster", GF_LOG_ERROR,"Failed to map new fd");
real_close (new_fd);
}
}
@@ -893,10 +1000,19 @@ mkdir (const char *pathname, mode_t mode)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "mkdir: path %s", pathname);
ret = glusterfs_mkdir (pathname, mode);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "mkdir failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "directory created");
+ return ret;
+ }
if (real_mkdir == NULL) {
ret = -1;
@@ -912,9 +1028,18 @@ rmdir (const char *pathname)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "rmdir: path %s", pathname);
ret = glusterfs_rmdir (pathname);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "rmdir failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "directory removed");
+ return ret;
+ }
if (real_rmdir == NULL) {
errno = ENOSYS;
@@ -930,9 +1055,18 @@ chmod (const char *pathname, mode_t mode)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "chmod: path %s", pathname);
ret = glusterfs_chmod (pathname, mode);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "chmod failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "chmod succeeded");
return ret;
+ }
if (real_chmod == NULL) {
errno = ENOSYS;
@@ -948,10 +1082,19 @@ chown (const char *pathname, uid_t owner, gid_t group)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "chown: path: %s", pathname);
ret = glusterfs_chown (pathname, owner, group);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "chown failed: %s\n",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "chown succeeded");
+ return ret;
+ }
if (real_chown == NULL) {
errno = ENOSYS;
@@ -968,14 +1111,18 @@ fchown (int fd, uid_t owner, gid_t group)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fchown: fd %d, uid %d, gid %d", fd,
+ owner, group);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_fchown == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_fchown (fd, owner, group);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fchown (fh, owner, group);
booster_fdptr_put (fh);
}
@@ -1001,8 +1148,11 @@ booster_init (void)
goto err;
}
- if (pipe (pipefd) == -1)
+ if (pipe (pipefd) == -1) {
+ gf_log ("booster-fstab", GF_LOG_ERROR, "Pipe creation failed:%s"
+ , strerror (errno));
goto err;
+ }
process_piped_fd = pipefd[0];
real_close (pipefd[1]);
@@ -1016,10 +1166,17 @@ booster_init (void)
if (booster_conf_path != NULL) {
if (strlen (booster_conf_path) > 0)
ret = booster_configure (booster_conf_path);
- else
+ else {
+ gf_log ("booster", GF_LOG_ERROR, "%s not defined, "
+ "using default path: %s", BOOSTER_CONF_ENV_VAR,
+ DEFAULT_BOOSTER_CONF);
ret = booster_configure (DEFAULT_BOOSTER_CONF);
- } else
+ }
+ } else {
+ gf_log ("booster", GF_LOG_ERROR, "%s not defined, using default"
+ " path: %s", BOOSTER_CONF_ENV_VAR,DEFAULT_BOOSTER_CONF);
ret = booster_configure (DEFAULT_BOOSTER_CONF);
+ }
if (ret == 0)
gf_log ("booster", GF_LOG_DEBUG, "booster is inited");
@@ -1066,14 +1223,17 @@ fchmod (int fd, mode_t mode)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fchmod: fd %d, mode: 0x%x", fd, mode);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_fchmod == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_fchmod (fd, mode);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fchmod (fh, mode);
booster_fdptr_put (fh);
}
@@ -1087,14 +1247,17 @@ fsync (int fd)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fsync: fd %d", fd);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_fsync == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_fsync (fd);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fsync (fh);
booster_fdptr_put (fh);
}
@@ -1108,14 +1271,18 @@ ftruncate (int fd, off_t length)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "ftruncate: fd %d, length: %ld", fd,
+ length);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_ftruncate == NULL) {
errno = ENOSYS;
ret = -1;
} else
ret = real_ftruncate (fd, length);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_ftruncate (fh, length);
booster_fdptr_put (fh);
}
@@ -1128,10 +1295,19 @@ link (const char *old, const char *new)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "link: old: %s, new: %s", old, new);
ret = glusterfs_link (old, new);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "Link failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "link call succeeded");
+ return ret;
+ }
if (real_link == NULL) {
errno = ENOSYS;
@@ -1147,10 +1323,19 @@ rename (const char *old, const char *new)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "link: old: %s, new: %s", old, new);
ret = glusterfs_rename (old, new);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "Rename failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "Rename succeeded");
+ return ret;
+ }
if (real_rename == NULL) {
errno = ENOSYS;
@@ -1166,9 +1351,18 @@ utimes (const char *path, const struct timeval times[2])
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "utimes: path %s", path);
ret = glusterfs_utimes (path, times);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "utimes failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "utimes succeeded");
return ret;
+ }
if (real_utimes == NULL) {
errno = ENOSYS;
@@ -1184,10 +1378,19 @@ utime (const char *path, const struct utimbuf *buf)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "utime: path %s", path);
ret = glusterfs_utime (path, buf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "utime failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "utime succeeded");
+ return ret;
+ }
if (real_utime == NULL) {
errno = ENOSYS;
@@ -1203,9 +1406,18 @@ mknod (const char *path, mode_t mode, dev_t dev)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "mknod: path %s", path);
ret = glusterfs_mknod (path, mode, dev);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "mknod failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "mknod succeeded");
return ret;
+ }
if (real_mknod) {
errno = ENOSYS;
@@ -1221,9 +1433,18 @@ mkfifo (const char *path, mode_t mode)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "mkfifo: path %s", path);
ret = glusterfs_mkfifo (path, mode);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "mkfifo failed: %s",
+ strerror (errno));
return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "mkfifo succeeded");
+ return ret;
+ }
if (real_mkfifo == NULL) {
errno = ENOSYS;
@@ -1239,9 +1460,18 @@ unlink (const char *path)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "unlink: path %s", path);
ret = glusterfs_unlink (path);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "unlink failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "unlink succeeded");
return ret;
+ }
if (real_unlink == NULL) {
errno = ENOSYS;
@@ -1257,9 +1487,19 @@ symlink (const char *oldpath, const char *newpath)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "symlink: old: %s, new: %s",
+ oldpath, newpath);
ret = glusterfs_symlink (oldpath, newpath);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "symlink failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "symlink succeeded");
return ret;
+ }
if (real_symlink == NULL) {
errno = ENOSYS;
@@ -1275,9 +1515,18 @@ readlink (const char *path, char *buf, size_t bufsize)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "readlink: path %s", path);
ret = glusterfs_readlink (path, buf, bufsize);
- if (((ret == -1) && (errno != ENODEV)) || (ret > 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "readlink failed: %s",
+ strerror (errno));
+ return ret;
+ }
+
+ if (ret > 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "readlink succeeded");
return ret;
+ }
if (real_readlink == NULL) {
errno = ENOSYS;
@@ -1293,9 +1542,18 @@ realpath (const char *path, char *resolved_path)
{
char *res = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "realpath: path %s", path);
res = glusterfs_realpath (path, resolved_path);
- if (((res == NULL) && (errno != ENODEV)) || (res != NULL))
+ if ((res == NULL) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "realpath failed: %s",
+ strerror (errno));
return res;
+ }
+
+ if (res != NULL) {
+ gf_log ("booster", GF_LOG_DEBUG, "realpath succeeded");
+ return res;
+ }
if (real_realpath == NULL) {
errno = ENOSYS;
@@ -1321,17 +1579,23 @@ opendir (const char *path)
struct booster_dir_handle *bh = NULL;
DIR *pdir = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "opendir: path: %s", path);
bh = calloc (1, sizeof (struct booster_dir_handle));
if (!bh) {
+ gf_log ("booster", GF_LOG_ERROR, "memory allocation failed");
errno = ENOMEM;
goto out;
}
gdir = glusterfs_opendir (path);
if (gdir) {
+ gf_log ("booster", GF_LOG_DEBUG, "Gluster dir opened");
bh->type = BOOSTER_GL_DIR;
bh->dirh = (void *)gdir;
goto out;
+ } else if ((!gdir) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "Opendir failed");
+ goto free_out;
}
if (real_opendir == NULL) {
@@ -1348,8 +1612,10 @@ opendir (const char *path)
}
free_out:
- free (bh);
- bh = NULL;
+ if (bh) {
+ free (bh);
+ bh = NULL;
+ }
out:
return (DIR *)bh;
}
@@ -1371,10 +1637,12 @@ booster_false_readdir_r (DIR *dir, struct dirent *entry, struct dirent **result)
}
if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir_r on gluster");
ret = glusterfs_readdir_r ((glusterfs_dir_t)bh->dirh, entry,
result);
} else if (bh->type == BOOSTER_POSIX_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir_r on posix");
if (real_readdir_r == NULL) {
ret = errno = ENOSYS;
goto out;
@@ -1402,10 +1670,12 @@ booster_false_readdir64_r (DIR *dir, struct dirent64 *entry,
}
if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir_r on gluster");
ret = glusterfs_readdir_r ((glusterfs_dir_t)bh->dirh,
(struct dirent *)entry,
(struct dirent **)result);
} else if (bh->type == BOOSTER_POSIX_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir_r on posix");
if (real_readdir64_r == NULL) {
ret = errno = ENOSYS;
goto out;
@@ -1431,9 +1701,11 @@ booster_readdir (DIR *dir)
goto out;
}
- if (bh->type == BOOSTER_GL_DIR)
+ if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir on gluster");
dirp = glusterfs_readdir ((glusterfs_dir_t)bh->dirh);
- else if (bh->type == BOOSTER_POSIX_DIR) {
+ } else if (bh->type == BOOSTER_POSIX_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "readdir on posix");
if (real_readdir == NULL) {
errno = ENOSYS;
dirp = NULL;
@@ -1461,9 +1733,11 @@ closedir (DIR *dh)
goto out;
}
- if (bh->type == BOOSTER_GL_DIR)
+ if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "closedir on gluster");
ret = glusterfs_closedir ((glusterfs_dir_t)bh->dirh);
- else if (bh->type == BOOSTER_POSIX_DIR) {
+ } else if (bh->type == BOOSTER_POSIX_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "closedir on posix");
if (real_closedir == NULL) {
errno = ENOSYS;
ret = -1;
@@ -1491,9 +1765,18 @@ booster_xstat (int ver, const char *path, void *buf)
struct stat *sbuf = (struct stat *)buf;
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "xstat: path: %s", path);
ret = glusterfs_stat (path, sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "xstat failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "xstat succeeded");
+ goto out;
+ }
if (real___xstat == NULL) {
ret = -1;
@@ -1512,9 +1795,18 @@ booster_xstat64 (int ver, const char *path, void *buf)
int ret = -1;
struct stat64 *sbuf = (struct stat64 *)buf;
+ gf_log ("booster", GF_LOG_DEBUG, "xstat64: path: %s", path);
ret = glusterfs_stat (path, (struct stat *)sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "xstat64 failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "xstat64 succeeded");
goto out;
+ }
if (real___xstat64 == NULL) {
errno = ENOSYS;
@@ -1533,9 +1825,18 @@ booster_stat (const char *path, void *buf)
struct stat *sbuf = (struct stat *)buf;
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "stat: path: %s", path);
ret = glusterfs_stat (path, sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "stat failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "stat succeeded");
goto out;
+ }
if (real_stat != NULL)
ret = real_stat (path, sbuf);
@@ -1558,9 +1859,18 @@ booster_stat64 (const char *path, void *buf)
int ret = -1;
struct stat64 *sbuf = (struct stat64 *)buf;
+ gf_log ("booster", GF_LOG_DEBUG, "stat64: %s", path);
ret = glusterfs_stat (path, (struct stat *)sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "stat64 failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "stat64 succeeded");
+ goto out;
+ }
if (real_stat64 != NULL)
ret = real_stat64 (path, sbuf);
@@ -1583,8 +1893,10 @@ booster_fxstat (int ver, int fd, void *buf)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fxstat: fd %d", fd);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real___fxstat == NULL) {
errno = ENOSYS;
ret = -1;
@@ -1593,6 +1905,7 @@ booster_fxstat (int ver, int fd, void *buf)
ret = real___fxstat (ver, fd, sbuf);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fstat (fh, sbuf);
booster_fdptr_put (fh);
}
@@ -1608,8 +1921,10 @@ booster_fxstat64 (int ver, int fd, void *buf)
struct stat64 *sbuf = (struct stat64 *)buf;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fxstat64: fd %d", fd);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real___fxstat64 == NULL) {
ret = -1;
errno = ENOSYS;
@@ -1617,6 +1932,7 @@ booster_fxstat64 (int ver, int fd, void *buf)
}
ret = real___fxstat64 (ver, fd, sbuf);
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fstat (fh, (struct stat *)sbuf);
booster_fdptr_put (fh);
}
@@ -1632,8 +1948,10 @@ booster_fstat (int fd, void *buf)
int ret = -1;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fstat: fd %d", fd);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_fstat != NULL)
ret = real_fstat (fd, sbuf);
else if (real___fxstat != NULL)
@@ -1644,6 +1962,7 @@ booster_fstat (int fd, void *buf)
goto out;
}
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fstat (fh, sbuf);
booster_fdptr_put (fh);
}
@@ -1659,8 +1978,10 @@ booster_fstat64 (int fd, void *buf)
struct stat64 *sbuf = (struct stat64 *)buf;
glusterfs_file_t fh = NULL;
+ gf_log ("booster", GF_LOG_DEBUG, "fstat64: fd %d", fd);
fh = booster_fdptr_get (booster_fdtable, fd);
if (!fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_fstat64 != NULL)
ret = real_fstat64 (fd, sbuf);
else if (real___fxstat64 != NULL)
@@ -1677,6 +1998,7 @@ booster_fstat64 (int fd, void *buf)
goto out;
}
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fstat (fh, (struct stat *)sbuf);
booster_fdptr_put (fh);
}
@@ -1691,9 +2013,18 @@ booster_lxstat (int ver, const char *path, void *buf)
struct stat *sbuf = (struct stat *)buf;
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "lxstat: path %s", path);
ret = glusterfs_lstat (path, sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lxstat failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "lxstat succeeded");
goto out;
+ }
if (real___lxstat == NULL) {
ret = -1;
@@ -1712,9 +2043,18 @@ booster_lxstat64 (int ver, const char *path, void *buf)
int ret = -1;
struct stat64 *sbuf = (struct stat64 *)buf;
+ gf_log ("booster", GF_LOG_DEBUG, "lxstat64: path %s", path);
ret = glusterfs_lstat (path, (struct stat *)sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lxstat64 failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "lxstat64 succeeded");
+ goto out;
+ }
if (real___lxstat64 == NULL) {
errno = ENOSYS;
@@ -1733,9 +2073,18 @@ booster_lstat (const char *path, void *buf)
struct stat *sbuf = (struct stat *)buf;
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "lstat: path %s", path);
ret = glusterfs_lstat (path, sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lstat failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "lstat succeeded");
goto out;
+ }
if (real_lstat != NULL)
ret = real_lstat (path, sbuf);
@@ -1758,9 +2107,18 @@ booster_lstat64 (const char *path, void *buf)
int ret = -1;
struct stat64 *sbuf = (struct stat64 *)buf;
+ gf_log ("booster", GF_LOG_DEBUG, "lstat64: path %s", path);
ret = glusterfs_lstat (path, (struct stat *)sbuf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lstat64 failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "lstat64 succeeded");
+ goto out;
+ }
if (real_lstat64 != NULL)
ret = real_lstat64 (path, sbuf);
@@ -1781,9 +2139,18 @@ booster_statfs (const char *pathname, struct statfs *buf)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "statfs: path %s", pathname);
ret = glusterfs_statfs (pathname, buf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "statfs failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "statfs succeeded");
+ goto out;
+ }
if (real_statfs == NULL) {
ret = -1;
@@ -1802,9 +2169,18 @@ booster_statfs64 (const char *pathname, struct statfs64 *buf)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "stat64: path %s", pathname);
ret = glusterfs_statfs (pathname, (struct statfs *)buf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "statfs64 failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "statfs64 succeeded");
goto out;
+ }
if (real_statfs64 == NULL) {
ret = -1;
@@ -1823,9 +2199,18 @@ booster_statvfs (const char *pathname, struct statvfs *buf)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "statvfs: path %s", pathname);
ret = glusterfs_statvfs (pathname, buf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "statvfs failed: %s",
+ strerror (errno));
goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "statvfs succeeded");
+ goto out;
+ }
if (real_statvfs == NULL) {
ret = -1;
@@ -1844,9 +2229,18 @@ booster_statvfs64 (const char *pathname, struct statvfs64 *buf)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "statvfs64: path %s", pathname);
ret = glusterfs_statvfs (pathname, (struct statvfs *)buf);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "statvfs64 failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "statvfs64 succeeded");
goto out;
+ }
if (real_statvfs64 == NULL) {
ret = -1;
@@ -1865,9 +2259,19 @@ getxattr (const char *path, const char *name, void *value, size_t size)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "getxattr: path %s, name %s", path,
+ name);
ret = glusterfs_getxattr (path, name, value, size);
- if (((ret == -1) && (ret != ENODEV)) || (ret > 0))
+ if ((ret == -1) && (ret != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "getxattr failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret > 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "getxattr succeeded");
return ret;
+ }
if (real_getxattr == NULL) {
ret = -1;
@@ -1886,9 +2290,20 @@ lgetxattr (const char *path, const char *name, void *value, size_t size)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "lgetxattr: path %s, name %s", path,
+ name);
ret = glusterfs_lgetxattr (path, name, value, size);
- if (((ret == -1) && (ret != ENODEV)) || (ret > 0))
+ if ((ret == -1) && (ret != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lgetxattr failed: %s",
+ strerror (errno));
+
+ return ret;
+ }
+
+ if (ret > 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "lgetxattr succeeded");
return ret;
+ }
if (real_lgetxattr == NULL) {
ret = -1;
@@ -1905,9 +2320,19 @@ int
remove (const char *path)
{
int ret = -1;
+
+ gf_log ("booster", GF_LOG_DEBUG, "remove: %s", path);
ret = glusterfs_remove (path);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "remove failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_DEBUG, "remove succeeded");
goto out;
+ }
if (real_remove == NULL) {
errno = ENOSYS;
@@ -1926,9 +2351,18 @@ lchown (const char *path, uid_t owner, gid_t group)
{
int ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "lchown: path %s", path);
ret = glusterfs_lchown (path, owner, group);
- if (((ret == -1) && (errno != ENODEV)) || (ret == 0))
+ if ((ret == -1) && (errno != ENODEV)) {
+ gf_log ("booster", GF_LOG_ERROR, "lchown failed: %s",
+ strerror (errno));
+ goto out;
+ }
+
+ if (ret == 0) {
+ gf_log ("booster", GF_LOG_ERROR, "lchown succeeded");
goto out;
+ }
if (real_lchown == NULL) {
errno = ENOSYS;
@@ -1952,14 +2386,15 @@ booster_rewinddir (DIR *dir)
goto out;
}
- if (bh->type == BOOSTER_GL_DIR)
+ if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "rewinddir on glusterfs");
glusterfs_rewinddir ((glusterfs_dir_t)bh->dirh);
- else if (bh->type == BOOSTER_POSIX_DIR) {
+ } else if (bh->type == BOOSTER_POSIX_DIR) {
if (real_rewinddir == NULL) {
errno = ENOSYS;
goto out;
}
-
+ gf_log ("booster", GF_LOG_DEBUG, "rewinddir on posix");
real_rewinddir ((DIR *)bh->dirh);
} else
errno = EINVAL;
@@ -1977,14 +2412,16 @@ booster_seekdir (DIR *dir, off_t offset)
goto out;
}
- if (bh->type == BOOSTER_GL_DIR)
+ if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "seekdir on glusterfs");
glusterfs_seekdir ((glusterfs_dir_t)bh->dirh, offset);
- else if (bh->type == BOOSTER_POSIX_DIR) {
+ } else if (bh->type == BOOSTER_POSIX_DIR) {
if (real_seekdir == NULL) {
errno = ENOSYS;
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "seekdir on posix");
real_seekdir ((DIR *)bh->dirh, offset);
} else
errno = EINVAL;
@@ -2003,14 +2440,16 @@ booster_telldir (DIR *dir)
goto out;
}
- if (bh->type == BOOSTER_GL_DIR)
+ if (bh->type == BOOSTER_GL_DIR) {
+ gf_log ("booster", GF_LOG_DEBUG, "telldir on glusterfs");
offset = glusterfs_telldir ((glusterfs_dir_t)bh->dirh);
- else if (bh->type == BOOSTER_POSIX_DIR) {
+ } else if (bh->type == BOOSTER_POSIX_DIR) {
if (real_telldir == NULL) {
errno = ENOSYS;
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "telldir on posix");
offset = real_telldir ((DIR *)bh->dirh);
} else
errno = EINVAL;
@@ -2046,12 +2485,15 @@ sendfile (int out_fd, int in_fd, off_t *offset, size_t count)
glusterfs_file_t in_fh = NULL;
ssize_t ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "sendfile: in fd %d, out fd %d, offset"
+ " %ld, count %ld", in_fd, out_fd, offset, count);
/*
* handle sendfile in booster only if in_fd corresponds to a glusterfs
* file handle
*/
in_fh = booster_fdptr_get (booster_fdtable, in_fd);
if (!in_fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_sendfile == NULL) {
errno = ENOSYS;
ret = -1;
@@ -2059,6 +2501,7 @@ sendfile (int out_fd, int in_fd, off_t *offset, size_t count)
ret = real_sendfile (out_fd, in_fd, offset, count);
}
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_sendfile (out_fd, in_fh, offset, count);
booster_fdptr_put (in_fh);
}
@@ -2072,12 +2515,15 @@ sendfile64 (int out_fd, int in_fd, off_t *offset, size_t count)
glusterfs_file_t in_fh = NULL;
ssize_t ret = -1;
+ gf_log ("booster", GF_LOG_DEBUG, "sendfile64: in fd %d, out fd %d,"
+ " offset %ld, count %ld", in_fd, out_fd, offset, count);
/*
* handle sendfile in booster only if in_fd corresponds to a glusterfs
* file handle
*/
in_fh = booster_fdptr_get (booster_fdtable, in_fd);
if (!in_fh) {
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
if (real_sendfile64 == NULL) {
errno = ENOSYS;
ret = -1;
@@ -2085,6 +2531,7 @@ sendfile64 (int out_fd, int in_fd, off_t *offset, size_t count)
ret = real_sendfile64 (out_fd, in_fd, offset, count);
}
} else {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_sendfile (out_fd, in_fh, offset, count);
booster_fdptr_put (in_fh);
}
@@ -2104,6 +2551,7 @@ fcntl (int fd, int cmd, ...)
glfs_fd = booster_fdptr_get (booster_fdtable, fd);
+ gf_log ("booster", GF_LOG_DEBUG, "fcntl: fd %d, cmd %d", fd, cmd);
switch (cmd) {
case F_DUPFD:
/*
@@ -2119,6 +2567,7 @@ fcntl (int fd, int cmd, ...)
case F_GETSIG:
case F_GETLEASE:
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fcntl (glfs_fd, cmd);
} else {
if (!real_fcntl) {
@@ -2126,6 +2575,7 @@ fcntl (int fd, int cmd, ...)
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
ret = real_fcntl (fd, cmd);
}
break;
@@ -2141,6 +2591,7 @@ fcntl (int fd, int cmd, ...)
va_end (ap);
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fcntl (glfs_fd, cmd, arg);
} else {
if (!real_fcntl) {
@@ -2148,6 +2599,7 @@ fcntl (int fd, int cmd, ...)
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
ret = real_fcntl (fd, cmd, arg);
}
break;
@@ -2174,6 +2626,7 @@ fcntl (int fd, int cmd, ...)
}
if (glfs_fd) {
+ gf_log ("booster", GF_LOG_DEBUG, "Is a booster fd");
ret = glusterfs_fcntl (glfs_fd, cmd, lock);
} else {
if (!real_fcntl) {
@@ -2181,6 +2634,7 @@ fcntl (int fd, int cmd, ...)
goto out;
}
+ gf_log ("booster", GF_LOG_DEBUG, "Not a booster fd");
ret = real_fcntl (fd, cmd, lock);
}
break;
diff --git a/booster/src/booster_fstab.c b/booster/src/booster_fstab.c
index 5f322acee..202249cad 100644
--- a/booster/src/booster_fstab.c
+++ b/booster/src/booster_fstab.c
@@ -25,6 +25,7 @@
#include "booster_fstab.h"
#include <stdlib.h>
#include <libglusterfsclient.h>
+#include <errno.h>
/* The default timeout for inode and stat cache. */
#define BOOSTER_DEFAULT_ATTR_TIMEO 5 /* In Secs */
@@ -36,13 +37,19 @@ glusterfs_fstab_init (const char *file, const char *mode)
{
glusterfs_fstab_t *handle = NULL;
handle = calloc (1, sizeof (glusterfs_fstab_t));
- if (!handle)
+ if (!handle) {
+ gf_log ("booster-fstab", GF_LOG_ERROR, "Memory allocation"
+ " failed");
goto out;
+ }
+ gf_log ("booster-fstab", GF_LOG_DEBUG, "FSTAB file: %s", file);
FILE *result = fopen (file,mode);
if (result != NULL) {
handle->fp = result;
} else {
+ gf_log ("booster-fstab", GF_LOG_ERROR, "FSTAB file open failed:"
+ " %s", strerror (errno));
free (handle);
handle = NULL;
}
@@ -372,8 +379,13 @@ booster_mount (struct glusterfs_mntent *ent)
if (!ent)
return;
- if ((strcmp (ent->mnt_type, "glusterfs") != 0))
+ gf_log ("booster-fstab", GF_LOG_DEBUG, "Mount entry: volfile: %s,"
+ " VMP: %s, Type: %s, Options: %s", ent->mnt_fsname,
+ ent->mnt_dir, ent->mnt_type, ent->mnt_opts);
+ if ((strcmp (ent->mnt_type, "glusterfs") != 0)) {
+ gf_log ("booster-fstab", GF_LOG_ERROR, "Type is not glusterfs");
return;
+ }
memset (&ipars, 0, sizeof (glusterfs_init_params_t));
if (ent->mnt_fsname)
@@ -408,7 +420,9 @@ booster_mount (struct glusterfs_mntent *ent)
ipars.lookup_timeout = timeout;
ipars.stat_timeout = timeout;
- glusterfs_mount (ent->mnt_dir, &ipars);
+ if ((glusterfs_mount (ent->mnt_dir, &ipars)) == -1)
+ gf_log ("booster-fstab", GF_LOG_ERROR, "VMP mounting failed");
+
clean_init_params (&ipars);
}