summaryrefslogtreecommitdiffstats
path: root/contrib/fuse-lib
diff options
context:
space:
mode:
authorCsaba Henk <csaba@redhat.com>2012-05-15 21:24:43 +0530
committerAnand Avati <avati@redhat.com>2012-05-21 13:48:11 -0700
commitce6dc515e13fad593458dab942712f9068420fd2 (patch)
tree10cd3a68342890d133d7897f6dc036cf17838c26 /contrib/fuse-lib
parent6012dfe6b9c4d69914078cc0b716bf11aac5e957 (diff)
fuse: sync with upstream
Cherry-picked following commits from git://fuse.git.sourceforge.net/gitroot/fuse/fuse form 555d6b50..acc5c79d interval: commit 1193a39c0869a3608f22472735bcffdcccb6b2a5 Author: Reuben Hawkins <reubenhwk@gmail.com> cleaning up warnings commit dba9185999dfa35161d4c810735df0ab3fde5104 Author: Laszlo Papp <ext-laszlo.papp@nokia.com> Check the 'mtablock' for negative value commit e63a9d8ee6529c9d15a87745276f45c9bdad3961 Author: Miklos Szeredi <miklos@szeredi.hu> fusermount: clean up do_mount() function commit 81fee822a098a3e26969401fc486f136465f96f0 Author: Laszlo Papp <ext-laszlo.papp@nokia.com> Eliminate the unused value commit 60eb44ee5eb2756465610b215968f176f4aaac6e Author: Laszlo Papp <ext-laszlo.papp@nokia.com> Fix resource leaks in fusermount commit d6bec4020fddd4dd67248789a1af600580f2cbda Author: Miklos Szeredi <mszeredi@suse.cz> In case of failure to add to /etc/mtab don't umount. commit 1e7607ff89c65b005f69e27aeb1649d624099873 Author: Miklos Szeredi <mszeredi@suse.cz> fusermount: chdir to / before performing mount/umount commit 2fcbc2a5a94983813c533c015134c6974f8ee636 Author: Miklos Szeredi <miklos@szeredi.hu> fusermount: don't save/restore cwd commit bd99f9cf24e16643752b02fb4fa7b48f2124ab4e Author: Miklos Szeredi <miklos@szeredi.hu> Fix check for read-only fs in mtab update Nb.: - not picked changes that implement and enforce mount/umount mechanisms based on newer util-linux features (umount --fake and --no-canonicalize) - not picked fusermount "auto-unmount" feature Change-Id: Ib9498516184336e77ec047e5414125332d0a4292 BUG: 762389 Signed-off-by: Csaba Henk <csaba@redhat.com> Reviewed-on: http://review.gluster.com/3343 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'contrib/fuse-lib')
-rw-r--r--contrib/fuse-lib/mount-common.c22
-rw-r--r--contrib/fuse-lib/mount.c1
2 files changed, 21 insertions, 2 deletions
diff --git a/contrib/fuse-lib/mount-common.c b/contrib/fuse-lib/mount-common.c
index 7411e56c89b..fd6cce44e3d 100644
--- a/contrib/fuse-lib/mount-common.c
+++ b/contrib/fuse-lib/mount-common.c
@@ -20,10 +20,11 @@
* - there are some other minor things
*
* For changes that were made later and syncs with upstream,
- * see the commit log.
+ * see the commit log and per-function comments.
*/
#ifndef __NetBSD__
+/* FUSE: cherry-picked bd99f9cf */
static int
mtab_needs_update (const char *mnt)
{
@@ -47,11 +48,22 @@ mtab_needs_update (const char *mnt)
if (errno == ENOENT)
return 0;
} else {
+ uid_t ruid;
+ int err;
+
if (S_ISLNK (stbuf.st_mode))
return 0;
+ ruid = getuid ();
+ if (ruid != 0)
+ setreuid (0, -1);
+
res = access (_PATH_MOUNTED, W_OK);
- if (res == -1 && errno == EROFS)
+ err = (res == -1) ? errno : 0;
+ if (ruid != 0)
+ setreuid (ruid, -1);
+
+ if (err == EROFS)
return 0;
}
@@ -61,6 +73,7 @@ mtab_needs_update (const char *mnt)
#define mtab_needs_update(x) 1
#endif /* __NetBSD__ */
+/* FUSE: called add_mount_legacy(); R.I.P. as of cbd3a2a8 */
int
fuse_mnt_add_mount (const char *progname, const char *fsname,
const char *mnt, const char *type, const char *opts)
@@ -194,6 +207,11 @@ fuse_mnt_resolve_path (const char *progname, const char *orig)
return dst;
}
+/* FUSE: to support some changes that were reverted since
+ * then, it was split in two (fuse_mnt_umount() and
+ * exec_umount()); however the actual code is same as here
+ * since 0197ce40
+ */
int
fuse_mnt_umount (const char *progname, const char *abs_mnt,
const char *rel_mnt, int lazy)
diff --git a/contrib/fuse-lib/mount.c b/contrib/fuse-lib/mount.c
index 8787064fc04..f02a835b3a8 100644
--- a/contrib/fuse-lib/mount.c
+++ b/contrib/fuse-lib/mount.c
@@ -18,6 +18,7 @@
#define FUSE_DEVFD_ENV "_FUSE_DEVFD"
+/* FUSE: function is called fuse_kern_unmount() */
void
gf_fuse_unmount (const char *mountpoint, int fd)
{