[arch-commits] Commit in util-linux/trunk (4 files)

Tom Gundersen tomegun at archlinux.org
Sun Mar 4 21:47:12 UTC 2012


    Date: Sunday, March 4, 2012 @ 16:47:12
  Author: tomegun
Revision: 152118

add some patches

Added:
  util-linux/trunk/libmount-cosmetic-changes-around-none.patch
  util-linux/trunk/libmount-don-t-treat-none-differently.patch
  util-linux/trunk/mount-new-add-internal-only-i-to-non-root-allowed-op.patch
Modified:
  util-linux/trunk/PKGBUILD

------------------------------------------------------------+
 PKGBUILD                                                   |   17 -
 libmount-cosmetic-changes-around-none.patch                |   57 +++++
 libmount-don-t-treat-none-differently.patch                |  107 +++++++++++
 mount-new-add-internal-only-i-to-non-root-allowed-op.patch |   32 +++
 4 files changed, 204 insertions(+), 9 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-03-04 15:08:47 UTC (rev 152117)
+++ PKGBUILD	2012-03-04 21:47:12 UTC (rev 152118)
@@ -4,7 +4,7 @@
 
 pkgname=util-linux
 pkgver=2.21
-pkgrel=4
+pkgrel=5
 pkgdesc="Miscellaneous system utilities for Linux"
 url="http://www.kernel.org/pub/linux/utils/util-linux/"
 arch=('i686' 'x86_64')
@@ -20,7 +20,10 @@
 	libmount-canonicalize-targets-from-fstab-on-mount-a.patch
 	mount-new-cleanup-mount-a-return-codes.patch
 	libmount-use-mount.-type-s-for-NFS-only.patch
-	libmount-allow-empty-source-for-mount-2-syscall.patch)
+	libmount-allow-empty-source-for-mount-2-syscall.patch
+	mount-new-add-internal-only-i-to-non-root-allowed-op.patch
+	libmount-don-t-treat-none-differently.patch
+	libmount-cosmetic-changes-around-none.patch)
 optdepends=('perl: for chkdupexe support')
 
 build() {
@@ -35,6 +38,9 @@
   patch -p1 -i ../mount-new-cleanup-mount-a-return-codes.patch 
   patch -p1 -i ../libmount-use-mount.-type-s-for-NFS-only.patch
   patch -p1 -i ../libmount-allow-empty-source-for-mount-2-syscall.patch
+  patch -p1 -i ../mount-new-add-internal-only-i-to-non-root-allowed-op.patch
+  patch -p1 -i ../libmount-don-t-treat-none-differently.patch
+  patch -p1 -i ../libmount-cosmetic-changes-around-none.patch
 
   ./configure --prefix=/usr \
               --libdir=/usr/lib \
@@ -58,10 +64,3 @@
   # delete stray empty dir, fixed upstream
   rm -r usr/share/man/ru
 }
-md5sums=('208aa058f4117759d2939d1be7d662fc'
-         'c4011222a19b020d9b8465c3c7e443f6'
-         '8c1bf7b10e22e2b835441e6ae2d804d6'
-         '7b92423c588ed35229a9a166349c29a9'
-         'c483ab2d52609b5857d096b256a5075c'
-         'e31037773db7f3244b71db434f60e6f0'
-         '2de5ae7916e79970e90bf06542e43d86')

