diff --git a/umount-by-imgname.patch b/umount-by-imgname.patch deleted file mode 100644 index c19c014..0000000 --- a/umount-by-imgname.patch +++ /dev/null @@ -1,166 +0,0 @@ -From f4612577c942a3683b97632ad0b49671897c2070 Mon Sep 17 00:00:00 2001 -From: Petr Uzel -Date: Thu, 17 Feb 2011 12:52:43 +0100 -Subject: [PATCH] umount: allow unmounting loopdev specified by associated file - -Make it possible to unmount a filesystem on a loop device if it is -specified by associated backing file. It does not attempt to unmount -anything if there are more than one loop device associated with the -given file. - -Umount looks for associated loopdevice(s) only if umount is called -with the regular file as an argument. - -Before: - mount -o loop -t ext2 img mnt - umount -v img - > Could not find /home/puzel/upstream/util-linux/img in mtab - > umount: img: not mounted - -After: - mount -o loop -t ext2 img mnt - umount -v img - > img is associated with /dev/loop0, trying to unmount it - > /dev/loop0 has been unmounted - -[kzak@redhat.com: - fix memory leak in lomount.c] - -Addresses: https://bugzilla.novell.com/show_bug.cgi?id=666161 -Signed-off-by: Petr Uzel -Signed-off-by: Karel Zak ---- - mount/lomount.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - mount/lomount.h | 1 + - mount/umount.c | 22 ++++++++++++++++++++++ - 3 files changed, 76 insertions(+), 0 deletions(-) - -Index: util-linux-2.19/mount/lomount.c -=================================================================== ---- util-linux-2.19.orig/mount/lomount.c -+++ util-linux-2.19/mount/lomount.c -@@ -409,6 +409,51 @@ done: - return -1; - } - -+/* Find loop device associated with given @filename. Used for unmounting loop -+ * device specified by associated backing file. -+ * -+ * returns: 1 no such device/error -+ * 2 more than one loop device associated with @filename -+ * 0 exactly one loop device associated with @filename -+ * (@loopdev points to string containing full device name) -+ */ -+int -+find_loopdev_by_backing_file(const char *filename, char **loopdev) -+{ -+ struct looplist ll; -+ struct stat filestat; -+ int fd; -+ int devs_n = 0; /* number of loop devices found */ -+ char* devname = NULL; -+ -+ if (stat(filename, &filestat) == -1) { -+ perror(filename); -+ return 1; -+ } -+ -+ if (looplist_open(&ll, LLFLG_USEDONLY) == -1) { -+ error(_("%s: /dev directory does not exist."), progname); -+ return 1; -+ } -+ -+ while((devs_n < 2) && (fd = looplist_next(&ll)) != -1) { -+ if (is_associated(fd, &filestat, 0, 0) == 1) { -+ if (!devname) -+ devname = xstrdup(ll.name); -+ devs_n++; -+ } -+ close(fd); -+ } -+ looplist_close(&ll); -+ -+ if (devs_n == 1) { -+ *loopdev = devname; -+ return 0; /* exactly one loopdev */ -+ } -+ free(devname); -+ return devs_n ? 2 : 1; /* more loopdevs or error */ -+} -+ - #ifdef MAIN - - static int -@@ -581,6 +626,7 @@ show_associated_loop_devices(char *filen - return 0; - } - -+ - #endif /* MAIN */ - - /* check if the loopfile is already associated with the same given -@@ -1054,6 +1100,13 @@ find_unused_loop_device (void) { - return 0; - } - -+int -+find_loopdev_by_backing_file(const char *filename, char **loopdev) -+{ -+ mutter(); -+ return 1; -+} -+ - #endif /* !LOOP_SET_FD */ - - #ifdef MAIN -Index: util-linux-2.19/mount/lomount.h -=================================================================== ---- util-linux-2.19.orig/mount/lomount.h -+++ util-linux-2.19/mount/lomount.h -@@ -11,6 +11,7 @@ extern char * find_unused_loop_device(vo - extern int loopfile_used_with(char *devname, const char *filename, unsigned long long offset); - extern char *loopfile_used (const char *filename, unsigned long long offset); - extern char *loopdev_get_loopfile(const char *device); -+extern int find_loopdev_by_backing_file(const char *filename, char **loopdev); - - - #define SETLOOP_RDONLY (1<<0) /* Open loop read-only */ -Index: util-linux-2.19/mount/umount.c -=================================================================== ---- util-linux-2.19.orig/mount/umount.c -+++ util-linux-2.19/mount/umount.c -@@ -502,6 +502,7 @@ umount_file (char *arg) { - const char *file, *options; - int fstab_has_user, fstab_has_users, fstab_has_owner, fstab_has_group; - int ok; -+ struct stat statbuf; - - if (!*arg) { /* "" would be expanded to `pwd` */ - die(2, _("Cannot unmount \"\"\n")); -@@ -509,6 +510,27 @@ umount_file (char *arg) { - } - - file = canonicalize(arg); /* mtab paths are canonicalized */ -+ -+ /* if file is a regular file, check if it is associated -+ * with some loop device -+ */ -+ if (!stat(file, &statbuf) && S_ISREG(statbuf.st_mode)) { -+ char *loopdev = NULL; -+ switch (find_loopdev_by_backing_file(file, &loopdev)) { -+ case 0: -+ if (verbose) -+ printf(_("%s is associated with %s, trying to unmount it\n"), -+ arg, loopdev); -+ file = loopdev; -+ break; -+ case 2: -+ if (verbose) -+ printf(_("%s is associated with more than one loop device: not unmounting\n"), -+ arg); -+ break; -+ } -+ } -+ - if (verbose > 1) - printf(_("Trying to unmount %s\n"), file); - diff --git a/util-linux-2.19.1.tar.bz2 b/util-linux-2.19.1.tar.bz2 new file mode 100644 index 0000000..7b6e0c4 --- /dev/null +++ b/util-linux-2.19.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3eac4afcc687b3ae1ffedcab2dc12df84c7ba7045cce31386d2b7040a011c7d +size 4396543 diff --git a/util-linux-2.19.tar.bz2 b/util-linux-2.19.tar.bz2 deleted file mode 100644 index 32dd940..0000000 --- a/util-linux-2.19.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d8189ba6dfb508d5c36f50103a7b84943d893e51e6d7a314155a82f68efb33b6 -size 4376791 diff --git a/util-linux.changes b/util-linux.changes index ac3d0fd..4fa8499 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Tue May 3 09:39:37 UTC 2011 - puzel@novell.com + +- update to util-linux-2.19.1 + - numerous bugfixes, including (bnc#690486 and bnc#690488) +- drop umount-by-imgname.patch (merged upstream) +- cleanup: do not register ipc.info.gz (not provided by + this package) + ------------------------------------------------------------------- Thu Apr 14 16:27:27 UTC 2011 - puzel@novell.com diff --git a/util-linux.spec b/util-linux.spec index 7b87206..5e057ef 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -30,7 +30,7 @@ BuildRequires: pam-devel BuildRequires: pkg-config BuildRequires: readline-devel BuildRequires: zlib-devel -Version: 2.19 +Version: 2.19.1 Release: 5 Url: http://kernel.org/~kzak/util-linux/ Supplements: filesystem(minix) @@ -80,7 +80,6 @@ Source51: blkid.conf Patch1: util-linux-2.12r-fdisk_remove_bogus_warnings.patch # crypto patch Patch3: util-linux-2.17.1-mount_losetup_crypto.patch -Patch5: umount-by-imgname.patch ## ## adjtimex ## @@ -181,7 +180,6 @@ Files to develop applications using the libmount library. %setup -q -a 9 -b 11 -b 12 -b 13 -n %{name}-%{version} %patch1 -p1 %patch3 -p1 -%patch5 -p1 # cd adjtimex-* @@ -192,7 +190,6 @@ cp %{S:22} %{S:23} . # nologin cp %{S:2} %{S:3} %{S:26} %{S:30} . cd ../klogconsole -#%#patch55 -p1 -b .quiet %patch55 -p1 %patch56 -p1 cd ../time-* @@ -376,7 +373,6 @@ rm -rf %{buildroot} %post %{fillup_and_insserv raw} -%install_info --info-dir=%{_infodir} %{_infodir}/ipc.info.gz %install_info --entry="* time: (time). summarizing used system resources" --info-dir=%{_infodir} %{_infodir}/time.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/which.info.gz %if 0%{?suse_version} <= 1130