diff --git a/util-linux-2.12-misc_utils_hostid.patch b/util-linux-2.12-misc_utils_hostid.patch index 1e3828b..18e5d32 100644 --- a/util-linux-2.12-misc_utils_hostid.patch +++ b/util-linux-2.12-misc_utils_hostid.patch @@ -1,7 +1,7 @@ -Index: util-linux-ng-2.12r+git20070530/misc-utils/hostid.1 +Index: util-linux-ng-2.14/misc-utils/hostid.1 =================================================================== ---- /dev/null -+++ util-linux-ng-2.12r+git20070530/misc-utils/hostid.1 +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/misc-utils/hostid.1 2008-06-24 12:12:17.000000000 +0200 @@ -0,0 +1,24 @@ +.TH hostid 1 +.SH NAME @@ -27,10 +27,10 @@ Index: util-linux-ng-2.12r+git20070530/misc-utils/hostid.1 +.SH SEE ALSO +gethostid(2), sethostid(2) + -Index: util-linux-ng-2.12r+git20070530/misc-utils/hostid.c +Index: util-linux-ng-2.14/misc-utils/hostid.c =================================================================== ---- /dev/null -+++ util-linux-ng-2.12r+git20070530/misc-utils/hostid.c +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/misc-utils/hostid.c 2008-06-24 12:12:17.000000000 +0200 @@ -0,0 +1,88 @@ +/* Program hostid. Changed on 7.10.1997 + New: - Hostid 0 is not permitted. @@ -120,25 +120,25 @@ Index: util-linux-ng-2.12r+git20070530/misc-utils/hostid.c + + return 0; +} -Index: util-linux-ng-2.12r+git20070530/misc-utils/Makefile.am +Index: util-linux-ng-2.14/misc-utils/Makefile.am =================================================================== ---- util-linux-ng-2.12r+git20070530.orig/misc-utils/Makefile.am -+++ util-linux-ng-2.12r+git20070530/misc-utils/Makefile.am -@@ -5,7 +5,7 @@ EXTRA_DIST = README.flushb +--- util-linux-ng-2.14.orig/misc-utils/Makefile.am 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/misc-utils/Makefile.am 2008-06-24 12:13:45.000000000 +0200 +@@ -4,7 +4,7 @@ EXTRA_DIST = README.flushb + bin_PROGRAMS = - usrbinexec_PROGRAMS = cal ddate logger look mcookie \ -- namei script whereis -+ namei script whereis hostid +-usrbinexec_PROGRAMS = cal ddate logger look mcookie \ ++usrbinexec_PROGRAMS = cal ddate hostid logger look mcookie \ + namei script whereis scriptreplay EXTRA_DIST += README.cal README.ddate README.namei README.namei2 - mcookie_SOURCES = mcookie.c ../lib/md5.c -@@ -15,7 +15,7 @@ usrbinexec_SCRIPTS = chkdupexe scriptrep - CLEANFILES = chkdupexe scriptreplay +@@ -14,7 +14,7 @@ usrbinexec_SCRIPTS = chkdupexe - man_MANS = cal.1 chkdupexe.1 ddate.1 logger.1 look.1 mcookie.1 \ -- namei.1 script.1 whereis.1 scriptreplay.1 -+ namei.1 script.1 whereis.1 scriptreplay.1 hostid.1 + CLEANFILES = chkdupexe - if HAVE_NCURSES - cal_LDADD = -lncurses +-dist_man_MANS = cal.1 chkdupexe.1 ddate.1 logger.1 look.1 mcookie.1 \ ++dist_man_MANS = cal.1 chkdupexe.1 ddate.1 hostid.1 logger.1 look.1 mcookie.1 \ + namei.1 script.1 whereis.1 scriptreplay.1 + + if HAVE_TINFO diff --git a/util-linux-2.13-fdisk_cfdisk_ncursesw.patch b/util-linux-2.13-fdisk_cfdisk_ncursesw.patch deleted file mode 100644 index 20f3226..0000000 --- a/util-linux-2.13-fdisk_cfdisk_ncursesw.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: util-linux-ng-2.13rc2+git20070725/fdisk/Makefile.am -=================================================================== ---- util-linux-ng-2.13rc2+git20070725.orig/fdisk/Makefile.am -+++ util-linux-ng-2.13rc2+git20070725/fdisk/Makefile.am -@@ -29,7 +29,7 @@ if HAVE_NCURSES - sbin_PROGRAMS += cfdisk - man_MANS += cfdisk.8 - cfdisk_SOURCES = cfdisk.c $(fdisk_common) --cfdisk_LDADD = -lncurses -+cfdisk_LDADD = -lncursesw - endif - endif - diff --git a/util-linux-2.13.1-canonicalize_loopfile_name.patch b/util-linux-2.13.1-canonicalize_loopfile_name.patch deleted file mode 100644 index 04c5e2c..0000000 --- a/util-linux-2.13.1-canonicalize_loopfile_name.patch +++ /dev/null @@ -1,96 +0,0 @@ -commit bfdb8be5c49d8fadb25118fb4416ab2a68fc3a16 -Author: Karel Zak -Date: Thu Oct 25 12:29:51 2007 +0200 - - losetup: canonicalize loopfile name - - When setting up a loop device, canonicalize the loop file - name. This simplifies a later identification of loop file names - when querying the loop devices. - - Co-Author: Matthias Koenig - Signed-off-by: Matthias Koenig - Signed-off-by: Karel Zak - -Index: util-linux-ng-2.13.1/mount/lomount.c -=================================================================== ---- util-linux-ng-2.13.1.orig/mount/lomount.c -+++ util-linux-ng-2.13.1/mount/lomount.c -@@ -22,10 +22,12 @@ - #include "lomount.h" - #include "xstrncpy.h" - #include "nls.h" -+#include "realpath.h" -+#include "xmalloc.h" -+ - - extern int verbose; - extern char *progname; --extern char *xstrdup (const char *s); /* not: #include "sundries.h" */ - extern void error (const char *fmt, ...); /* idem */ - - #define SIZE(a) (sizeof(a)/sizeof(a[0])) -@@ -279,6 +281,7 @@ set_loop(const char *device, const char - struct loop_info64 loopinfo64; - int fd, ffd, mode, i; - char *pass; -+ char filename[PATH_MAX+1]; - - mode = (*loopro ? O_RDONLY : O_RDWR); - if ((ffd = open(file, mode)) < 0) { -@@ -298,7 +301,8 @@ set_loop(const char *device, const char - - memset(&loopinfo64, 0, sizeof(loopinfo64)); - -- xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE); -+ myrealpath(file, filename, PATH_MAX); -+ xstrncpy(loopinfo64.lo_file_name, filename, LO_NAME_SIZE); - - if (encryption && *encryption) { - if (digits_only(encryption)) { -@@ -386,7 +390,7 @@ set_loop(const char *device, const char - - if (verbose > 1) - printf(_("set_loop(%s,%s,%llu): success\n"), -- device, file, offset); -+ device, filename, offset); - return 0; - } - -@@ -470,23 +474,6 @@ usage(void) { - exit(1); - } - --char * --xstrdup (const char *s) { -- char *t; -- -- if (s == NULL) -- return NULL; -- -- t = strdup (s); -- -- if (t == NULL) { -- fprintf(stderr, _("not enough memory")); -- exit(1); -- } -- -- return t; --} -- - void - error (const char *fmt, ...) { - va_list args; -Index: util-linux-ng-2.13.1/mount/Makefile.am -=================================================================== ---- util-linux-ng-2.13.1.orig/mount/Makefile.am -+++ util-linux-ng-2.13.1/mount/Makefile.am -@@ -25,7 +25,7 @@ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LD - - swapon_SOURCES = swapon.c swap_constants.h $(utils_common) - --losetup_SOURCES = lomount.c loop.h lomount.h -+losetup_SOURCES = lomount.c loop.h lomount.h realpath.c xmalloc.c - losetup_CPPFLAGS = -DMAIN $(AM_CPPFLAGS) - - mount_LDADD = $(LDADD_common) diff --git a/util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch b/util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch deleted file mode 100644 index f818c34..0000000 --- a/util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch +++ /dev/null @@ -1,65 +0,0 @@ -X-Gnus-Coding-System: -*- coding: utf-8; -*- - -Minix filesystem until version 2 has a fixed blocksize of 1024 bytes. -If you try to create a filsystem on a device with a physical sectorsize -larger than 1024 bytes, this resulting minix fs cannot be mounted, -because the physical sectorsize must be smaller than the filesystem -blocksize. -This patch adds a check for this and will refuse to create a filesystem -if the sectorsize is bigger than the blocksize. - -Signed-off-by: Matthias Koenig ---- - - disk-utils/Makefile.am | 4 +++- - disk-utils/mkfs.minix.c | 12 ++++++++++-- - 2 files changed, 13 insertions(+), 3 deletions(-) - -Index: util-linux-ng-2.13.1/disk-utils/mkfs.minix.c -=================================================================== ---- util-linux-ng-2.13.1.orig/disk-utils/mkfs.minix.c -+++ util-linux-ng-2.13.1/disk-utils/mkfs.minix.c -@@ -78,6 +78,7 @@ - #ifndef BLKGETSIZE - #define BLKGETSIZE _IO(0x12,96) /* return device size */ - #endif -+#define BLKSSZGET _IO(0x12,104)/* get block device sector size */ - - #ifndef __GNUC__ - #error "needs gcc for the bitop-__asm__'s" -@@ -238,6 +239,16 @@ get_size(const char *file) { - return size; - } - -+/* get hardware sector size */ -+int -+blkdev_get_sector_size(int fd, int *sector_size) -+{ -+ if (ioctl(fd, BLKSSZGET, sector_size) >= 0) -+ return 0; -+ -+ return -1; -+} -+ - static void - write_tables(void) { - /* Mark the super block valid. */ -@@ -707,9 +718,16 @@ main(int argc, char ** argv) { - DEV = open(device_name,O_RDWR); - if (DEV<0) - die(_("unable to open %s")); -- if (!S_ISBLK(statbuf.st_mode)) -+ if (S_ISBLK(statbuf.st_mode)) { -+ int sectorsize; -+ -+ if (blkdev_get_sector_size(DEV, §orsize) == -1) -+ die(_("cannot determine sector size for %s")); -+ if (BLOCK_SIZE < sectorsize) -+ die(_("block size smaller than physical sector size of %s")); -+ } else if (!S_ISBLK(statbuf.st_mode)) { - check=0; -- else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) -+ } else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) - die(_("will not try to make filesystem on '%s'")); - setup_tables(); - if (check) diff --git a/util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch b/util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch deleted file mode 100644 index b42b6cb..0000000 --- a/util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch +++ /dev/null @@ -1,103 +0,0 @@ -Index: util-linux-ng-2.13.1/disk-utils/mkfs.minix.c -=================================================================== ---- util-linux-ng-2.13.1.orig/disk-utils/mkfs.minix.c -+++ util-linux-ng-2.13.1/disk-utils/mkfs.minix.c -@@ -78,6 +78,7 @@ - #ifndef BLKGETSIZE - #define BLKGETSIZE _IO(0x12,96) /* return device size */ - #endif -+#define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size in bytes (u64 *arg) */ - #define BLKSSZGET _IO(0x12,104)/* get block device sector size */ - - #ifndef __GNUC__ -@@ -103,7 +104,7 @@ - static char * program_name = "mkfs"; - static char * device_name = NULL; - static int DEV = -1; --static long BLOCKS = 0; -+static unsigned long long BLOCKS = 0; - static int check = 0; - static int badblocks = 0; - static int namelen = 30; /* default (changed to 30, per Linus's -@@ -219,24 +220,21 @@ count_blocks (int fd) { - return (low + 1); - } - --static int --get_size(const char *file) { -- int fd; -- long size; -- -- fd = open(file, O_RDWR); -- if (fd < 0) { -- perror(file); -- exit(1); -- } -+/* get size in bytes */ -+int -+blkdev_get_size(int fd, unsigned long long *bytes) -+{ -+ unsigned long size; -+ -+ if (ioctl(fd, BLKGETSIZE64, bytes) >= 0) -+ return 0; -+ - if (ioctl(fd, BLKGETSIZE, &size) >= 0) { -- close(fd); -- return (size * 512); -+ *bytes = ((unsigned long long)size << 9); -+ return 0; - } -- -- size = count_blocks(fd); -- close(fd); -- return size; -+ -+ return -1; - } - - /* get hardware sector size */ -@@ -687,19 +685,9 @@ main(int argc, char ** argv) { - } - } - -- if (device_name && !BLOCKS) -- BLOCKS = get_size (device_name) / 1024; -- if (!device_name || BLOCKS<10) { -+ if (!device_name) { - usage(); - } -- if (version2) { -- if (namelen == 14) -- magic = MINIX2_SUPER_MAGIC; -- else -- magic = MINIX2_SUPER_MAGIC2; -- } else -- if (BLOCKS > 65535) -- BLOCKS = 65535; - check_mount(); /* is it already mounted? */ - tmp = root_block; - *(short *)tmp = 1; -@@ -725,10 +713,22 @@ main(int argc, char ** argv) { - die(_("cannot determine sector size for %s")); - if (BLOCK_SIZE < sectorsize) - die(_("block size smaller than physical sector size of %s")); -+ if (!BLOCKS && blkdev_get_size(DEV, &BLOCKS) == -1) -+ die(_("cannot determine size of %s")); - } else if (!S_ISBLK(statbuf.st_mode)) { - check=0; - } else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) - die(_("will not try to make filesystem on '%s'")); -+ if (BLOCKS < 10) -+ die(_("number of blocks too small")); -+ if (version2) { -+ if (namelen == 14) -+ magic = MINIX2_SUPER_MAGIC; -+ else -+ magic = MINIX2_SUPER_MAGIC2; -+ } else -+ if (BLOCKS > 65535) -+ BLOCKS = 65535; - setup_tables(); - if (check) - check_blocks(); diff --git a/util-linux-2.13.1-mount_getfs_fix.patch b/util-linux-2.13.1-mount_getfs_fix.patch deleted file mode 100644 index e838463..0000000 --- a/util-linux-2.13.1-mount_getfs_fix.patch +++ /dev/null @@ -1,86 +0,0 @@ -X-Gnus-Coding-System: -*- coding: utf-8; -*- - -On Mon, Feb 11, 2008 at 05:04:22PM +0100, Matthias Koenig wrote: -> Matthias Koenig writes: -> -> > Fixes a problem when you define a device via a persistent -> > udev device name in /etc/fstab but use the real block device -> > name on mount invocation. - - I didn't test it, but according to the code (and code never lies:-) - you're right. - -> > mc0 = fstab_head(); -> > - for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) -> > - if (streq(mc->m.mnt_fsname, devname)) -> > + for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) { -> > + name = canonicalize(mc->m.mnt_fsname); -> > + if (streq(name, devname)) { -> > + free(name); -> > return mc; -> > + } -> > + free(name); -> > + } -> > return NULL; -> > } - - We can't simply canonicalize only. We have to support non-canonicalized - (/dev/cdrom, ...) versions too. And there shouldn't be a performance - penalization for people who use canonical paths in their fstab. - -> I am dumb, please ignore this patch. -> New patch will follow. - - No problem. Please, test the patch below. - - Karel - ->From a3c6d618c332ed3651fef629739ac246fd31b7ca Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Fri, 15 Feb 2008 01:56:18 +0100 -Subject: [PATCH] mount: use canonicalize in getfs_by_devname - -Fixes a problem when you define a device via a persistent -udev device name in /etc/fstab but use the real block device -name on mount invocation. - -Signed-off-by: Karel Zak ---- - mount/fstab.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/mount/fstab.c b/mount/fstab.c -index 814e6fc..ada8d32 100644 ---- a/mount/fstab.c -+++ b/mount/fstab.c -@@ -425,9 +425,22 @@ getfs_by_devname (const char *devname) { - struct mntentchn *mc, *mc0; - - mc0 = fstab_head(); -+ -+ /* canonical devname in fstab */ - for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) - if (streq(mc->m.mnt_fsname, devname)) - return mc; -+ -+ /* noncanonical devname in fstab */ -+ for (mc = mc0->nxt; mc && mc != mc0; mc = mc->nxt) { -+ char *fs = canonicalize(mc->m.mnt_fsname); -+ if (streq(fs, devname)) { -+ free(fs); -+ return mc; -+ } -+ free(fs); -+ } -+ - return NULL; - } - --- -1.5.3.8 - -- -To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - diff --git a/util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch b/util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch deleted file mode 100644 index 63a2f6b..0000000 --- a/util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch +++ /dev/null @@ -1,245 +0,0 @@ -commit 2368077223fa5800cf88659c9c57a7f6517f3fad -Author: Karel Zak -Date: Tue Sep 11 14:35:34 2007 +0200 - - mount: prevent loop mounting the same file twice - - The mount syscall prevents mounting the same device twice - to the same mountpoint. When loop mounting a file, for each - file a new loop device gets allocated, which prevents the detection - of loop mounting the same file to the same mountpoint twice. - The patch adds a check to prevent double mounts, if the same loopfile - is going to be mounted with the same offset to the same mountpoint. - - Co-Author: Matthias Koenig - Signed-off-by: Matthias Koenig - Signed-off-by: Karel Zak - -Index: util-linux-ng-2.13.1/mount/lomount.c -=================================================================== ---- util-linux-ng-2.13.1.orig/mount/lomount.c -+++ util-linux-ng-2.13.1/mount/lomount.c -@@ -143,7 +143,7 @@ show_used_loop_devices (void) { - - for (j = 0; j < SIZE(loop_formats); j++) { - for(i = 0; i < 256; i++) { -- sprintf(dev, loop_formats[j], i); -+ snprintf(dev, sizeof(dev), loop_formats[j], i); - if (stat (dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) { - fd = open (dev, O_RDONLY); - if (fd >= 0) { -@@ -169,6 +169,102 @@ show_used_loop_devices (void) { - - #endif - -+/* check if the loopfile is already associated with the same given -+ * parameters. -+ * -+ * returns: -1 error -+ * 0 unused -+ * 1 loop device already used -+ */ -+static int -+is_associated(int dev, struct stat *file, unsigned long long offset) -+{ -+ struct loop_info64 linfo64; -+ struct loop_info64 linfo; -+ int ret = 0; -+ -+ if (ioctl(dev, LOOP_GET_STATUS64, &linfo64) == 0) { -+ if (file->st_dev == linfo64.lo_device && -+ file->st_ino == linfo64.lo_inode && -+ offset == linfo64.lo_offset) -+ ret = 1; -+ return ret; -+ } -+ if (ioctl(dev, LOOP_GET_STATUS, &linfo) == 0) { -+ if (file->st_dev == linfo.lo_device && -+ file->st_ino == linfo.lo_inode && -+ offset == linfo.lo_offset) -+ ret = 1; -+ return ret; -+ } -+ -+ return errno == ENXIO ? 0 : -1; -+} -+ -+/* check if the loop file is already used with the same given -+ * parameters. We check for device no, inode and offset. -+ * returns: associated devname or NULL -+ */ -+char * -+loopfile_used (const char *filename, unsigned long long offset) { -+ char dev[20]; -+ char *loop_formats[] = { "/dev/loop%d", "/dev/loop/%d" }; -+ int i, j, fd; -+ struct stat devstat, filestat; -+ struct loop_info loopinfo; -+ -+ if (stat(filename, &filestat) == -1) { -+ perror(filename); -+ return NULL; -+ } -+ -+ for (j = 0; j < SIZE(loop_formats); j++) { -+ for(i = 0; i < 256; i++) { -+ snprintf(dev, sizeof(dev), loop_formats[j], i); -+ if (stat (dev, &devstat) == 0 && S_ISBLK(devstat.st_mode)) { -+ fd = open (dev, O_RDONLY); -+ if (fd >= 0) { -+ int res = 0; -+ -+ if(ioctl (fd, LOOP_GET_STATUS, &loopinfo) == 0) -+ res = is_associated(fd, &filestat, offset); -+ close (fd); -+ if (res == 1) -+ return xstrdup(dev); -+ } -+ continue; /* continue trying as long as devices exist */ -+ } -+ break; -+ } -+ } -+ return NULL; -+} -+ -+int -+loopfile_used_with(char *devname, const char *filename, unsigned long long offset) -+{ -+ struct stat statbuf; -+ int fd, ret; -+ -+ if (!is_loop_device(devname)) -+ return 0; -+ -+ if (stat(filename, &statbuf) == -1) { -+ perror(filename); -+ return -1; -+ } -+ -+ fd = open(devname, O_RDONLY); -+ if (fd == -1) { -+ perror(devname); -+ return -1; -+ } -+ ret = is_associated(fd, &statbuf, offset); -+ -+ close(fd); -+ return ret; -+} -+ - int - is_loop_device (const char *device) { - struct stat statbuf; -@@ -284,6 +380,16 @@ set_loop(const char *device, const char - char *filename; - char res_file[PATH_MAX+1]; - -+ if (verbose) { -+ char *xdev = loopfile_used(file, offset); -+ -+ if (xdev) { -+ printf(_("warning: %s is already associated with %s\n"), -+ file, xdev); -+ free(xdev); -+ } -+ } -+ - mode = (*loopro ? O_RDONLY : O_RDWR); - if ((ffd = open(file, mode)) < 0) { - if (!*loopro && errno == EROFS) -Index: util-linux-ng-2.13.1/mount/lomount.h -=================================================================== ---- util-linux-ng-2.13.1.orig/mount/lomount.h -+++ util-linux-ng-2.13.1/mount/lomount.h -@@ -4,3 +4,6 @@ extern int set_loop(const char *, const - extern int del_loop(const char *); - extern int is_loop_device(const char *); - extern char * find_unused_loop_device(void); -+ -+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); -Index: util-linux-ng-2.13.1/mount/mount.c -=================================================================== ---- util-linux-ng-2.13.1.orig/mount/mount.c -+++ util-linux-ng-2.13.1/mount/mount.c -@@ -42,6 +42,7 @@ - #include "mount_paths.h" - #include "env.h" - #include "nls.h" -+#include "realpath.h" - - #define DO_PS_FIDDLING - -@@ -833,9 +834,49 @@ suid_check(const char *spec, const char - *flags &= ~(MS_OWNER | MS_GROUP); - } - -+/* Check, if there already exists a mounted loop device on the mountpoint node -+ * with the same parameters. -+ */ -+static int -+is_mounted_same_loopfile(const char *node0, const char *loopfile, unsigned long long offset) -+{ -+ struct mntentchn *mnt = NULL; -+ char node[PATH_MAX+1]; -+ int res = 0; -+ -+ myrealpath(node0, node, PATH_MAX); -+ -+ /* Search for mountpoint node in mtab, -+ * procceed if any of these has the loop option set or -+ * the device is a loop device -+ */ -+ mnt = getmntdirbackward(node, mnt); -+ if (!mnt) { -+ return 0; -+ } -+ for(; mnt && res == 0; mnt = getmntdirbackward(node, mnt)) { -+ char *p; -+ -+ if (strncmp(mnt->m.mnt_fsname, "/dev/loop", 9) == 0) -+ res = loopfile_used_with((char *) mnt->m.mnt_fsname, -+ loopfile, offset); -+ -+ else if ((p = strstr(mnt->m.mnt_opts, "loop="))) { -+ char *dev = xstrdup(p+5); -+ if ((p = strchr(dev, ','))) -+ *p = '\0'; -+ res = loopfile_used_with(dev, loopfile, offset); -+ free(dev); -+ } -+ } -+ -+ return res; -+} -+ - static int - loop_check(const char **spec, const char **type, int *flags, -- int *loop, const char **loopdev, const char **loopfile) { -+ int *loop, const char **loopdev, const char **loopfile, -+ const char *node) { - int looptype; - unsigned long long offset; - -@@ -876,6 +917,11 @@ loop_check(const char **spec, const char - - offset = opt_offset ? strtoull(opt_offset, NULL, 0) : 0; - -+ if (is_mounted_same_loopfile(node, *loopfile, offset)) { -+ error(_("mount: according to mtab %s is already mounted on %s as loop"), *loopfile, node); -+ return EX_FAIL; -+ } -+ - do { - if (!*loopdev || !**loopdev) - *loopdev = find_unused_loop_device(); -@@ -1061,7 +1107,7 @@ try_mount_one (const char *spec0, const - * stale assignments of files to loop devices. Nasty when used for - * encryption. - */ -- res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile); -+ res = loop_check(&spec, &types, &flags, &loop, &loopdev, &loopfile, node); - if (res) - goto out; - } diff --git a/util-linux-2.14-mount_ignore_ENXIO_in_del_loop.patch b/util-linux-2.14-mount_ignore_ENXIO_in_del_loop.patch new file mode 100644 index 0000000..e28eb44 --- /dev/null +++ b/util-linux-2.14-mount_ignore_ENXIO_in_del_loop.patch @@ -0,0 +1,37 @@ +Index: util-linux-ng-2.14/mount/lomount.c +=================================================================== +--- util-linux-ng-2.14.orig/mount/lomount.c 2008-06-25 11:35:27.000000000 +0200 ++++ util-linux-ng-2.14/mount/lomount.c 2008-06-25 12:47:28.000000000 +0200 +@@ -878,6 +878,7 @@ set_loop(const char *device, const char + int + del_loop (const char *device) { + int fd; ++ int res = 0; + + if ((fd = open (device, O_RDONLY)) < 0) { + int errsv = errno; +@@ -886,10 +887,22 @@ del_loop (const char *device) { + return 1; + } + if (ioctl (fd, LOOP_CLR_FD, 0) < 0) { +- perror ("ioctl: LOOP_CLR_FD"); ++ if (errno == ENXIO) { ++ /* ignore ENXIO, device has probably been ++ * auto-destructed */ ++ if (verbose > 1) ++ printf(_("del_loop(%s): already deleted\n"), ++ device); ++ res = 0; ++ } else { ++ perror ("ioctl: LOOP_CLR_FD"); ++ res = 1; ++ } ++ + close(fd); +- return 1; ++ return res; + } ++ + close (fd); + if (verbose > 1) + printf(_("del_loop(%s): success\n"), device); diff --git a/util-linux-2.14-mount_retry_on_nomedium.patch b/util-linux-2.14-mount_retry_on_nomedium.patch new file mode 100644 index 0000000..5d50d96 --- /dev/null +++ b/util-linux-2.14-mount_retry_on_nomedium.patch @@ -0,0 +1,123 @@ +mount: retry on ENOMEDIUM + +From: Matthias Koenig + +Due to a change in kernel behaviour when opening CDROM devices, +we need to retry the open/mount call when ENOMEDIUM is returned. + +Explanation from Tejun Heo: +Okay, the difference is from the addition of cdrom_get_media_event() +call to both sr_drive_status() and ide_cdrom_drive_status(). +Previously, the cdrom driver can't differentiate between tray closed +w/ no media and tray open and always returned tray open, which +triggers close and retry in the open logic which probably have delayed +things enough to get the media recognized. + +Now the cdrom driver can discern between tray closed w/o media and +device not ready for other reasons and returns -ENOMEDIUM on the +former. This is all good and dandy but the problem seems that some +drives report no media right after the tray is closed but it hasn't +properly detected the media yet. + +It seems the only way to work around the problem is via sensible +retries (e.g. try three times 5 secs apart) and I don't think we can +add that type of retry logic into cdrom open path. Please note that +the previous logic wasn't water proof. Some drives can take longer to +recognize the media is there and could have failed the in-kernel retry +too. Also, reading the media can take quite some time and during that +period the drive reports media present but device not ready. The +driver will retry the command (e.g. READ TOC for open) five times but +all of them can fail w/ EMEDIUMTYPE. + +Signed-off-by: Matthias Koenig +--- + + mount/fsprobe_volumeid.c | 15 +++++++++++++-- + mount/mount.c | 11 +++++++++++ + 2 files changed, 24 insertions(+), 2 deletions(-) + +diff --git a/mount/fsprobe_volumeid.c b/mount/fsprobe_volumeid.c +index 7c98dc6..1ef788c 100644 +--- a/mount/fsprobe_volumeid.c ++++ b/mount/fsprobe_volumeid.c +@@ -3,6 +3,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -15,6 +16,8 @@ + #include "pathnames.h" + #include "sundries.h" + ++#define MAX_RETRIES 5 ++ + enum probe_type { + VOLUME_ID_NONE, + VOLUME_ID_LABEL, +@@ -30,10 +33,18 @@ static char + struct volume_id *id; + const char *val; + char *value = NULL; ++ int retries = 0; + ++retry: + fd = open(device, O_RDONLY); +- if (fd < 0) +- return NULL; ++ if (fd < 0) { ++ if (errno == ENOMEDIUM && retries < MAX_RETRIES) { ++ ++retries; ++ sleep(3); ++ goto retry; ++ } else ++ return NULL; ++ } + + id = volume_id_open_fd(fd); + if (!id) { +diff --git a/mount/mount.c b/mount/mount.c +index bed792d..5d50bca 100644 +--- a/mount/mount.c ++++ b/mount/mount.c +@@ -1061,6 +1061,7 @@ cdrom_setspeed(const char *spec) { + static int + try_mount_one (const char *spec0, const char *node0, const char *types0, + const char *opts0, int freq, int pass, int ro) { ++#define MAX_RETRIES 5 + int res = 0, status = 0, special = 0; + int mnt5_res = 0; /* only for gcc */ + int mnt_err; +@@ -1072,6 +1073,7 @@ try_mount_one (const char *spec0, const char *node0, const char *types0, + int loop = 0; + const char *loopdev = 0, *loopfile = 0; + struct stat statbuf; ++ int retries = 0; /* Nr of retries for mount in case of ENOMEDIUM */ + + /* copies for freeing on exit */ + const char *opts1, *spec1, *node1, *types1, *extra_opts1; +@@ -1134,6 +1136,7 @@ try_mount_one (const char *spec0, const char *node0, const char *types0, + goto out; + } + ++mount_retry: + block_signals (SIG_BLOCK); + + if (!fake) { +@@ -1363,6 +1366,14 @@ try_mount_one (const char *spec0, const char *node0, const char *types0, + } + break; + } ++ case ENOMEDIUM: ++ if (retries < MAX_RETRIES) { ++ ++retries; ++ sleep(3); ++ goto mount_retry; ++ } ++ error(_("mount: No medium found on %s"), spec); ++ break; + default: + error ("mount: %s", strerror (mnt_err)); break; + } diff --git a/util-linux-mount_losetup_crypto.patch b/util-linux-mount_losetup_crypto.patch index 53f4cff..f5dccbf 100644 --- a/util-linux-mount_losetup_crypto.patch +++ b/util-linux-mount_losetup_crypto.patch @@ -40,62 +40,58 @@ Signed-off-by: Ludwig Nussel create mode 100644 mount/sha512.c create mode 100644 mount/sha512.h -Index: util-linux-ng-2.13.1/mount/Makefile.am +Index: util-linux-ng-2.14/mount/Makefile.am =================================================================== ---- util-linux-ng-2.13.1.orig/mount/Makefile.am -+++ util-linux-ng-2.13.1/mount/Makefile.am -@@ -13,6 +13,7 @@ headers_common = fstab.h linux_fs.h moun +--- util-linux-ng-2.14.orig/mount/Makefile.am 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/mount/Makefile.am 2008-06-25 11:33:15.000000000 +0200 +@@ -13,6 +13,7 @@ headers_common = fstab.h mount_mntent.h getusername.h loop.h sundries.h mount_common = fstab.c mount_mntent.c getusername.c lomount.c \ -+ rmd160.c sha512.c \ - $(utils_common) $(headers_common) ../lib/env.c - - mount_SOURCES = mount.c $(mount_common) ../lib/setproctitle.c -@@ -25,7 +26,8 @@ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LD ++ rmd160.c sha512.c \ + $(utils_common) $(headers_common) ../lib/env.c ../lib/linux_version.c \ + ../lib/blkdev.c +@@ -27,7 +28,8 @@ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LD swapon_SOURCES = swapon.c swap_constants.h $(utils_common) --losetup_SOURCES = lomount.c loop.h lomount.h realpath.c xmalloc.c -+losetup_SOURCES = lomount.c loop.h lomount.h realpath.c xmalloc.c \ -+ rmd160.c sha512.c + losetup_SOURCES = lomount.c sundries.c xmalloc.c realpath.c \ +- loop.h lomount.h xmalloc.h sundries.h realpath.h ++ loop.h lomount.h xmalloc.h sundries.h realpath.h \ ++ rmd160.c sha512.c losetup_CPPFLAGS = -DMAIN $(AM_CPPFLAGS) mount_LDADD = $(LDADD_common) -Index: util-linux-ng-2.13.1/mount/lomount.c +Index: util-linux-ng-2.14/mount/lomount.c =================================================================== ---- util-linux-ng-2.13.1.orig/mount/lomount.c -+++ util-linux-ng-2.13.1/mount/lomount.c -@@ -20,11 +20,16 @@ - - #include "loop.h" - #include "lomount.h" +--- util-linux-ng-2.14.orig/mount/lomount.c 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/mount/lomount.c 2008-06-25 11:33:15.000000000 +0200 +@@ -24,6 +24,12 @@ + #include "sundries.h" + #include "xmalloc.h" + #include "realpath.h" +#include "rmd160.h" +#include "sha512.h" - #include "xstrncpy.h" - #include "nls.h" - #include "realpath.h" - #include "xmalloc.h" - ++ +#ifndef MIN +#define MIN(a,b) ((a enable data encryption with specified \n" + " -H | --phash hash password using specified algorithm (sha512/sha256/sha384/rmd160/none)\n" " -h | --help this help\n" @@ -298,50 +283,50 @@ Index: util-linux-ng-2.13.1/mount/lomount.c + " key size. Key sizes < 128 are generally not\n" + " recommended\n" " -o | --offset start at offset into file\n" + " --sizelimit loop limited to only bytes of the file\n" " -p | --pass-fd read passphrase from file descriptor \n" - " -r | --read-only setup read-only loop device\n" -@@ -594,11 +708,14 @@ error (const char *fmt, ...) { +@@ -850,11 +965,14 @@ usage(void) { int main(int argc, char **argv) { - char *p, *offset, *encryption, *passfd, *device, *file; -+ char *keysize; -+ char *phash = NULL; + char *p, *offset, *sizelimit, *encryption, *passfd, *device, *file, *assoc; ++ char *keysize; ++ char *phash = NULL; int delete, find, c, all; int res = 0; int showdev = 0; int ro = 0; int pfd = -1; -+ int keysz = 0; - unsigned long long off; ++ int keysz = 0; + unsigned long long off, slimit; struct option longopts[] = { { "all", 0, 0, 'a' }, -@@ -606,6 +723,8 @@ main(int argc, char **argv) { +@@ -862,6 +980,8 @@ main(int argc, char **argv) { { "encryption", 1, 0, 'e' }, { "find", 0, 0, 'f' }, { "help", 0, 0, 'h' }, + { "keybits", 1, 0, 'k' }, + { "phash", 1, 0, 'H' }, + { "associated", 1, 0, 'j' }, { "offset", 1, 0, 'o' }, - { "pass-fd", 1, 0, 'p' }, - { "read-only", 0, 0, 'r' }, -@@ -621,12 +740,13 @@ main(int argc, char **argv) { - delete = find = all = 0; + { "sizelimit", 1, 0, 128 }, +@@ -880,12 +1000,13 @@ main(int argc, char **argv) { off = 0; - offset = encryption = passfd = NULL; + slimit = 0; + assoc = offset = sizelimit = encryption = passfd = NULL; + keysize = NULL; progname = argv[0]; if ((p = strrchr(progname, '/')) != NULL) progname = p+1; -- while ((c = getopt_long(argc, argv, "ade:E:fho:p:rsv", -+ while ((c = getopt_long(argc, argv, "ade:E:fhk:o:p:rsvH:", +- while ((c = getopt_long(argc, argv, "ade:E:fhj:o:p:rsv", ++ while ((c = getopt_long(argc, argv, "ade:E:fhj:k:o:p:rsvH:", longopts, NULL)) != -1) { switch (c) { case 'a': -@@ -645,6 +765,12 @@ main(int argc, char **argv) { - case 'f': - find = 1; +@@ -907,6 +1028,12 @@ main(int argc, char **argv) { + case 'j': + assoc = optarg; break; + case 'k': + keysize = optarg; @@ -352,24 +337,25 @@ Index: util-linux-ng-2.13.1/mount/lomount.c case 'o': offset = optarg; break; -@@ -708,8 +834,10 @@ main(int argc, char **argv) { - usage(); +@@ -985,8 +1112,11 @@ main(int argc, char **argv) { + else { if (passfd && sscanf(passfd, "%d", &pfd) != 1) usage(); + if (keysize && sscanf(keysize,"%d",&keysz) != 1) + usage(); do { -- res = set_loop(device, file, off, encryption, pfd, &ro); -+ res = set_loop(device, file, off, encryption, phash, pfd, &ro, keysz); +- res = set_loop(device, file, off, slimit, encryption, pfd, &ro); ++ res = set_loop(device, file, off, slimit, encryption, phash, ++ pfd, &ro, keysz); if (res == 2 && find) { if (verbose) printf("stolen loop=%s...trying again\n", -Index: util-linux-ng-2.13.1/mount/losetup.8 +Index: util-linux-ng-2.14/mount/losetup.8 =================================================================== ---- util-linux-ng-2.13.1.orig/mount/losetup.8 -+++ util-linux-ng-2.13.1/mount/losetup.8 -@@ -76,6 +76,15 @@ find the first unused loop device. If a - argument is present, use this device. Otherwise, print its name. +--- util-linux-ng-2.14.orig/mount/losetup.8 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/mount/losetup.8 2008-06-25 11:33:15.000000000 +0200 +@@ -80,9 +80,18 @@ find the first unused loop device. If a + argument is present, use this device. Otherwise, print its name .IP "\fB\-h, \-\-help\fP" print help +.IP "\fB\-H, \-\-phash \fIhash_type\fP" @@ -379,12 +365,15 @@ Index: util-linux-ng-2.13.1/mount/losetup.8 +.BR sha384 , +.BR rmd160 , +.BR none . + .IP "\fB\-j, \-\-associated \fIfile\fP" + show status of all loop devices associated with given + .I file +.IP "\fB\-k, \-\-keybits \fInum\fP" +set the number of bits to use in key to \fInum\fP. .IP "\fB\-o, \-\-offset \fIoffset\fP" - The data start is moved \fIoffset\fP bytes into the specified file or - device. -@@ -140,6 +149,8 @@ the command + the data start is moved \fIoffset\fP bytes into the specified file or + device +@@ -153,6 +162,8 @@ the command .fi .SH RESTRICTION DES encryption is painfully slow. On the other hand, XOR is terribly weak. @@ -393,13 +382,13 @@ Index: util-linux-ng-2.13.1/mount/losetup.8 Cryptoloop is deprecated in favor of dm-crypt. For more details see .B cryptsetup(8). -Index: util-linux-ng-2.13.1/mount/mount.8 +Index: util-linux-ng-2.14/mount/mount.8 =================================================================== ---- util-linux-ng-2.13.1.orig/mount/mount.8 -+++ util-linux-ng-2.13.1/mount/mount.8 -@@ -610,6 +610,15 @@ This option implies the options - (unless overridden by subsequent options, as in the option line - .BR group,dev,suid ). +--- util-linux-ng-2.14.orig/mount/mount.8 2008-06-09 11:28:17.000000000 +0200 ++++ util-linux-ng-2.14/mount/mount.8 2008-06-25 11:33:15.000000000 +0200 +@@ -618,6 +618,15 @@ This option implies the options + .B nofail + Do not report errors for this device if it does not exist. .TP +.B encryption +Specifies an encryption algorithm to use. Used in conjunction with the @@ -407,13 +396,13 @@ Index: util-linux-ng-2.13.1/mount/mount.8 +.TP +.B keybits +Specifies the key size to use for an encryption algorithm. Used in conjunction -+with the ++with the +.BR loop " and " encryption " options." +.TP .B mand Allow mandatory locks on this filesystem. See .BR fcntl (2). -@@ -2008,6 +2017,10 @@ that are really options to +@@ -2034,6 +2043,10 @@ that are really options to .BR \%losetup (8). (These options can be used in addition to those specific to the filesystem type.) @@ -424,11 +413,11 @@ Index: util-linux-ng-2.13.1/mount/mount.8 If no explicit loop device is mentioned (but just an option `\fB\-o loop\fP' is given), then -Index: util-linux-ng-2.13.1/mount/mount.c +Index: util-linux-ng-2.14/mount/mount.c =================================================================== ---- util-linux-ng-2.13.1.orig/mount/mount.c -+++ util-linux-ng-2.13.1/mount/mount.c -@@ -94,6 +94,9 @@ static int suid = 0; +--- util-linux-ng-2.14.orig/mount/mount.c 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/mount/mount.c 2008-06-25 11:33:15.000000000 +0200 +@@ -87,6 +87,9 @@ static int suid = 0; /* Contains the fd to read the passphrase from, if any. */ static int pfd = -1; @@ -438,54 +427,51 @@ Index: util-linux-ng-2.13.1/mount/mount.c /* Map from -o and fstab option strings to the flag argument to mount(2). */ struct opt_map { const char *opt; /* option name */ -@@ -191,6 +194,7 @@ static int opt_nofail = 0; +@@ -184,6 +187,7 @@ static int opt_nofail = 0; - static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption, - *opt_speed, *opt_comment, *opt_uhelper; + static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_sizelimit, + *opt_encryption, *opt_speed, *opt_comment, *opt_uhelper; +static const char *opt_keybits, *opt_phash; static int mounted (const char *spec0, const char *node0); static int check_special_mountprog(const char *spec, const char *node, -@@ -205,6 +209,8 @@ static struct string_opt_map { - { "vfs=", 1, &opt_vfstype }, +@@ -199,6 +203,8 @@ static struct string_opt_map { { "offset=", 0, &opt_offset }, + { "sizelimit=", 0, &opt_sizelimit }, { "encryption=", 0, &opt_encryption }, + { "phash=", 0, &opt_phash }, + { "keybits=", 0, &opt_keybits }, { "speed=", 0, &opt_speed }, { "comment=", 1, &opt_comment }, { "uhelper=", 0, &opt_uhelper }, -@@ -903,7 +909,7 @@ loop_check(const char **spec, const char +@@ -898,7 +904,8 @@ loop_check(const char **spec, const char *type = opt_vfstype; } -- *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption); -+ *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption || opt_phash || opt_keybits); +- *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_sizelimit || opt_encryption); ++ *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_sizelimit || ++ opt_encryption || opt_phash || opt_keybits); *loopfile = *spec; if (*loop) { -@@ -929,9 +935,10 @@ loop_check(const char **spec, const char - return EX_SYSERR; /* no more loop devices */ - if (verbose) +@@ -930,7 +937,7 @@ loop_check(const char **spec, const char printf(_("mount: going to use the loop device %s\n"), *loopdev); -- -+ if (!keysz && opt_keybits) -+ keysz = strtoul(opt_keybits, NULL, 0); - if ((res = set_loop(*loopdev, *loopfile, offset, -- opt_encryption, pfd, &loopro))) { -+ opt_encryption, opt_phash, pfd, &loopro, keysz))) { + + if ((res = set_loop(*loopdev, *loopfile, offset, sizelimit, +- opt_encryption, pfd, &loop_opts))) { ++ opt_encryption, opt_phash, pfd, &loop_opts, keysz))) { if (res == 2) { /* loop dev has been grabbed by some other process, try again, if not given explicitly */ -@@ -1681,6 +1688,7 @@ static struct option longopts[] = { +@@ -1650,6 +1657,7 @@ static struct option longopts[] = { { "options", 1, 0, 'o' }, { "test-opts", 1, 0, 'O' }, { "pass-fd", 1, 0, 'p' }, + { "keybits", 1, 0, 'k' }, { "types", 1, 0, 't' }, { "bind", 0, 0, 128 }, - { "replace", 0, 0, 129 }, -@@ -1836,6 +1844,7 @@ main(int argc, char *argv[]) { + { "move", 0, 0, 133 }, +@@ -1811,6 +1819,7 @@ main(int argc, char *argv[]) { char *options = NULL, *test_opts = NULL, *node; const char *spec = NULL; char *label = NULL; @@ -493,7 +479,7 @@ Index: util-linux-ng-2.13.1/mount/mount.c char *uuid = NULL; char *types = NULL; char *p; -@@ -1866,7 +1875,7 @@ main(int argc, char *argv[]) { +@@ -1841,7 +1850,7 @@ main(int argc, char *argv[]) { initproctitle(argc, argv); #endif @@ -502,7 +488,7 @@ Index: util-linux-ng-2.13.1/mount/mount.c longopts, NULL)) != -1) { switch (c) { case 'a': /* mount everything in fstab */ -@@ -1884,6 +1893,9 @@ main(int argc, char *argv[]) { +@@ -1859,6 +1868,9 @@ main(int argc, char *argv[]) { case 'i': external_allowed = 0; break; @@ -512,9 +498,9 @@ Index: util-linux-ng-2.13.1/mount/mount.c case 'l': list_with_volumelabel = 1; break; -@@ -2030,6 +2042,9 @@ main(int argc, char *argv[]) { - create_mtab (); - } +@@ -1989,6 +2001,9 @@ main(int argc, char *argv[]) { + + atexit(unlock_mtab); + if (keysize && sscanf(keysize,"%d",&keysz) != 1) + die (EX_USAGE, _("mount: argument to --keybits or -k must be a number")); @@ -522,10 +508,10 @@ Index: util-linux-ng-2.13.1/mount/mount.c switch (argc+specseen) { case 0: /* mount -a */ -Index: util-linux-ng-2.13.1/mount/rmd160.c +Index: util-linux-ng-2.14/mount/rmd160.c =================================================================== ---- /dev/null -+++ util-linux-ng-2.13.1/mount/rmd160.c +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/mount/rmd160.c 2008-06-25 11:33:15.000000000 +0200 @@ -0,0 +1,532 @@ +/* rmd160.c - RIPE-MD160 + * Copyright (C) 1998 Free Software Foundation, Inc. @@ -1059,10 +1045,10 @@ Index: util-linux-ng-2.13.1/mount/rmd160.c + rmd160_final( &hd ); + memcpy( outbuf, hd.buf, 20 ); +} -Index: util-linux-ng-2.13.1/mount/rmd160.h +Index: util-linux-ng-2.14/mount/rmd160.h =================================================================== ---- /dev/null -+++ util-linux-ng-2.13.1/mount/rmd160.h +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/mount/rmd160.h 2008-06-25 11:33:15.000000000 +0200 @@ -0,0 +1,11 @@ +#ifndef RMD160_H +#define RMD160_H @@ -1075,10 +1061,10 @@ Index: util-linux-ng-2.13.1/mount/rmd160.h +#endif /*RMD160_H*/ + + -Index: util-linux-ng-2.13.1/mount/sha512.c +Index: util-linux-ng-2.14/mount/sha512.c =================================================================== ---- /dev/null -+++ util-linux-ng-2.13.1/mount/sha512.c +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/mount/sha512.c 2008-06-25 11:33:15.000000000 +0200 @@ -0,0 +1,432 @@ +/* + * sha512.c @@ -1199,7 +1185,7 @@ Index: util-linux-ng-2.13.1/mount/sha512.c + (((u_int32_t)(datap[2]))<<8 ) | ((u_int32_t)(datap[3])); + datap += 4; + } while(++j < 16); -+ ++ + /* initialize variables a...h */ + a = ctx->sha_H[0]; + b = ctx->sha_H[1]; @@ -1286,7 +1272,7 @@ Index: util-linux-ng-2.13.1/mount/sha512.c + ctx->sha_out[62] = bitLength >> 8; + ctx->sha_out[63] = bitLength; + sha256_transform(ctx, &ctx->sha_out[0]); -+ ++ + /* return results in ctx->sha_out[0...31] */ + datap = &ctx->sha_out[0]; + j = 0; @@ -1356,7 +1342,7 @@ Index: util-linux-ng-2.13.1/mount/sha512.c + (((u_int64_t)(datap[6]))<<8 ) | ((u_int64_t)(datap[7])); + datap += 8; + } while(++j < 16); -+ ++ + /* initialize variables a...h */ + a = ctx->sha_H[0]; + b = ctx->sha_H[1]; @@ -1453,7 +1439,7 @@ Index: util-linux-ng-2.13.1/mount/sha512.c + ctx->sha_out[126] = bitLength >> 8; + ctx->sha_out[127] = bitLength; + sha512_transform(ctx, &ctx->sha_out[0]); -+ ++ + /* return results in ctx->sha_out[0...63] */ + datap = &ctx->sha_out[0]; + j = 0; @@ -1512,10 +1498,10 @@ Index: util-linux-ng-2.13.1/mount/sha512.c + memset(&ctx, 0, sizeof(ctx)); +} +#endif -Index: util-linux-ng-2.13.1/mount/sha512.h +Index: util-linux-ng-2.14/mount/sha512.h =================================================================== ---- /dev/null -+++ util-linux-ng-2.13.1/mount/sha512.h +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ util-linux-ng-2.14/mount/sha512.h 2008-06-25 11:33:15.000000000 +0200 @@ -0,0 +1,45 @@ +/* + * sha512.h @@ -1562,16 +1548,16 @@ Index: util-linux-ng-2.13.1/mount/sha512.h +/* no sha384_write(), use sha512_write() */ +/* no sha384_final(), use sha512_final(), result in ctx->sha_out[0...47] */ +extern void sha384_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t); -Index: util-linux-ng-2.13.1/mount/lomount.h +Index: util-linux-ng-2.14/mount/lomount.h =================================================================== ---- util-linux-ng-2.13.1.orig/mount/lomount.h -+++ util-linux-ng-2.13.1/mount/lomount.h -@@ -1,6 +1,6 @@ - extern int verbose; --extern int set_loop(const char *, const char *, unsigned long long, +--- util-linux-ng-2.14.orig/mount/lomount.h 2008-05-29 01:01:02.000000000 +0200 ++++ util-linux-ng-2.14/mount/lomount.h 2008-06-25 11:33:15.000000000 +0200 +@@ -1,5 +1,6 @@ +-extern int set_loop(const char *, const char *, unsigned long long, unsigned long long, - const char *, int, int *); -+extern int set_loop(const char *device, const char *file, unsigned long long offset, -+ const char *encryption, const char* phash, int pfd, int *loopro, int keysz); ++extern int set_loop(const char * device, const char * file, unsigned long long offset, ++ unsigned long long, const char *encryption, const char *phash, ++ int pfd, int *options, int keysz); extern int del_loop(const char *); extern int is_loop_device(const char *); extern char * find_unused_loop_device(void); diff --git a/util-linux-mount_opt_nofail.patch b/util-linux-mount_opt_nofail.patch deleted file mode 100644 index a326a42..0000000 --- a/util-linux-mount_opt_nofail.patch +++ /dev/null @@ -1,61 +0,0 @@ -Do not fail on ENOENT - -Introduces a new mount option "nofail" which prevents mount -to fail if the device does not exist. - -Signed-off-by: Matthias Koenig - -Index: util-linux-ng-2.13-rc1/mount/mount.8 -=================================================================== ---- util-linux-ng-2.13-rc1.orig/mount/mount.8 -+++ util-linux-ng-2.13-rc1/mount/mount.8 -@@ -625,6 +625,9 @@ access on the news spool to speed up new - .B nodiratime - Do not update directory inode access times on this filesystem. - .TP -+.B nofail -+Do not report errors for this device if it does not exist. -+.TP - .B relatime - Update inode access times relative to modify or change time. Access - time is only updated if the previous access time was earlier than the -Index: util-linux-ng-2.13-rc1/mount/mount.c -=================================================================== ---- util-linux-ng-2.13-rc1.orig/mount/mount.c -+++ util-linux-ng-2.13-rc1/mount/mount.c -@@ -182,9 +182,12 @@ static const struct opt_map opt_map[] = - { "norelatime", 0, 1, MS_RELATIME }, /* Update access time without regard - to mtime/ctime */ - #endif -+ { "nofail", 0, 0, MS_COMMENT}, /* Do not fail if ENOENT on dev */ - { NULL, 0, 0, 0 } - }; - -+static int opt_nofail = 0; -+ - static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption, - *opt_speed, *opt_comment, *opt_uhelper; - -@@ -389,6 +392,8 @@ parse_opt(char *opt, int *mask, char **e - verbose = 0; - } - #endif -+ if (streq(opt, "nofail")) -+ opt_nofail = 1; - return; - } - -@@ -1150,9 +1155,11 @@ try_mount_one (const char *spec0, const - else if (stat (node, &statbuf)) - error (_("mount: mount point %s is a symbolic link to nowhere"), - node); -- else if (stat (spec, &statbuf)) -+ else if (stat (spec, &statbuf)) { -+ if (opt_nofail) -+ goto out; - error (_("mount: special device %s does not exist"), spec); -- else { -+ } else { - errno = mnt_err; - perror("mount"); - } diff --git a/util-linux-ng-2.13-swapon-swsuspend.patch b/util-linux-ng-2.13-swapon-swsuspend.patch deleted file mode 100644 index c11b296..0000000 --- a/util-linux-ng-2.13-swapon-swsuspend.patch +++ /dev/null @@ -1,112 +0,0 @@ -From db6041b3a569d78f5716baa5a134a3a857014337 Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Wed, 30 May 2007 13:22:51 +0200 -Subject: [PATCH] mount: automatically reinitialize swap with old swsuspend data - -We have to reinitialize swap area with old (=useless) software suspend -data. The problem is that if we don't do it, then we get data -corruption the next time with suspended on. - -Signed-off-by: Karel Zak ---- - mount/swapon.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 files changed, 63 insertions(+), 0 deletions(-) - -diff --git a/mount/swapon.c b/mount/swapon.c -index ed91afc..3f9b442 100644 ---- a/mount/swapon.c -+++ b/mount/swapon.c -@@ -10,6 +10,9 @@ - #include - #include - #include -+#include -+#include -+#include - #include "xmalloc.h" - #include "swap_constants.h" - #include "nls.h" -@@ -17,6 +20,8 @@ - #include "realpath.h" - #include "mount_paths.h" - -+#define PATH_MKSWAP "/sbin/mkswap" -+ - #ifdef HAVE_SYS_SWAP_H - # include - #endif -@@ -158,6 +163,52 @@ display_summary(void) - } - - static int -+swap_is_swsuspend(const char *device) { -+ const char *type = fsprobe_get_fstype_by_devname(device); -+ -+ return (type && strcmp(type, "swsuspend") == 0) ? 1 : 0; -+} -+ -+/* calls mkswap */ -+static int -+swap_reinitialize(const char *device) { -+ const char *label = fsprobe_get_label_by_devname(device); -+ pid_t pid; -+ int status, ret; -+ -+ switch((pid=fork())) { -+ case -1: /* fork error */ -+ fprintf(stderr, _("%s: cannot fork: %s\n"), -+ progname, strerror(errno)); -+ return -1; -+ -+ case 0: /* child */ -+ if (label && *label) -+ execl(PATH_MKSWAP, PATH_MKSWAP, "-L", label, device, NULL); -+ else -+ execl(PATH_MKSWAP, PATH_MKSWAP, device, NULL); -+ exit(1); /* error */ -+ -+ default: /* parent */ -+ do { -+ if ((ret = waitpid(pid, &status, 0)) < 0 -+ && errno == EINTR) -+ continue; -+ else if (ret < 0) { -+ fprintf(stderr, _("%s: waitpid: %s\n"), -+ progname, strerror(errno)); -+ return -1; -+ } -+ } while (0); -+ -+ /* mkswap returns: 0=suss, 1=error */ -+ if (WIFEXITED(status) && WEXITSTATUS(status)==0) -+ return 0; /* ok */ -+ } -+ return -1; /* error */ -+} -+ -+static int - do_swapon(const char *orig_special, int prio, int canonic) { - int status; - struct stat st; -@@ -179,6 +230,18 @@ do_swapon(const char *orig_special, int prio, int canonic) { - return -1; - } - -+ /* We have to reinitialize swap with old (=useless) software suspend -+ * data. The problem is that if we don't do it, then we get data -+ * corruption the next time with suspended on. -+ */ -+ if (swap_is_swsuspend(special)) { -+ fprintf(stdout, _("%s: %s: software suspend data detected. " -+ "Reinitializing the swap.\n"), -+ progname, special); -+ if (swap_reinitialize(special) < 0) -+ return -1; -+ } -+ - /* people generally dislike this warning - now it is printed - only when `verbose' is set */ - if (verbose) { --- -1.5.2.2 - diff --git a/util-linux-ng-2.13.1.tar.bz2 b/util-linux-ng-2.13.1.tar.bz2 deleted file mode 100644 index 2f38751..0000000 --- a/util-linux-ng-2.13.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e67d86683adef0855220b6f5a4b7ca2c51a15faa142e2ecd69925ede76854a4d -size 2854716 diff --git a/util-linux-ng-2.14.tar.bz2 b/util-linux-ng-2.14.tar.bz2 new file mode 100644 index 0000000..04ee073 --- /dev/null +++ b/util-linux-ng-2.14.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7736d8d7d3b39654e350416585b3e00af9f55670cce8b3dddd2c2494cbaae81c +size 2868987 diff --git a/util-linux.changes b/util-linux.changes index 92b2680..a4657f0 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,36 @@ +------------------------------------------------------------------- +Wed Jun 25 14:26:49 CEST 2008 - mkoenig@suse.de + +- update to version 2.14 + most important changes: + * new command ldattach + mount: + * support auto-destruction of loop devices + losetup: + * new option -j + * supports unlimited number of loop devices + * new option --sizelimit to set data end + * option -s (short form of --show) now deprecated + mkswap: + * new option -U to set UUID explicitly + fdisk: + * calculate partition size in 2^N [bnc#381270] + hwclock: + * new option --adjfile to override default /etc/adjtime +- readd scriptreplay, implemented now in C +- add retry for mount if ENOMEDIUM is returned [bnc#390204] +- ignore ENXIO in del_loop, because they might have been + auto-destructed +- removed patches: + util-linux-2.13.1-canonicalize_loopfile_name.patch + util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch + util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch + util-linux-2.13.1-mount_getfs_fix.patch + util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch + util-linux-2.13-fdisk_cfdisk_ncursesw.patch + util-linux-mount_opt_nofail.patch + util-linux-ng-2.13-swapon-swsuspend.patch + ------------------------------------------------------------------- Thu Apr 3 17:11:53 CEST 2008 - mkoenig@suse.de diff --git a/util-linux.spec b/util-linux.spec index 063870d..cec6f2d 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -1,5 +1,5 @@ # -# spec file for package util-linux (Version 2.13.1) +# spec file for package util-linux (Version 2.14) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -21,8 +21,8 @@ PreReq: %install_info_prereq permissions License: BSD 3-Clause; GPL v2 or later Group: System/Base AutoReqProv: on -Version: 2.13.1 -Release: 19 +Version: 2.14 +Release: 1 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 @@ -32,6 +32,8 @@ Source3: nologin.8 Source4: raw.init Source5: etc.raw Source6: etc_filesystems +Source7: v2.14-ChangeLog +Source8: v2.14-ReleaseNotes %define time_ver 1.7 %define which_ver 2.16 %define adjtimex_ver 1.20 @@ -52,26 +54,16 @@ Source30: README.largedisk ## # add hostid Patch1: util-linux-2.12-misc_utils_hostid.patch -# 104405 - mount -a doesn't work with hotpluggable devices -Patch2: util-linux-mount_opt_nofail.patch # 160822 - fix for 153657 -Patch3: util-linux-2.12r-fdisk_cyl.patch +Patch2: util-linux-2.12r-fdisk_cyl.patch # 241372 - remove legacy warnings from fdisk -Patch4: util-linux-2.12r-fdisk_remove_bogus_warnings.patch -# 304861 - support password hashing and key length -Patch6: util-linux-2.13-fdisk_cfdisk_ncursesw.patch +Patch3: util-linux-2.12r-fdisk_remove_bogus_warnings.patch # 338419 -Patch7: util-linux-2.13-hwclock_rtc_wait_busy_tempfix.patch -# in upstream git, but not yet released -Patch8: util-linux-2.13.1-canonicalize_loopfile_name.patch -Patch9: util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch -Patch10: util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch -Patch11: util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch -Patch12: util-linux-2.13.1-mount_getfs_fix.patch -# 254437 - swapon should automatically reset the suspend signature -Patch13: util-linux-ng-2.13-swapon-swsuspend.patch +Patch4: util-linux-2.13-hwclock_rtc_wait_busy_tempfix.patch # -Patch14: util-linux-2.13.1-fdisk_cfdisk_yesno.patch +Patch5: util-linux-2.13.1-fdisk_cfdisk_yesno.patch +Patch6: util-linux-2.14-mount_ignore_ENXIO_in_del_loop.patch +Patch7: util-linux-2.14-mount_retry_on_nomedium.patch # crypto patch Patch20: util-linux-mount_losetup_crypto.patch ## @@ -113,17 +105,11 @@ Authors: %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 %patch6 -p1 %patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 %patch20 -p1 -#%patch38 -p1 +cp %{SOURCE7} %{SOURCE8} . # cd adjtimex-* %patch50 -p1 @@ -185,9 +171,14 @@ make setctsid CFLAGS="$RPM_OPT_FLAGS" %ifarch s390 s390x CFLAGS=-DCONFIG_SMP %endif +# architecture dependent builds +BUILD_ENABLE= +%ifarch %ix86 x86_64 +BUILD_ENABLE="--enable-rdev" +%endif # Use autogen, when building from git tree -#autoreconf -fi -./autogen.sh +autoreconf -fi +#./autogen.sh ./configure --mandir=%{_mandir} \ --datadir=%{_datadir} \ --with-fsprobe=volume_id \ @@ -196,9 +187,9 @@ CFLAGS=-DCONFIG_SMP --enable-mesg \ --enable-partx \ --enable-raw \ - --enable-rdev \ --enable-write \ --disable-use-tty-group \ + $BUILD_ENABLE \ CFLAGS="$CFLAGS $RPM_OPT_FLAGS" make gcc $RPM_OPT_FLAGS -o nologin nologin.c @@ -271,9 +262,7 @@ rm -f $RPM_BUILD_ROOT/usr/bin/pg rm -f $RPM_BUILD_ROOT/usr/share/man/man1/pg.1* # Do not package these files to get rid of the perl dependency rm -f $RPM_BUILD_ROOT/usr/bin/chkdupexe -rm -f $RPM_BUILD_ROOT/usr/bin/scriptreplay rm -f $RPM_BUILD_ROOT/usr/share/man/man1/chkdupexe.1 -rm -f $RPM_BUILD_ROOT/usr/share/man/man1/scriptreplay.1 # For now, do not package setarch and related symlinks rm -f $RPM_BUILD_ROOT/usr/bin/setarch rm -f $RPM_BUILD_ROOT/usr/bin/linux32 @@ -301,7 +290,7 @@ rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/parisc{,32,64}.8 %ifarch s390 s390x rm -f $RPM_BUILD_ROOT/etc/fdprm rm -f $RPM_BUILD_ROOT/usr/bin/cytune -rm -f $RPM_BUILD_ROOT/usr/bin/fdformat +rm -f $RPM_BUILD_ROOT/usr/sbin/fdformat rm -f $RPM_BUILD_ROOT/sbin/hwclock rm -f $RPM_BUILD_ROOT/usr/sbin/klogconsole rm -f $RPM_BUILD_ROOT/usr/bin/setterm @@ -353,6 +342,8 @@ fi %files # Common files for all archs %defattr(-,root,root) +%doc v2.14-ChangeLog +%doc v2.14-ReleaseNotes %doc login-utils/README.getty %doc login-utils/README.modems-with-agetty %doc login-utils/README.poeigl @@ -419,6 +410,7 @@ fi /usr/bin/rev /usr/bin/script #/usr/bin/setarch +/usr/bin/scriptreplay /usr/bin/setsid /usr/bin/ul /usr/bin/tailf @@ -427,6 +419,7 @@ fi /usr/bin/which /usr/sbin/addpart /usr/sbin/delpart +/usr/sbin/ldattach /usr/sbin/freeramdisk /usr/sbin/partx /usr/sbin/rtcwake @@ -471,6 +464,7 @@ fi %{_mandir}/man1/renice.1.gz %{_mandir}/man1/setsid.1.gz %{_mandir}/man1/script.1.gz +%{_mandir}/man1/scriptreplay.1.gz %{_mandir}/man1/setterm.1.gz %{_mandir}/man1/tailf.1.gz %{_mandir}/man1/taskset.1.gz @@ -491,6 +485,7 @@ fi %{_mandir}/man8/mkfs.minix.8.gz %{_mandir}/man8/fsck.minix.8.gz %{_mandir}/man8/isosize.8.gz +%{_mandir}/man8/ldattach.8.gz %{_mandir}/man8/losetup.8.gz %{_mandir}/man8/mkfs.8.gz %{_mandir}/man8/mkswap.8.gz @@ -541,7 +536,7 @@ fi %ifnarch s390 s390x #%config(noreplace) /etc/fdprm /usr/bin/cytune -/usr/bin/fdformat +/usr/sbin/fdformat /sbin/hwclock /usr/sbin/klogconsole /usr/bin/setterm @@ -574,6 +569,36 @@ fi #%endif %changelog +* Wed Jun 25 2008 mkoenig@suse.de +- update to version 2.14 + most important changes: + * new command ldattach + mount: + * support auto-destruction of loop devices + losetup: + * new option -j + * supports unlimited number of loop devices + * new option --sizelimit to set data end + * option -s (short form of --show) now deprecated + mkswap: + * new option -U to set UUID explicitly + fdisk: + * calculate partition size in 2^N [bnc#381270] + hwclock: + * new option --adjfile to override default /etc/adjtime +- readd scriptreplay, implemented now in C +- add retry for mount if ENOMEDIUM is returned [bnc#390204] +- ignore ENXIO in del_loop, because they might have been + auto-destructed +- removed patches: + util-linux-2.13.1-canonicalize_loopfile_name.patch + util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch + util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch + util-linux-2.13.1-mount_getfs_fix.patch + util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch + util-linux-2.13-fdisk_cfdisk_ncursesw.patch + util-linux-mount_opt_nofail.patch + util-linux-ng-2.13-swapon-swsuspend.patch * Thu Apr 03 2008 mkoenig@suse.de - cfdisk: accept english answer [bnc#369043] - use upstream getfs fix diff --git a/v2.14-ChangeLog b/v2.14-ChangeLog new file mode 100644 index 0000000..34e292e --- /dev/null +++ b/v2.14-ChangeLog @@ -0,0 +1,105 @@ +Changes between v2.14-rc3 and v2.14 +----------------------------------- + +commit fba4e21fa000748112d39c8e9fc266f1cbe9a08f +Author: Karel Zak +Date: Mon Jun 9 13:58:54 2008 +0200 + + build-sys: release++ (v2.14) + + Signed-off-by: Karel Zak + + NEWS | 4 ++++ + configure.ac | 2 +- + docs/v2.14-ReleaseNotes | 2 +- + 3 files changed, 6 insertions(+), 2 deletions(-) + +commit 1d66f79c80e6c655dbd1633f9e7d4efd1562bc20 +Author: Karel Zak +Date: Mon Jun 9 12:53:27 2008 +0200 + + docs: update v2.14 ReleaseNotes + + Signed-off-by: Karel Zak + + docs/v2.14-ReleaseNotes | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit d5b64541978b45af5eaa60050d2b1a5f3a5da243 +Author: Karel Zak +Date: Mon Jun 9 12:20:40 2008 +0200 + + docs: update AUTHORS file + + Signed-off-by: Karel Zak + + AUTHORS | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +commit 754ba29e2b9d6569cf502a3c6cd0a59c6513e25a +Author: Karel Zak +Date: Mon Jun 9 12:18:26 2008 +0200 + + po: merge changes + + Signed-off-by: Karel Zak + + po/hu.po | 852 +++++++++++++++++++++++++++++++++++++++++++------------------- + 1 files changed, 597 insertions(+), 255 deletions(-) + +commit 568ea3a7f1516f86769230ccdb2682479be326e9 +Author: Gabor Kelemen +Date: Mon Jun 9 12:02:00 2008 +0200 + + po: update hu.po (from translationproject.org) + + po/hu.po | 1542 +++++++++++++++++++++++--------------------------------------- + 1 files changed, 559 insertions(+), 983 deletions(-) + +commit 0eab17b95d813c93c8e7b5e7f5943f0940420f00 +Author: Volker Schatz +Date: Tue Jun 3 23:52:04 2008 +0200 + + ddate: 11th, 12th and 13th of month + + the Discordian date utility ddate gives the 11th, 12th and 13th of the month as + the "11st", "12nd" and "13rd". Unless this is a religious thing, please apply + the patch below. + + Signed-off-by: Volker Schatz + + misc-utils/ddate.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 47bf8ef7f1d084befe2efcdd37a5f7c7c9d9da70 +Author: Paulius Zaleckas +Date: Mon Jun 9 11:35:59 2008 +0200 + + rtcwake: fix the default mode to "standby" + + Writing "suspend" to /sys/power/state does nothing. + Even "man rtcwake" says that default should be "standby" :) + + Signed-off-by: Paulius Zaleckas + Signed-off-by: Karel Zak + + sys-utils/rtcwake.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit eaf58a8697926711efec9e494e810d3f6bfd3938 +Author: Christophe Blaess +Date: Mon Jun 9 11:32:19 2008 +0200 + + mount: fix a small typo in mount.8 + + While working on french translation of the Linux Man Pages, I've found a + small typo in mount.8. + + Only one wrong letter : the option "osyncis_o_sync" for XFS filesystem + is erroneously replaced by "osyncis_d_sync" (the previous option). + + Signed-off-by: Christophe Blaess + Signed-off-by: Karel Zak + + mount/mount.8 | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/v2.14-ReleaseNotes b/v2.14-ReleaseNotes new file mode 100644 index 0000000..739bc40 --- /dev/null +++ b/v2.14-ReleaseNotes @@ -0,0 +1,418 @@ + +Util-linux-ng 2.14 Release Notes (09-Jun-2008) +============================================== + +Release highlights +------------------ + + mount(8) supports new "nofail" mount option. + + mount(8) supports auto-destruction of loop devices. + + losetup(8) supports new command line option "-j" to show status of all + loop devices associated with given file. + + losetup(8) supports unlimited number of loop devices. + + losetup(8) supports new command line option "--sizelimit" to set data end. + + ldattach(8) command has been added to util-linux-ng. The ldattach + daemon opens the specified device file and attaches the line discipline + to it for processing of the sent and/or received data. + + setterm(8) supports new command line option "-blank [force|poke]" for + TIOCL_{BLANKED,BLANK}SCREEN. + + tailf(8) has been reimplemented to use inotify. + + tailf(8) supports new command line option "-n" to specifying output lines. + + mkswap(8) supports new command line option "-U" to set UUID explicitly. + + fdisk(8) has been fixed to calculate partition size in 2^N. + + cal(8) supports highlighting an arbitrary date. + + agetty(8) makes username-in-uppercase feature optional (off by default). + Users who use uppercase-only terminals need to use the option "-U" now. + + losetup(8), mount(8), umount(8), fdisk(8) and sfdisk(8) support static + linking when compiled with --enable-static-programs. + + hwclock(8) supports new command line option "adjfile" to override + the default /etc/adjtime. + + scriptreplay(1) command has been re-written from Perl to C. + + +Deprecated +---------- + + The losetup(8) '-s' option (introduced by util-linux-ng-2.13) is deprecated + now. This short form of the option '--show' could be in collision with + Loop-AES losetup implementation where the same option is used for the loop + sizelimit. + + +Fixed security issues +--------------------- + + CVE-2008-1926 - audit log injection via login + + The problem was originally reported for OpenSSH few months + ago (CVE-2007-3102). The login(1) is affected by the same + bug when built with the option "--with-audit". + + +Stable maintenance releases between v2.13 and v2.14 +--------------------------------------------------- + +util-linux-ng 2.13.1.1 [22-Apr-2008] + + * ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.13/v2.13.1.1-ReleaseNotes + ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.13/v2.13.1.1-ChangeLog + +util-linux-ng 2.13.1 [16-Jan-2008] + + * ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.13/v2.13.1-ReleaseNotes + ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.13/v2.13.1-ChangeLog + + +ChangeLog between v2.13 and v2.14 +--------------------------------- + + For more details see ChangeLog files at: + ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.14/ + +agetty: + - cleanup MAXHOSTNAMELEN [Karel Zak] + - make username-in-uppercase feature optional (off by default.) [Hamish Coleman] + - non-linux support (use pathnames.h) [Karel Zak] + - replace termio with termios interface [Samuel Thibault] + - ungettextize several debugging messages. [Benno Schulenberg] +blockdev: + - add --getsz to blockdev.8 [Karel Zak] + - add missing description about option --report in manpage [Li Zefan] + - fix opened file leaving unclosed [lizf] + - use lib/blkdev.c, fix --report [Karel Zak] +build-sys: + - add --enable-static-programs [Stepan Kasal, Karel Zak] + - add AC_CANONICAL_HOST [Miklos Szeredi] + - add VARSUFFIX to UTIL_CHECK_LIB [Karel Zak] + - add err.h check [Karel Zak] + - add support ionice for Super-H architecture [Karel Zak] + - add v2.14 to NEWS [Karel Zak] + - autogen.sh reports versions of autotools now [Karel Zak] + - build arch(1) during distcheck [Stepan Kasal] + - cleanup "x$foo" usage [Karel Zak] + - cleanup disk-utils/Makefile.am (use $utils_common) [Karel Zak] + - cleanup usage of linux/major.h [Samuel Thibault] + - disable syscall fallbacks for non-linux systems [Karel Zak] + - do not add -luuid to BLKID_LIBS [Stepan Kasal] + - fix missing deps for swapon [Matthias Koenig] + - ignore a bunch of generated files, mostly binaries [James Youngman] + - nls/locale handling in util-linux-ng general [Mike Frysinger] + - non-linux support [Samuel Thibault] + - release++ [Karel Zak] + - remove errs.h [Karel Zak] + - remove files that are no longer delivered from git [LaMont Jones] + - remove hardcoded _GNU_SOURCE [Karel Zak] + - remove unnecessary check-local target from login-utils/ [Karel Zak] + - set AC_PREREQ to 2.60, increment version to 2.14 [Karel Zak] + - simplify code around RDEV_LINKS and SETARCH_LINKS [Stepan Kasal] + - unify method for checking system calls and fallback handling [Mike Frysinger, Stepan Kasal] + - update .gitignore files [Karel Zak] + - use dist_man_MANS instead of man_MANS [Stepan Kasal] + - use ncursesw (wide version) when possibe [Karel Zak, Mike Frysinger] + - use pkg-config to find the libs for static build [Stepan Kasal] + - use portable $(VAR =) instead of gmake-specific $(addsuffix) [Stepan Kasal] +cal: + - add description about option -V to manpage [Li Zefan] + - add support for highlighting an arbitrary date [Pádraig Brady] + - avoid -Wformat warnings [Jim Meyering] + - fix weekday alignment for certain locales [Pádraig Brady] + - replace errs.h with libc err.h [Karel Zak] + - use HAVE_LIB{NCURSES,NCURSESW} instead HAVE_NCURSES [Karel Zak] +cfdisk: + - define portable {DEFAULT,ALTERNATE}_DEVICE [Samuel Thibault] + - display cylinders beyond 1024 [Peter Breitenlohner] + - slightly increase the size of menu buttons [Benno Schulenberg] + - translate partition-type names when they are printed. [Benno Schulenberg] +chfn: + - add pam_end() call and cleanup PAM code [Karel Zak] + - fix compiler warnings in selinux stuff [Karel Zak] +chfn, chsh, login: + - collapsing three similar messages into a single one [Benno Schulenberg] +chsh: + - should use pam_end function to terminate the PAM transaction [Yu Zhiguo, Karel Zak] +column: + - replace errs.h with libc err.h [Karel Zak] +ddate: + - 11th, 12th and 13th of month [Volker Schatz] +docs: + - add a note about minix v3 to TODO file [Karel Zak] + - add info about .bugfix releases and branches [Karel Zak] + - add note about incorrect tag 2.13.1 [Karel Zak] + - add note about losetup --sizelimit to ReleaseNotes [Karel Zak] + - add note about static linking [Karel Zak] + - add v2.14 ReleaseNotes [Karel Zak] + - cleanup DEPRECATED file [Karel Zak] + - cleanup README.devel, add note about coding style and Signed-off-by [Karel Zak] + - fix ChangeLog URL [Pascal Terjan] + - fix stable branche name in README.devel [Karel Zak] + - mark vipw(1) is deprecated in favor of vipw from shadow-utils [Karel Zak] + - refresh TODO list [Karel Zak] + - remove date from ReleasNotes [Karel Zak] + - tweak a few messages for clarity [Benno Schulenberg] + - update AUTHORS file [Karel Zak] + - update TODO file [Karel Zak] + - update v2.14 ReleaseNotes [Karel Zak] + - we already rewrote the scriptreplay script; remove that TODO entry [James Youngman] +elvtune: + - use get_linux_version() [Karel Zak] +fdformat: + - install to /usr/sbin instead to /usr/bin [Karel Zak] +fdisk: + - better fallback for get_random_id() [H. Peter Anvin] + - calculate +size{K,M,G} in 2^N [Karel Zak] + - cleanup BLK* ioctls usage [Karel Zak] + - doesn't recognize the VMware ESX partitions [Karel Zak] + - doing useless ioctl when editing an image [Pascal Terjan] + - fix building for AVR32 and CRIS [Imre Kaloz] + - fix typo [Karel Zak] + - message tweak [Karel Zak] + - non-linux support (MAXPATHLEN) [Karel Zak] + - non-linux support (use standard uintxy_t instead __uxy) [Samuel Thibault] + - use more readable "GPT" name rather than "EFI GPT" [Robert Millan] + - use swab macros from bitops.h [Karel Zak] +flock: + - typo in man page [A. Costa] +fsck.cramfs: + - clean up gcc warnings [Randy Dunlap] +fsck.minix: + - correct the error message given when we can't open the device [James Youngman] + - reset the terminal state if we are killed by a fatal signal [James Youngman] +getopt: + - fix path to examples in getopt.1 [Karel Zak] + - install example scripts as SCRIPTS, not DATA [Peter Breitenlohner] +hwclock: + - add --adjfile=path option [Karel Zak] + - check for ENODEV [David Woodhouse] + - do not create a zero adjfile [Alain Guibert] + - fix --rtc option [Matthias Koenig, Karel Zak] +include: + - provides everything [Samuel Thibault] + - add bitops.h with swab{16,32,64} macros [Karel Zak] + - add mount paths to pathnames.h [Karel Zak] + - cleanup pathnames.h [Karel Zak] +ionice: + - add a note about permissions to ionice.1 [Karel Zak] + - update man page to reflect IDLE class change in 2.6.25 [Karel Zak] +ipcs: + - add information about POSIX compatibility to ipcs.1 [Karel Zak] +kill: + - man page is missing a description of "kill -0" [Karel Zak] +ldattach: + - add NLS support [Karel Zak] + - new command [Tilman Schmidt] + - use glibc termios [Karel Zak] +lib: + - add blkdev.{c,h} [Stefan Krah, Karel Zak] + - add linux_version.{c,h} [Stefan Krah] +login: + - audit log injection attack via login [Steve Grubb] + - fix a small memory leak and remove unnecessary zeroing [Karel Zak] + - login segfaults on EOF (rh#298461) [Karel Zak] + - replace termio with termios interface [Samuel Thibault] + - rewrite is_local() to remove limits on line length [James Youngman] +login-utils: + - cleanup strlen() and fgets() usage [James Youngman] +losetup: + - add --associated option [Karel Zak] + - add --sizelimit option [Shachar Shemesh] + - canonicalize loopfile name [Karel Zak, Matthias Koenig] + - clean up gcc warnings [Randy Dunlap] + - fix errno usage [Karel Zak] + - fix typo in losetup.8 [Karel Zak] + - mark the option -s as deprecated [Karel Zak] + - remove duplicate xstrdup() and error() [Karel Zak] + - split help message into two smaller parts [Benno Schulenberg] + - support unlimited number of loops [Karel Zak] + - use standard uintxy_t types (struct loop_info64) [Samuel Thibault] +mesg: + - replace errs.h with libc err.h [Karel Zak] +mkfs.cramfs: + - clean up gcc warnings [Randy Dunlap, Karel Zak] + - remove unused header file [lizf] + - switch on localization. [Benno Schulenberg] +mkfs.minix: + - add sectorsize check [Matthias Koenig] + - clean up gcc warnings [Karel Zak] + - clean up gcc warnings [Randy Dunlap] + - device size cleanup [Matthias Koenig] +mkswap: + - BLKGETSIZE cleanup [Karel Zak] + - cleanup kB vs. KiB usage in error messages [Karel Zak] + - fix compiler warnings [Karel Zak] + - linux_version() code consolidation [Karel Zak] + - possible to crash with SELinux relabeling support [KaiGai Kohei] + - set UUID for swap space (add -U option) [Martin Schulze] + - set errno=0 in write_all() [Karel Zak] + - when writing the signature page, handle EINTR returns [Karel Zak] +more: + - cleanup gcc warnings [Randy Dunlap] + - non-linux support [Samuel Thibault] + - replace CBAUD with cfgetispeed() [Samuel Thibault] + - use HAVE_WIDECHAR instead ENABLE_WIDECHAR [Karel Zak] +mount: + - "can't create lock file" message sometimes means failure, sometimes not [Mark McLoughlin] + - "nofail" mount option [Matthias Koenig, Karel Zak] + - -L|-U segfault when label or uuid doesn't exist [Karel Zak] + - add more details to the --version output [Karel Zak] + - add support for sizelimit= mount option (for loop mounts) [Shachar Shemesh] + - allow auto-destruction of loop devices [Bernardo Innocenti] + - chain of symlinks to fstab causes use of pointer after free [Norbert Buchmuller] + - clean up gcc warnings (mount_mntent.c) [Randy Dunlap] + - clean up global variables [Karel Zak] + - cleanup "none" fstype usage [Karel Zak] + - cleanup KERNEL_VERSION, remove my_dev_t.h [Karel Zak] + - cleanup canonicalize() usage [Karel Zak] + - cleanup error() and die() [Karel Zak] + - cleanup usage of _PATH_* [Karel Zak] + - doesn't drop privileges properly when calling helpers [Ludwig Nussel] + - don't call canonicalize(SPEC) for cifs, smbfs and nfs [Karel Zak] + - don't canonicalize LABEL= or UUID= spec [Karel Zak] + - drop the part always true from a while condition [Pascal Terjan] + - fix a small typo in mount.8 [Christophe Blaess] + - fix fd leak [Matthias Koenig] + - fix typo in mount.8 [Karel Zak] + - hint about helper program if device doesn't exist [Karel Zak] + - improve chmod & chown usage and clean up gcc warnings (fstab.c) [Karel Zak] + - improve error message when helper program not present [LaMont Jones] + - prevent loop mounting the same file twice [Karel Zak, Matthias Koenig] + - remount doesn't care about loop= [Karel Zak] + - remove MS_{REPLACE,AFTER,BEFORE,OVER} [Karel Zak] + - remove built-in support for background mounts [Karel Zak] + - remove redundant fflush [Karel Zak] + - remove set_proc_name() [Karel Zak] + - remove useless if-before-my_free, define my_free as a macro [Karel Zak] + - use MNTTYPE_SWAP (from mntent.h) [Karel Zak] + - use atexit() rather than (*at_die)() [Karel Zak] + - use blkdev_get_size() [Karel Zak] + - use canonicalize in getfs_by_devname [Karel Zak] +namei: + - add to identify FIFO (named pipe) and update manpage [Li Zefan] + - cleanup tailing white-spaces [Karel Zak] + - non-linux support (get_current_dir_name() and PATH_MAX) [Karel Zak, Samuel Thibault] +partx: + - fix compiler warnings [Karel Zak] + - use swab macros from bitops.h [Karel Zak] +pg: + - fix segfault on search [Rajeev V. Pillai] +po: + - add eu.po (from translationproject.org) [Mikel Olasagasti] + - add pl.po (from translationproject.org) [Andrzej Krzysztofowicz] + - fix typo in de.po [Karel Zak] + - merge changes [Karel Zak] + - update POTFILES.in [Karel Zak] + - update ca.po (from translationproject.org) [Josep Puigdemont] + - update cs.po (from translationproject.org) [Petr Pisar] + - update da.po (from translationproject.org) [Claus Hindsgaul] + - update de.po (from translationproject.org) [Michael Piefel] + - update es.po (from translationproject.org) [Santiago Vila Doncel] + - update et.po (from translationproject.org) [Meelis Roos] + - update fi.po (from translationproject.org) [Lauri Nurmi] + - update fr.po (from translationproject.org) [Michel Robitaille] + - update hu.po (from translationproject.org) [Gabor Kelemen] + - update id.po (from translationproject.org) [Arif E. Nugroho] + - update it.po (from translationproject.org) [Marco Colombo] + - update ja.po (from translationproject.org) [Daisuke Yamashita] + - update nl.po (from translationproject.org) [Benno Schulenberg] + - update po files [Karel Zak] + - update pt_BR.po (from translationproject.org) [Rodrigo Stulzer Lopes] + - update ru.po (from translationproject.org) [Pavel Maryanov] + - update sl.po (from translationproject.org) [Simon Mihevc] + - update sv.po (from translationproject.org) [Daniel Nylander] + - update tr.po (from translationproject.org) [Nilgün Belma Bugüner] + - update uk.po (from translationproject.org) [Maxim V. Dziumanenko] + - update vi.po (from translationproject.org) [Clytie Siddall] +rename: + - add description about option -V to manpage [Li Zefan] + - remove useless variable [Li Zefan] +renice: + - detect errors in arguments, add -v, -h and long options [LaMont Jones, Karel Zak] +rev: + - use warn() in errs.h [Li Zefan] +rtcwake: + - fix UTC time usage [David Brownell] + - fix the default mode to "standby" [Paulius Zaleckas] + - fix typo [Karel Zak] + - fix typo SATE -> STATE [Mike Frysinger] + - fix verbose message [Karel Zak] + - include libgen.h for basename prototype [Mike Frysinger] + - misc cleanups [David Brownell] +script: + - cleanup gcc warnings [Randy Dunlap] + - cleanup includes [Samuel Thibault] + - dies on SIGWINCH [Karel Zak] + - read returns a size_t [James Youngman] +scriptreplay: + - gettextize a forgotten messages [Karel Zak] + - rewrite in C [Karel Zak, James Youngman] +setarch: + - add fallback for linux/personality [Karel Zak] + - add long options to setarch and update manpage [Karel Zak, Li Zefan] + - add missing alpha subarchs [Oliver Falk] + - adding groff symlinks to setarch manual page [Arkadiusz Miskiewicz] + - fix compiler warning [LaMont Jones] + - generate groff links in a better way [Karel Zak] + - provide backwards compatibility [Dmitry V. Levin] + - tweak the help text, and gettextize a forgotten message [Benno Schulenberg] +setterm: + - add -blan [force|poke] options for TIOCL_{BLANKED,BLANK}SCREEN [Samuel Thibault, Karel Zak] + - dump by TIOCLINUX is deprecated since linux 1.1.92. [Karel Zak] + - opened file leaving unclosed [Karel Zak, lizf] + - remove unnecessaty ifndef TCGETS [Samuel Thibault] +sfdisk: + - allow partitioning drives of over 2^31 sectors. [Kunihiko IMAI] + - cleanup 83 gcc warnings [Randy Dunlap] + - opened files leaving unclosed [Karel Zak, Li Zefan] + - remove unnecessary linux/unistd.h [Samuel Thibault] + - use get_linux_version() [Karel Zak] +shutdown: + - use _PATH_MOUNTED instead of _PATH_MTAB [Stepan Kasal] +swapon: + - Reinitialize software suspend areas to avoid future corruption. [Kees Cook, Karel Zak] + - add sundries.h [Karel Zak] + - clean up gcc warnings [Randy Dunlap] + - cleanup usage output [Karel Zak] + - cleanup usage() [Karel Zak] + - fix swsuspend detection [Karel Zak] + - fix typo in usage() [Karel Zak] + - readjust the usage summaries [Benno Schulenberg] + - remove unnecessary myrealpath() call [Karel Zak] +sys-utils: + - correct setarch.8 manpage link creation [Frédéric Bothamy] +tailf: + - add option -n to specifying output lines [Li Zefan] + - clean up gcc warnings & fix use of errno [Karel Zak] + - inotify based reimplementation [Karel Zak] + - non-linux support [Samuel Thibault] + - opened file leaving unclosed [lizf] + - replace errs.h with libc err.h [Karel Zak] +tests: + - add "sort" to cramfs test [Karel Zak] + - add test for include/pathnames.h [Karel Zak] + - add ts-mount-noncanonical [Karel Zak] + - exactly define a time format in ls -l output [Karel Zak] + - fix blkid cache usage [Karel Zak] + - move test_bkdev to lib/ [Karel Zak] + - redirect libblkid cache to BLKID_FILE [Karel Zak] + - rename test_sysinfo, remove tailing white-spaces [Karel Zak] + - use losetup -s [Karel Zak] +umount: + - add hint about lsof & fuser [Karel Zak] + - don't print duplicate error messages [Karel Zak] + - use atexit() rather than (*at_die)() [Karel Zak] +wall: + - cleanup MAXHOSTNAMELEN [Karel Zak]