Added: libmount-cosmetic-changes-around-none.patch
===================================================================
--- libmount-cosmetic-changes-around-none.patch	                        (rev 0)
+++ libmount-cosmetic-changes-around-none.patch	2012-03-04 21:47:12 UTC (rev 152118)
@@ -0,0 +1,57 @@
+From 41d6af28c3475987a085dc085c2348e22dc7fbdd Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak at redhat.com>
+Date: Fri, 2 Mar 2012 11:23:34 +0100
+Subject: [PATCH] libmount: cosmetic changes around "none"
+
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ libmount/src/context.c       |    6 +++++-
+ libmount/src/context_mount.c |    7 +++++--
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/libmount/src/context.c b/libmount/src/context.c
+index 1f30292..f97dd36 100644
+--- a/libmount/src/context.c
++++ b/libmount/src/context.c
+@@ -1165,6 +1165,10 @@ int mnt_context_prepare_srcpath(struct libmnt_context *cxt)
+ 
+ 	src = mnt_fs_get_source(cxt->fs);
+ 
++	if (!src && (cxt->mountflags & MS_PROPAGATION))
++		/* mount --make-{shared,private,...} */
++		return mnt_fs_set_source(cxt->fs, "none");
++
+ 	/* ignore filesystems without source or filesystems
+ 	 * where the source is quasi-path (//foo/bar)
+ 	 */
+@@ -1203,7 +1207,7 @@ int mnt_context_prepare_srcpath(struct libmnt_context *cxt)
+ 
+ 	if ((cxt->mountflags & (MS_BIND | MS_MOVE | MS_PROPAGATION)) ||
+ 	    mnt_fs_is_pseudofs(cxt->fs)) {
+-		DBG(CXT, mnt_debug_h(cxt, "PROPAGATION/pseudo FS source: %s", path));
++		DBG(CXT, mnt_debug_h(cxt, "BIND/MOVE/pseudo FS source: %s", path));
+ 		return rc;
+ 	}
+ 
+diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
+index 098243b..c56ffd4 100644
+--- a/libmount/src/context_mount.c
++++ b/libmount/src/context_mount.c
+@@ -453,9 +453,12 @@ static int do_mount(struct libmnt_context *cxt, const char *try_type)
+ 
+ 	if (!target)
+ 		return -EINVAL;
+-	if (!src)
++	if (!src) {
++		/* unnecessary, should be already resolved in
++		 * mnt_context_prepare_srcpath(), but for sure... */
++		DBG(CXT, mnt_debug_h(cxt, "WARNING: source is NULL -- using \"none\"!"));
+ 		src = "none";
+-
++	}
+ 	type = try_type ? : mnt_fs_get_fstype(cxt->fs);
+ 
+ 	if (!(flags & MS_MGC_MSK))
+-- 
+1.7.9.2
+

