diff options
Diffstat (limited to 'contrib/fuse-lib')
| -rw-r--r-- | contrib/fuse-lib/misc.c | 3 | ||||
| -rw-r--r-- | contrib/fuse-lib/mount-common.c | 10 | ||||
| -rw-r--r-- | contrib/fuse-lib/mount-gluster-compat.h | 6 | ||||
| -rw-r--r-- | contrib/fuse-lib/mount.c | 13 |
4 files changed, 20 insertions, 12 deletions
diff --git a/contrib/fuse-lib/misc.c b/contrib/fuse-lib/misc.c index 0c41b1a1917..1a9b418e511 100644 --- a/contrib/fuse-lib/misc.c +++ b/contrib/fuse-lib/misc.c @@ -10,7 +10,7 @@ #include <string.h> #include <limits.h> #include <fcntl.h> -#include "glusterfs.h" +#include "glusterfs/glusterfs.h" #include "fuse_kernel.h" #include "fuse-misc.h" @@ -41,7 +41,6 @@ void convert_fuse_file_lock (struct fuse_file_lock *fl, struct gf_flock *flock, uint64_t lk_owner) { - memset (flock, 0, sizeof (struct flock)); flock->l_type = fl->type; flock->l_whence = SEEK_SET; flock->l_start = fl->start; diff --git a/contrib/fuse-lib/mount-common.c b/contrib/fuse-lib/mount-common.c index e9f80fe8154..cffd4c01ed5 100644 --- a/contrib/fuse-lib/mount-common.c +++ b/contrib/fuse-lib/mount-common.c @@ -32,7 +32,7 @@ mtab_needs_update (const char *mnt) struct stat stbuf; /* If mtab is within new mount, don't touch it */ - if (strncmp (mnt, _PATH_MOUNTED, strlen (mnt)) == 0 && + if (strncmp (mnt, _PATH_MOUNTED, sizeof (_PATH_MOUNTED) - 1) == 0 && _PATH_MOUNTED[strlen (mnt)] == '/') return 0; @@ -255,16 +255,16 @@ fuse_mnt_umount (const char *progname, const char *abs_mnt, exit (1); } #ifdef GF_LINUX_HOST_OS - execl ("/bin/umount", "/bin/umount", "-i", rel_mnt, + execl ("umount", "umount", "-i", rel_mnt, lazy ? "-l" : NULL, NULL); - GFFUSE_LOGERR ("%s: failed to execute /bin/umount: %s", + GFFUSE_LOGERR ("%s: failed to execute umount: %s", progname, strerror (errno)); #elif __NetBSD__ /* exitting the filesystem causes the umount */ exit (0); #else - execl ("/sbin/umount", "/sbin/umount", "-f", rel_mnt, NULL); - GFFUSE_LOGERR ("%s: failed to execute /sbin/umount: %s", + execl ("umount", "umount", "-f", rel_mnt, NULL); + GFFUSE_LOGERR ("%s: failed to execute umount: %s", progname, strerror (errno)); #endif /* GF_LINUX_HOST_OS */ exit (1); diff --git a/contrib/fuse-lib/mount-gluster-compat.h b/contrib/fuse-lib/mount-gluster-compat.h index a16103e0fbb..d3646d08d8e 100644 --- a/contrib/fuse-lib/mount-gluster-compat.h +++ b/contrib/fuse-lib/mount-gluster-compat.h @@ -96,9 +96,9 @@ typedef long long mount_flag_t; #define FREE(ptr) free (ptr) #define GFFUSE_LOGERR(...) fprintf (stderr, ## __VA_ARGS__) #else /* FUSE_UTIL */ -#include "glusterfs.h" -#include "logging.h" -#include "common-utils.h" +#include "glusterfs/glusterfs.h" +#include "glusterfs/logging.h" +#include "glusterfs/common-utils.h" #define GFFUSE_LOGERR(...) \ gf_log ("glusterfs-fuse", GF_LOG_ERROR, ## __VA_ARGS__) diff --git a/contrib/fuse-lib/mount.c b/contrib/fuse-lib/mount.c index 05d04b769e5..06ff191f542 100644 --- a/contrib/fuse-lib/mount.c +++ b/contrib/fuse-lib/mount.c @@ -52,12 +52,16 @@ gf_fuse_unmount (const char *mountpoint, int fd) if (geteuid () == 0) { fuse_mnt_umount ("fuse", mountpoint, mountpoint, 1); return; + } else { + GFFUSE_LOGERR ("fuse: Effective-uid: %d", geteuid()); } res = umount2 (mountpoint, 2); if (res == 0) return; + GFFUSE_LOGERR ("fuse: failed to unmount %s: %s", + mountpoint, strerror (errno)); pid = fork (); if (pid == -1) return; @@ -67,6 +71,8 @@ gf_fuse_unmount (const char *mountpoint, int fd) "--", mountpoint, NULL }; execvp (FUSERMOUNT_PROG, (char **)argv); + GFFUSE_LOGERR ("fuse: failed to execute fuserumount: %s", + strerror (errno)); _exit (1); } waitpid (pid, NULL, 0); @@ -95,14 +101,15 @@ gf_fuse_unmount_daemon (const char *mountpoint, int fd) pid = fork (); switch (pid) { + case 0: + { char c = 0; sigset_t sigset; - case 0: close_fds_except (ump, 1); setsid(); - chdir("/"); + (void)chdir("/"); sigfillset(&sigset); sigprocmask(SIG_BLOCK, &sigset, NULL); @@ -110,6 +117,7 @@ gf_fuse_unmount_daemon (const char *mountpoint, int fd) gf_fuse_unmount (mountpoint, fd); exit (0); + } case -1: close (fd); fd = -1; @@ -382,6 +390,7 @@ fuse_mount_sys (const char *mountpoint, char *fsname, build_iovec (&iov, &iovlen, "from", "/dev/fuse", -1); build_iovec (&iov, &iovlen, "volname", source, -1); build_iovec (&iov, &iovlen, "fd", fdstr, -1); + build_iovec (&iov, &iovlen, "allow_other", NULL, -1); ret = nmount (iov, iovlen, mountflags); #else ret = mount (source, mountpoint, fstype, mountflags, |
