diff --git a/util-linux-2.14.1-mount_race.patch b/util-linux-2.14.1-mount_race.patch deleted file mode 100644 index 7c9c1f0..0000000 --- a/util-linux-2.14.1-mount_race.patch +++ /dev/null @@ -1,163 +0,0 @@ -Index: util-linux-ng-2.14.1/mount/fstab.c -=================================================================== ---- util-linux-ng-2.14.1.orig/mount/fstab.c 2008-05-29 01:01:02.000000000 +0200 -+++ util-linux-ng-2.14.1/mount/fstab.c 2009-01-07 12:18:03.000000000 +0100 -@@ -773,8 +773,6 @@ update_mtab (const char *dir, struct my_ - if (mtab_does_not_exist() || !mtab_is_writable()) - return; - -- lock_mtab(); -- - /* having locked mtab, read it again */ - mc0 = mc = &mtabhead; - mc->nxt = mc->prev = NULL; -@@ -893,7 +891,7 @@ update_mtab (const char *dir, struct my_ - } - - leave: -- unlock_mtab(); -+ ; - } - - -Index: util-linux-ng-2.14.1/mount/umount.c -=================================================================== ---- util-linux-ng-2.14.1.orig/mount/umount.c 2008-07-02 15:08:50.000000000 +0200 -+++ util-linux-ng-2.14.1/mount/umount.c 2009-01-07 12:50:48.000000000 +0100 -@@ -102,6 +102,8 @@ check_special_umountprog(const char *spe - if (strlen(type) < 100) { - sprintf(umountprog, "/sbin/umount.%s", type); - if (stat(umountprog, &statbuf) == 0) { -+ /* unlock mtab if we need to exec */ -+ unlock_mtab(); - res = fork(); - if (res == 0) { - char *umountargs[8]; -@@ -383,6 +385,8 @@ umount_all (char *types, char *test_opts - struct mntentchn *mc, *hd; - int errors = 0; - -+ if (!nomtab && mtab_is_writable()) -+ lock_mtab(); - hd = mtab_head(); - if (!hd->prev) - die (2, _("umount: cannot find list of filesystems to unmount")); -@@ -393,6 +397,7 @@ umount_all (char *types, char *test_opts - mc->m.mnt_type, mc->m.mnt_opts, mc); - } - } -+ unlock_mtab(); - - sync (); - return errors; -@@ -463,6 +468,7 @@ umount_file (char *arg) { - const char *file, *options; - int fstab_has_user, fstab_has_users, fstab_has_owner, fstab_has_group; - int ok; -+ int ret; - - if (!*arg) { /* "" would be expanded to `pwd` */ - die(2, _("Cannot umount \"\"\n")); -@@ -473,6 +479,8 @@ umount_file (char *arg) { - if (verbose > 1) - printf(_("Trying to umount %s\n"), file); - -+ if (!nomtab && mtab_is_writable()) -+ lock_mtab(); - mc = getmntdirbackward(file, NULL); - if (!mc) - mc = getmntdevbackward(file, NULL); -@@ -572,9 +580,12 @@ umount_file (char *arg) { - } - - if (mc) -- return umount_one_bw (file, mc); -+ ret = umount_one_bw (file, mc); - else -- return umount_one (arg, arg, arg, arg, NULL); -+ ret = umount_one (arg, arg, arg, arg, NULL); -+ -+ unlock_mtab(); -+ return ret; - } - - int -Index: util-linux-ng-2.14.1/mount/mount.c -=================================================================== ---- util-linux-ng-2.14.1.orig/mount/mount.c 2009-01-07 12:18:03.000000000 +0100 -+++ util-linux-ng-2.14.1/mount/mount.c 2009-01-07 14:40:16.000000000 +0100 -@@ -521,8 +521,6 @@ create_mtab (void) { - int flags; - mntFILE *mfp; - -- lock_mtab(); -- - mfp = my_setmntent (_PATH_MOUNTED, "a+"); - if (mfp == NULL || mfp->mntent_fp == NULL) { - int errsv = errno; -@@ -556,8 +554,6 @@ create_mtab (void) { - } - my_endmntent (mfp); - -- unlock_mtab(); -- - reset_mtab_info(); - } - -@@ -626,6 +622,8 @@ check_special_mountprog(const char *spec - if (strlen(type) < 100) { - sprintf(mountprog, "/sbin/mount.%s", type); - if (stat(mountprog, &statbuf) == 0) { -+ /* unlock mtab if we need to exec */ -+ unlock_mtab(); - if (verbose) - fflush(stdout); - res = fork(); -@@ -1004,7 +1002,6 @@ update_mtab_entry(const char *spec, cons - else { - mntFILE *mfp; - -- lock_mtab(); - mfp = my_setmntent(_PATH_MOUNTED, "a+"); - if (mfp == NULL || mfp->mntent_fp == NULL) { - int errsv = errno; -@@ -1018,7 +1015,6 @@ update_mtab_entry(const char *spec, cons - } - } - my_endmntent(mfp); -- unlock_mtab(); - } - } - my_free(mnt.mnt_fsname); -@@ -1138,12 +1134,15 @@ try_mount_one (const char *spec0, const - - mount_retry: - block_signals (SIG_BLOCK); -+ if (!nomtab && mtab_is_writable()) -+ lock_mtab(); - - if (!fake) { - mnt5_res = guess_fstype_and_mount (spec, node, &types, flags & ~MS_NOSYS, - mount_opts, &special, &status); - - if (special) { -+ unlock_mtab(); - block_signals (SIG_UNBLOCK); - res = status; - goto out; -@@ -1163,6 +1162,7 @@ mount_retry: - pass); - } - -+ unlock_mtab(); - block_signals (SIG_UNBLOCK); - res = 0; - goto out; -@@ -1173,6 +1173,7 @@ mount_retry: - if (loop) - del_loop(spec); - -+ unlock_mtab(); - block_signals (SIG_UNBLOCK); - - /* Mount failed, complain, but don't die. */ diff --git a/util-linux-2.14.1-mount_skip_sync.patch b/util-linux-2.14.1-mount_skip_sync.patch index 7f5a3ab..bc5bdf1 100644 --- a/util-linux-2.14.1-mount_skip_sync.patch +++ b/util-linux-2.14.1-mount_skip_sync.patch @@ -1,27 +1,23 @@ -Index: util-linux-ng-2.14.1/mount/umount.c -=================================================================== ---- util-linux-ng-2.14.1.orig/mount/umount.c 2008-11-20 15:01:09.000000000 +0100 -+++ util-linux-ng-2.14.1/mount/umount.c 2008-11-20 15:04:39.000000000 +0100 -@@ -384,6 +384,7 @@ static int +diff -Nurw util-linux-ng-2.16.orig/mount/umount.c util-linux-ng-2.16/mount/umount.c +--- util-linux-ng-2.16.orig/mount/umount.c 2009-07-04 01:20:06.000000000 +0200 ++++ util-linux-ng-2.16/mount/umount.c 2009-09-29 14:50:44.000000000 +0200 +@@ -361,6 +361,7 @@ umount_all (char *types, char *test_opts) { struct mntentchn *mc, *hd; int errors = 0; + int do_sync = 0; - lock_mtab(); hd = mtab_head(); -@@ -394,11 +395,13 @@ umount_all (char *types, char *test_opts + if (!hd->prev) +@@ -370,9 +371,11 @@ && matching_opts (mc->m.mnt_opts, test_opts)) { errors |= umount_one (mc->m.mnt_fsname, mc->m.mnt_dir, mc->m.mnt_type, mc->m.mnt_opts, mc); -+ do_sync = 1; ++ do_sync = 1; } } - unlock_mtab(); -- sync (); + if (do_sync) -+ sync (); + sync (); return errors; } - diff --git a/util-linux.changes b/util-linux.changes index 6e4743b..42af8cc 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue Sep 29 12:58:37 UTC 2009 - hvogel@novell.com + +- finaly remove the mount mtab locking patch: + * util-linux-2.14.1-mount_race.patch + It causes too much regressions. + +------------------------------------------------------------------- Mon Jul 13 14:21:07 CEST 2009 - kay.sievers@novell.com - update to final 2.16 release diff --git a/util-linux.spec b/util-linux.spec index 31b6e20..31177ab 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -29,7 +29,7 @@ License: BSD 3-clause (or similar) ; GPL v2 or later Group: System/Base AutoReqProv: on Version: 2.16 -Release: 2 +Release: 3 Requires: %name-lang = %{version} Summary: A collection of basic system utilities Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux/%name-ng-%version.tar.bz2 @@ -61,15 +61,13 @@ Source51: blkid.conf ## util-linux patches ## # add hostid -Patch2: util-linux-2.12-misc_utils_hostid.patch +Patch0: util-linux-2.12-misc_utils_hostid.patch # 241372 - remove legacy warnings from fdisk -Patch3: util-linux-2.12r-fdisk_remove_bogus_warnings.patch -# bnc#444966 -Patch17: util-linux-2.14.1-mount_race.patch +Patch1: util-linux-2.12r-fdisk_remove_bogus_warnings.patch # bnc#447036 -Patch18: util-linux-2.14.1-mount_skip_sync.patch +Patch2: util-linux-2.14.1-mount_skip_sync.patch # crypto patch -Patch30: util-linux-mount_losetup_crypto.patch +Patch3: util-linux-mount_losetup_crypto.patch ## ## adjtimex ## @@ -150,11 +148,10 @@ unique IDs (UUIDs). %lang_package %prep %setup -q -a 9 -b 10 -b 11 -b 12 -b 13 -n %name-ng-%version +%patch0 -p1 +%patch1 -p1 %patch2 -p1 %patch3 -p1 -%patch17 -p1 -%patch18 -p1 -%patch30 -p1 # cd adjtimex-* %patch50 -p1