Added: libmount-don-t-treat-none-differently.patch
===================================================================
--- libmount-don-t-treat-none-differently.patch	                        (rev 0)
+++ libmount-don-t-treat-none-differently.patch	2012-03-04 21:47:12 UTC (rev 152118)
@@ -0,0 +1,107 @@
+From d0ce7c07e66f4e458d290083fdcf62218d151883 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <d at falconindy.com>
+Date: Thu, 1 Mar 2012 22:47:00 -0500
+Subject: [PATCH] libmount: don't treat "none" differently
+
+This causes more problems than it solves. In the latest edition:
+
+  # mount -t proc none foo
+  mount: foo: mount failed: Invalid argument
+
+A check for source and target fails in mnt_context_apply_fstab()
+because, even though they were indeed specified on the cmdline,
+__mnt_fs_set_source_ptr() altered this and NULL'd out the source.
+
+If you're able to mount this device via other means, other tools start
+reporting oddities, such as mount's output:
+
+  (null) on /foo type proc (rw,relatime)
+
+or findmnt:
+
+  TARGET      SOURCE FSTYPE OPTIONS
+  /foo               proc   rw,relatime
+
+Simply treat "none" like any other source when passed in.
+
+[kzak at redhat.com: - don't translate NULL to "none" in mnt_fs_set_source()]
+
+Signed-off-by: Dave Reisner <dreisner at archlinux.org>
+Signed-off-by: Karel Zak <kzak at redhat.com>
+---
+ libmount/src/fs.c        |    7 ++-----
+ libmount/src/tab.c       |    7 +++----
+ libmount/src/tab_parse.c |    7 +------
+ 3 files changed, 6 insertions(+), 15 deletions(-)
+
+diff --git a/libmount/src/fs.c b/libmount/src/fs.c
+index a28e66c..5e4139c 100644
+--- a/libmount/src/fs.c
++++ b/libmount/src/fs.c
+@@ -304,11 +304,7 @@ int __mnt_fs_set_source_ptr(struct libmnt_fs *fs, char *source)
+ 
+ 	assert(fs);
+ 
+-	if (source && !strcmp(source, "none")) {
+-		free(source);
+-		source = NULL;
+-
+-	} else if (source && strchr(source, '=')) {
++	if (source && strchr(source, '=')) {
+ 		if (blkid_parse_tag_string(source, &t, &v) != 0)
+ 			return -1;
+ 	}
+@@ -341,6 +337,7 @@ int mnt_fs_set_source(struct libmnt_fs *fs, const char *source)
+ 
+ 	if (!fs)
+ 		return -EINVAL;
++
+ 	if (source) {
+ 		p = strdup(source);
+ 		if (!p)
+diff --git a/libmount/src/tab.c b/libmount/src/tab.c
+index 21b05c7..7dd9654 100644
+--- a/libmount/src/tab.c
++++ b/libmount/src/tab.c
+@@ -480,9 +480,8 @@ struct libmnt_fs *mnt_table_find_target(struct libmnt_table *tb, const char *pat
+  * The 2nd, 3rd and 4th iterations are not performed when @tb cache is not
+  * set (see mnt_table_set_cache()).
+  *
+- * Note that valid source path is NULL; the libmount uses NULL instead of
+- * "none".  The "none" is used in /proc/{mounts,self/mountninfo} for pseudo
+- * filesystems.
++ * Note that NULL is a valid source path; it will be replaced with "none". The
++ * "none" is used in /proc/{mounts,self/mountinfo} for pseudo filesystems.
+  *
+  * Returns: a tab entry or NULL.
+  */
+@@ -505,7 +504,7 @@ struct libmnt_fs *mnt_table_find_srcpath(struct libmnt_table *tb, const char *pa
+ 
+ 		p = mnt_fs_get_srcpath(fs);
+ 
+-		if (path == NULL && src == NULL)
++		if (path == NULL && (src == NULL || !strcmp(src, "none")))
+ 			return fs;			/* source is "none" */
+ 		if (path && p && streq_except_trailing_slash(p, path))
+ 			return fs;
+diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
+index 0f618bb..5bc55ae 100644
+--- a/libmount/src/tab_parse.c
++++ b/libmount/src/tab_parse.c
+@@ -180,12 +180,7 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, char *s)
+ 		unmangle_string(fs->vfs_optstr);
+ 		unmangle_string(fstype);
+ 		unmangle_string(src);
+-
+-		if (!strcmp(fs->fs_optstr, "none")) {
+-			free(fs->fs_optstr);
+-			fs->fs_optstr = NULL;
+-		} else
+-			unmangle_string(fs->fs_optstr);
++		unmangle_string(fs->fs_optstr);
+ 
+ 		rc = __mnt_fs_set_fstype_ptr(fs, fstype);
+ 		if (!rc) {
+-- 
+1.7.9.2
+

Added: mount-new-add-internal-only-i-to-non-root-allowed-op.patch
===================================================================
--- mount-new-add-internal-only-i-to-non-root-allowed-op.patch	                        (rev 0)
+++ mount-new-add-internal-only-i-to-non-root-allowed-op.patch	2012-03-04 21:47:12 UTC (rev 152118)
@@ -0,0 +1,32 @@
+From 50d0ad9875af9e478cd2577ac42041b16170a691 Mon Sep 17 00:00:00 2001
+From: Raghavendra D Prabhu <rprabhu at wnohang.net>
+Date: Sun, 26 Feb 2012 16:36:42 +0530
+Subject: [PATCH] mount: (new) add 'internal-only(i)' to non-root allowed
+ options
+
+Commit ce433404 introduced the change, which causes something like mount -i
+<user-mount-path> to break which worked well before util-linux-2.21, now it
+gives message 'mount: only root can use "--internal-only" option' when that
+shouldn't be the case when it is already in fstab.
+
+Signed-off-by: Raghavendra D Prabhu <rprabhu at wnohang.net>
+---
+ sys-utils/mount.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sys-utils/mount.c b/sys-utils/mount.c
+index 23abc91..8f5dcdb 100644
+--- a/sys-utils/mount.c
++++ b/sys-utils/mount.c
+@@ -712,7 +712,7 @@ int main(int argc, char **argv)
+ 					longopts, NULL)) != -1) {
+ 
+ 		/* only few options are allowed for non-root users */
+-		if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpr", c))
++		if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpri", c))
+ 			exit_non_root(option_to_longopt(c, longopts));
+ 
+ 		switch(c) {
+-- 
+1.7.9.2
+




More information about the arch-commits mailing list