diff --git a/util-linux-2.17.1-mount_losetup_crypto.patch b/util-linux-2.17.1-mount_losetup_crypto.patch index a5790ad..c12e577 100644 --- a/util-linux-2.17.1-mount_losetup_crypto.patch +++ b/util-linux-2.17.1-mount_losetup_crypto.patch @@ -38,10 +38,10 @@ Signed-off-by: Ludwig Nussel create mode 100644 mount/sha512.c create mode 100644 mount/sha512.h -Index: util-linux-ng-2.18/mount/Makefile.am +Index: util-linux-2.19-rc1/mount/Makefile.am =================================================================== ---- util-linux-ng-2.18.orig/mount/Makefile.am -+++ util-linux-ng-2.18/mount/Makefile.am +--- util-linux-2.19-rc1.orig/mount/Makefile.am ++++ util-linux-2.19-rc1/mount/Makefile.am @@ -7,7 +7,7 @@ sbin_PROGRAMS = losetup swapon dist_man_MANS = fstab.5 mount.8 swapoff.8 swapon.8 umount.8 losetup.8 @@ -51,10 +51,10 @@ Index: util-linux-ng-2.18/mount/Makefile.am # generic header for mount and umount hdrs_mount = fstab.h mount_mntent.h mount_constants.h \ -Index: util-linux-ng-2.18/mount/lomount.c +Index: util-linux-2.19-rc1/mount/lomount.c =================================================================== ---- util-linux-ng-2.18.orig/mount/lomount.c -+++ util-linux-ng-2.18/mount/lomount.c +--- util-linux-2.19-rc1.orig/mount/lomount.c ++++ util-linux-2.19-rc1/mount/lomount.c @@ -23,6 +23,12 @@ #include "sundries.h" #include "xmalloc.h" @@ -68,7 +68,7 @@ Index: util-linux-ng-2.18/mount/lomount.c #ifdef LOOP_SET_FD -@@ -390,12 +396,22 @@ show_loop_fd(int fd, char *device) { +@@ -464,12 +470,22 @@ show_loop_fd(int fd, char *device) { if (loopinfo64.lo_encrypt_type || loopinfo64.lo_crypt_name[0]) { @@ -94,7 +94,7 @@ Index: util-linux-ng-2.18/mount/lomount.c } printf("\n"); return 0; -@@ -644,7 +660,7 @@ xgetpass(int pfd, const char *prompt) { +@@ -718,7 +734,7 @@ xgetpass(int pfd, const char *prompt) { } if (pass == NULL) @@ -103,7 +103,7 @@ Index: util-linux-ng-2.18/mount/lomount.c pass[i] = 0; return pass; -@@ -658,6 +674,24 @@ digits_only(const char *s) { +@@ -732,6 +748,24 @@ digits_only(const char *s) { return 1; } @@ -128,7 +128,7 @@ Index: util-linux-ng-2.18/mount/lomount.c /* * return codes: * 0 - success -@@ -666,10 +700,11 @@ digits_only(const char *s) { +@@ -740,10 +774,11 @@ digits_only(const char *s) { */ int set_loop(const char *device, const char *file, unsigned long long offset, @@ -142,7 +142,7 @@ Index: util-linux-ng-2.18/mount/lomount.c char *filename; if (verbose) { -@@ -707,13 +742,37 @@ set_loop(const char *device, const char +@@ -781,13 +816,37 @@ set_loop(const char *device, const char filename = (char *) file; xstrncpy((char *)loopinfo64.lo_file_name, filename, LO_NAME_SIZE); @@ -182,7 +182,7 @@ Index: util-linux-ng-2.18/mount/lomount.c } } -@@ -734,20 +793,69 @@ set_loop(const char *device, const char +@@ -808,20 +867,69 @@ set_loop(const char *device, const char } #endif @@ -264,9 +264,9 @@ Index: util-linux-ng-2.18/mount/lomount.c } if (ioctl(fd, LOOP_SET_FD, ffd) < 0) { -@@ -897,7 +1005,13 @@ usage(void) { +@@ -969,7 +1077,13 @@ usage(FILE *f) { - fprintf(stderr, _("\nOptions:\n" + fprintf(f, _("\nOptions:\n" " -e | --encryption enable data encryption with specified \n" + " -H | --phash hash password using specified algorithm (sha512/sha256/sha384/rmd160/none)\n" " -h | --help this help\n" @@ -278,7 +278,7 @@ Index: util-linux-ng-2.18/mount/lomount.c " -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" -@@ -910,11 +1024,14 @@ usage(void) { +@@ -983,11 +1097,14 @@ usage(FILE *f) { int main(int argc, char **argv) { char *p, *offset, *sizelimit, *encryption, *passfd, *device, *file, *assoc; @@ -293,7 +293,7 @@ Index: util-linux-ng-2.18/mount/lomount.c uintmax_t off = 0, slimit = 0; struct option longopts[] = { { "all", 0, 0, 'a' }, -@@ -923,6 +1040,8 @@ main(int argc, char **argv) { +@@ -996,6 +1113,8 @@ main(int argc, char **argv) { { "encryption", 1, 0, 'e' }, { "find", 0, 0, 'f' }, { "help", 0, 0, 'h' }, @@ -302,7 +302,7 @@ Index: util-linux-ng-2.18/mount/lomount.c { "associated", 1, 0, 'j' }, { "offset", 1, 0, 'o' }, { "sizelimit", 1, 0, 128 }, -@@ -939,12 +1058,13 @@ main(int argc, char **argv) { +@@ -1012,12 +1131,13 @@ main(int argc, char **argv) { capacity = delete = find = all = 0; assoc = offset = sizelimit = encryption = passfd = NULL; @@ -317,7 +317,7 @@ Index: util-linux-ng-2.18/mount/lomount.c longopts, NULL)) != -1) { switch (c) { case 'a': -@@ -969,6 +1089,12 @@ main(int argc, char **argv) { +@@ -1045,6 +1165,12 @@ main(int argc, char **argv) { case 'j': assoc = optarg; break; @@ -330,36 +330,37 @@ Index: util-linux-ng-2.18/mount/lomount.c case 'o': offset = optarg; break; -@@ -1058,8 +1184,11 @@ main(int argc, char **argv) { +@@ -1134,8 +1260,10 @@ main(int argc, char **argv) { else { if (passfd && sscanf(passfd, "%d", &pfd) != 1) - usage(); + usage(stderr); + if (keysize && sscanf(keysize,"%d",&keysz) != 1) -+ usage(); ++ usage(stderr); do { - res = set_loop(device, file, off, slimit, encryption, pfd, &ro); -+ res = set_loop(device, file, off, slimit, encryption, phash, -+ pfd, &ro, keysz); ++ 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.18/mount/lomount.h +Index: util-linux-2.19-rc1/mount/lomount.h =================================================================== ---- util-linux-ng-2.18.orig/mount/lomount.h -+++ util-linux-ng-2.18/mount/lomount.h -@@ -1,5 +1,6 @@ +--- util-linux-2.19-rc1.orig/mount/lomount.h ++++ util-linux-2.19-rc1/mount/lomount.h +@@ -1,8 +1,8 @@ + #ifndef UTIL_LINUX_LOMOUNT_H + #define UTIL_LINUX_LOMOUNT_H + -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, -+ unsigned long long, const char *encryption, const char *phash, -+ int pfd, int *options, 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 int is_loop_autoclear(const char *device); -Index: util-linux-ng-2.18/mount/losetup.8 +Index: util-linux-2.19-rc1/mount/losetup.8 =================================================================== ---- util-linux-ng-2.18.orig/mount/losetup.8 -+++ util-linux-ng-2.18/mount/losetup.8 +--- util-linux-2.19-rc1.orig/mount/losetup.8 ++++ util-linux-2.19-rc1/mount/losetup.8 @@ -96,9 +96,18 @@ find the first unused loop device. If a argument is present, use this device. Otherwise, print its name .IP "\fB\-h, \-\-help\fP" @@ -388,11 +389,11 @@ Index: util-linux-ng-2.18/mount/losetup.8 Cryptoloop is deprecated in favor of dm-crypt. For more details see .BR cryptsetup (8). -Index: util-linux-ng-2.18/mount/mount.8 +Index: util-linux-2.19-rc1/mount/mount.8 =================================================================== ---- util-linux-ng-2.18.orig/mount/mount.8 -+++ util-linux-ng-2.18/mount/mount.8 -@@ -869,6 +869,15 @@ Every time the inode is modified, the i_ +--- util-linux-2.19-rc1.orig/mount/mount.8 ++++ util-linux-2.19-rc1/mount/mount.8 +@@ -901,6 +901,15 @@ Every time the inode is modified, the i_ .B noiversion Do not increment the i_version inode field. .TP @@ -408,7 +409,7 @@ Index: util-linux-ng-2.18/mount/mount.8 .B mand Allow mandatory locks on this filesystem. See .BR fcntl (2). -@@ -2582,6 +2591,10 @@ that are really options to +@@ -2623,6 +2632,10 @@ that are really options to .BR \%losetup (8). (These options can be used in addition to those specific to the filesystem type.) @@ -419,11 +420,11 @@ Index: util-linux-ng-2.18/mount/mount.8 Since Linux 2.6.25 is supported auto-destruction of loop devices and then any loop device allocated by -Index: util-linux-ng-2.18/mount/mount.c +Index: util-linux-2.19-rc1/mount/mount.c =================================================================== ---- util-linux-ng-2.18.orig/mount/mount.c -+++ util-linux-ng-2.18/mount/mount.c -@@ -96,6 +96,9 @@ struct mountargs { +--- util-linux-2.19-rc1.orig/mount/mount.c ++++ util-linux-2.19-rc1/mount/mount.c +@@ -105,6 +105,9 @@ struct mountargs { void *data; }; @@ -433,7 +434,7 @@ Index: util-linux-ng-2.18/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 */ -@@ -201,6 +204,7 @@ static int opt_nofail = 0; +@@ -210,6 +213,7 @@ static int opt_nofail = 0; static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_sizelimit, *opt_encryption, *opt_speed, *opt_comment, *opt_uhelper; @@ -441,7 +442,7 @@ Index: util-linux-ng-2.18/mount/mount.c static int is_readonly(const char *node); static int mounted (const char *spec0, const char *node0); -@@ -217,6 +221,8 @@ static struct string_opt_map { +@@ -226,6 +230,8 @@ static struct string_opt_map { { "offset=", 0, &opt_offset }, { "sizelimit=", 0, &opt_sizelimit }, { "encryption=", 0, &opt_encryption }, @@ -450,7 +451,7 @@ Index: util-linux-ng-2.18/mount/mount.c { "speed=", 0, &opt_speed }, { "comment=", 1, &opt_comment }, { "uhelper=", 0, &opt_uhelper }, -@@ -1116,7 +1122,8 @@ loop_check(const char **spec, const char +@@ -1208,7 +1214,8 @@ loop_check(const char **spec, const char *type = opt_vfstype; } @@ -460,7 +461,7 @@ Index: util-linux-ng-2.18/mount/mount.c *loopfile = *spec; /* Automatically create a loop device from a regular file if a filesystem -@@ -1170,7 +1177,7 @@ loop_check(const char **spec, const char +@@ -1273,7 +1280,7 @@ loop_check(const char **spec, const char printf(_("mount: going to use the loop device %s\n"), *loopdev); if ((res = set_loop(*loopdev, *loopfile, offset, sizelimit, @@ -469,7 +470,7 @@ Index: util-linux-ng-2.18/mount/mount.c if (res == 2) { /* loop dev has been grabbed by some other process, try again, if not given explicitly */ -@@ -1981,6 +1988,7 @@ static struct option longopts[] = { +@@ -2209,6 +2216,7 @@ static struct option longopts[] = { { "options", 1, 0, 'o' }, { "test-opts", 1, 0, 'O' }, { "pass-fd", 1, 0, 'p' }, @@ -477,7 +478,7 @@ Index: util-linux-ng-2.18/mount/mount.c { "types", 1, 0, 't' }, { "bind", 0, 0, 'B' }, { "move", 0, 0, 'M' }, -@@ -2143,6 +2151,7 @@ main(int argc, char *argv[]) { +@@ -2372,6 +2380,7 @@ main(int argc, char *argv[]) { char *options = NULL, *test_opts = NULL, *node; const char *spec = NULL; char *label = NULL; @@ -485,7 +486,7 @@ Index: util-linux-ng-2.18/mount/mount.c char *uuid = NULL; char *types = NULL; char *p; -@@ -2173,7 +2182,7 @@ main(int argc, char *argv[]) { +@@ -2402,7 +2411,7 @@ main(int argc, char *argv[]) { initproctitle(argc, argv); #endif @@ -494,7 +495,7 @@ Index: util-linux-ng-2.18/mount/mount.c longopts, NULL)) != -1) { switch (c) { case 'a': /* mount everything in fstab */ -@@ -2194,6 +2203,9 @@ main(int argc, char *argv[]) { +@@ -2423,6 +2432,9 @@ main(int argc, char *argv[]) { case 'i': external_allowed = 0; break; @@ -504,7 +505,7 @@ Index: util-linux-ng-2.18/mount/mount.c case 'l': list_with_volumelabel = 1; break; -@@ -2341,6 +2353,9 @@ main(int argc, char *argv[]) { +@@ -2573,6 +2585,9 @@ main(int argc, char *argv[]) { atexit(unlock_mtab); @@ -514,10 +515,10 @@ Index: util-linux-ng-2.18/mount/mount.c switch (argc+specseen) { case 0: /* mount -a */ -Index: util-linux-ng-2.18/mount/rmd160.c +Index: util-linux-2.19-rc1/mount/rmd160.c =================================================================== --- /dev/null -+++ util-linux-ng-2.18/mount/rmd160.c ++++ util-linux-2.19-rc1/mount/rmd160.c @@ -0,0 +1,532 @@ +/* rmd160.c - RIPE-MD160 + * Copyright (C) 1998 Free Software Foundation, Inc. @@ -1051,10 +1052,10 @@ Index: util-linux-ng-2.18/mount/rmd160.c + rmd160_final( &hd ); + memcpy( outbuf, hd.buf, 20 ); +} -Index: util-linux-ng-2.18/mount/rmd160.h +Index: util-linux-2.19-rc1/mount/rmd160.h =================================================================== --- /dev/null -+++ util-linux-ng-2.18/mount/rmd160.h ++++ util-linux-2.19-rc1/mount/rmd160.h @@ -0,0 +1,11 @@ +#ifndef RMD160_H +#define RMD160_H @@ -1067,10 +1068,10 @@ Index: util-linux-ng-2.18/mount/rmd160.h +#endif /*RMD160_H*/ + + -Index: util-linux-ng-2.18/mount/sha512.c +Index: util-linux-2.19-rc1/mount/sha512.c =================================================================== --- /dev/null -+++ util-linux-ng-2.18/mount/sha512.c ++++ util-linux-2.19-rc1/mount/sha512.c @@ -0,0 +1,432 @@ +/* + * sha512.c @@ -1504,10 +1505,10 @@ Index: util-linux-ng-2.18/mount/sha512.c + memset(&ctx, 0, sizeof(ctx)); +} +#endif -Index: util-linux-ng-2.18/mount/sha512.h +Index: util-linux-2.19-rc1/mount/sha512.h =================================================================== --- /dev/null -+++ util-linux-ng-2.18/mount/sha512.h ++++ util-linux-2.19-rc1/mount/sha512.h @@ -0,0 +1,45 @@ +/* + * sha512.h diff --git a/util-linux-2.18-no-canonicalize-fix.patch b/util-linux-2.18-no-canonicalize-fix.patch deleted file mode 100644 index 774025f..0000000 --- a/util-linux-2.18-no-canonicalize-fix.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit 1cf4c20b198c0c6566198fd00b983d9aaf8321bc -Author: Miklos Szeredi -Date: Thu Oct 7 16:05:12 2010 +0200 - - mount: don't canonicalize "spec" with --no-canonicalize option - - "Spec" was still canonicalized despite --no-canonicalize. This - resulted in a hang during login with pam_encfs (Debian Bug#593336). - - Signed-off-by: Miklos Szeredi - -diff --git a/mount/devname.c b/mount/devname.c -index 585d259..05da092 100644 ---- a/mount/devname.c -+++ b/mount/devname.c -@@ -8,7 +8,7 @@ spec_to_devname(const char *spec) - { - if (!spec) - return NULL; -- if (is_pseudo_fs(spec)) -+ if (nocanonicalize || is_pseudo_fs(spec)) - return xstrdup(spec); - return fsprobe_get_devname_by_spec(spec); - } diff --git a/util-linux-2.19-rc1.tar.bz2 b/util-linux-2.19-rc1.tar.bz2 new file mode 100644 index 0000000..332396c --- /dev/null +++ b/util-linux-2.19-rc1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:583c122245f301b8cdd27e37a7a1fc774fcf1a73c3d633d9eac0c165e9b573d6 +size 4266321 diff --git a/util-linux-agetty-s-option.patch b/util-linux-agetty-s-option.patch deleted file mode 100644 index f036a27..0000000 --- a/util-linux-agetty-s-option.patch +++ /dev/null @@ -1,188 +0,0 @@ -git diff v2.18..HEAD login-utils/agetty.c login-utils/agetty.8 - -agetty: fix -s option (baud rate setup) -agetty: add -c to reuse cflags -agetty: add -s to reuse existing baud rate - -diff --git a/login-utils/agetty.8 b/login-utils/agetty.8 -index 8761374..084086f 100644 ---- a/login-utils/agetty.8 -+++ b/login-utils/agetty.8 -@@ -3,7 +3,7 @@ - agetty \- alternative Linux getty - - .SH SYNOPSIS --.BR "agetty " [\-8ihLmnUw] -+.BR "agetty " [\-c8ihLmnsUw] - .RI "[-f " issue_file ] - .RI "[-l " login_program ] - .RI "[-I " init ] -@@ -12,16 +12,6 @@ agetty \- alternative Linux getty - .I port - .I baud_rate,... - .RI [ term ] --.br --.BR "agetty " [\-8ihLmnw] --.RI "[-f " issue_file ] --.RI "[-l " login_program ] --.RI "[-I " init ] --.RI "[-t " timeout ] --.RI "[-H " login_host ] --.I baud_rate,... --.I port --.RI [ term ] - - .SH DESCRIPTION - .ad -@@ -92,6 +82,10 @@ whatever init(8) may have set, and is inherited by login and the shell. - .fi - .ad - .TP -+\-c -+Don't reset terminal cflags (control modes). See \fItermios(3)\fP for more -+details. -+.TP - \-8 - Assume that the tty is 8-bit clean, hence disable parity detection. - .TP -@@ -163,6 +157,10 @@ Force the line to be a local line with no need for carrier detect. This can - be useful when you have a locally attached terminal where the serial line - does not set the carrier detect signal. - .TP -+\-s -+Try to keep the existing baud rate. The baud rates from -+the command line are used when agetty receives a BREAK character. -+.TP - \-U - Turn on support for detecting an uppercase only terminal. This setting will - detect a login name containing only capitals as indicating an uppercase -diff --git a/login-utils/agetty.c b/login-utils/agetty.c -index 39a1fd3..9d463ce 100644 ---- a/login-utils/agetty.c -+++ b/login-utils/agetty.c -@@ -133,6 +133,8 @@ struct options { - #define F_CUSTISSUE (1<<6) /* give alternative issue file */ - #define F_NOPROMPT (1<<7) /* don't ask for login name! */ - #define F_LCUC (1<<8) /* Support for *LCUC stty modes */ -+#define F_KEEPSPEED (1<<9) /* Follow baud rate from kernel */ -+#define F_KEEPCFLAGS (1<<10) /* Reuse c_cflags setup from kernel */ - - /* Storage for things detected while the login name was read. */ - -@@ -203,7 +205,7 @@ void parse_args P_((int argc, char **argv, struct options *op)); - void parse_speeds P_((struct options *op, char *arg)); - void update_utmp P_((char *line)); - void open_tty P_((char *tty, struct termios *tp, int local)); --void termio_init P_((struct termios *tp, int speed, struct options *op)); -+void termio_init P_((struct termios *tp, struct options *op)); - void auto_baud P_((struct termios *tp)); - void do_prompt P_((struct options *op, struct termios *tp)); - void next_speed P_((struct termios *tp, struct options *op)); -@@ -297,7 +299,7 @@ main(argc, argv) - tcsetpgrp(0, getpid()); - /* Initialize the termios settings (raw mode, eight-bit, blocking i/o). */ - debug("calling termio_init\n"); -- termio_init(&termios, options.speeds[FIRST_SPEED], &options); -+ termio_init(&termios, &options); - - /* write the modem init string and DON'T flush the buffers */ - if (options.flags & F_INITSTRING) { -@@ -373,8 +375,11 @@ parse_args(argc, argv, op) - extern int optind; /* getopt */ - int c; - -- while (isascii(c = getopt(argc, argv, "8I:LH:f:hil:mt:wUn"))) { -+ while (isascii(c = getopt(argc, argv, "8cI:LH:f:hil:mst:wUn"))) { - switch (c) { -+ case 'c': -+ op->flags |= F_KEEPCFLAGS; -+ break; - case '8': - op->eightbits = 1; - break; -@@ -443,6 +448,9 @@ parse_args(argc, argv, op) - case 'n': - op->flags |= F_NOPROMPT; - break; -+ case 's': -+ op->flags |= F_KEEPSPEED; /* keep kernel defined speed */ -+ break; - case 't': /* time out */ - if ((op->timeout = atoi(optarg)) <= 0) - error(_("bad timeout value: %s"), optarg); -@@ -691,11 +699,17 @@ char gbuf[1024]; - char area[1024]; - - void --termio_init(tp, speed, op) -+termio_init(tp, op) - struct termios *tp; -- int speed; - struct options *op; - { -+ speed_t ispeed, ospeed; -+ -+ if (op->flags & F_KEEPSPEED) { -+ ispeed = cfgetispeed(tp); /* save the original setting */ -+ ospeed = cfgetospeed(tp); -+ } else -+ ospeed = ispeed = op->speeds[FIRST_SPEED]; - - /* - * Initial termios settings: 8-bit characters, raw-mode, blocking i/o. -@@ -706,14 +720,21 @@ termio_init(tp, speed, op) - /* flush input and output queues, important for modems! */ - (void) tcflush(0, TCIOFLUSH); - -- tp->c_cflag = CS8 | HUPCL | CREAD; -- cfsetispeed(tp, speed); -- cfsetospeed(tp, speed); -+ tp->c_iflag = tp->c_lflag = tp->c_oflag = 0; -+ -+ if (!(op->flags & F_KEEPCFLAGS)) -+ tp->c_cflag = CS8 | HUPCL | CREAD | (tp->c_cflag & CLOCAL); -+ -+ /* Note that the speed is stored in the c_cflag termios field, so we have -+ * set the speed always when the cflag se reseted. -+ */ -+ cfsetispeed(tp, ispeed); -+ cfsetospeed(tp, ospeed); -+ - if (op->flags & F_LOCAL) { - tp->c_cflag |= CLOCAL; - } - -- tp->c_iflag = tp->c_lflag = tp->c_oflag = 0; - #ifdef HAVE_STRUCT_TERMIOS_C_LINE - tp->c_line = 0; - #endif -@@ -973,9 +994,18 @@ next_speed(tp, op) - struct termios *tp; - struct options *op; - { -- static int baud_index = FIRST_SPEED;/* current speed index */ -+ static int baud_index = -1; -+ -+ if (baud_index == -1) -+ /* -+ * if the F_KEEPSPEED flags is set then the FIRST_SPEED is not -+ * tested yet (see termio_init()). -+ */ -+ baud_index = (op->flags & F_KEEPSPEED) ? FIRST_SPEED : -+ 1 % op->numspeed; -+ else -+ baud_index = (baud_index + 1) % op->numspeed; - -- baud_index = (baud_index + 1) % op->numspeed; - cfsetispeed(tp, op->speeds[baud_index]); - cfsetospeed(tp, op->speeds[baud_index]); - (void) tcsetattr(0, TCSANOW, tp); -@@ -1203,7 +1233,7 @@ bcode(s) - void - usage() - { -- fprintf(stderr, _("Usage: %s [-8hiLmUw] [-l login_program] [-t timeout] [-I initstring] [-H login_host] baud_rate,... line [termtype]\nor\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] [-H login_host] line baud_rate,... [termtype]\n"), progname); -+ fprintf(stderr, _("Usage: %s [-8hiLmsUw] [-l login_program] [-t timeout] [-I initstring] [-H login_host] baud_rate,... line [termtype]\nor\t[-hiLmw] [-l login_program] [-t timeout] [-I initstring] [-H login_host] line baud_rate,... [termtype]\n"), progname); - exit(1); - } - diff --git a/util-linux-fsck-l-option.patch b/util-linux-fsck-l-option.patch deleted file mode 100644 index d89982a..0000000 --- a/util-linux-fsck-l-option.patch +++ /dev/null @@ -1,526 +0,0 @@ -fsck: add support for whole-disk locking (-l option) - -This feature allows to call multiple independent fsck instances rather -than use only one "fsck -A" process. - -The lock uses LOCK_EX flock(2). The lock request is ignored if the -whole-disk is non-rotating disk. The verbose mode (-V) provides -information about disk locking. - -Note that "fsck -l" does not care if the device is stacked, for -example if you want to call "fsck -l /dev/md0" and "fsck -l /dev/md1" -then the underlying devices will not be locked. The traditional "fsck --A" does not run in parallel for stacked devices. - -http://pkgs.fedoraproject.org/gitweb/?p=util-linux-ng.git;a=commitdiff;h=6c69926dbfca8b07bd2f93b56bc8e7c54c7b227d#patch1 - -diff -up util-linux-ng-2.18/fsck/fsck.8.kzak util-linux-ng-2.18/fsck/fsck.8 ---- util-linux-ng-2.18/fsck/fsck.8.kzak 2010-06-30 12:51:35.000000000 +0200 -+++ util-linux-ng-2.18/fsck/fsck.8 2010-10-26 23:55:30.000000000 +0200 -@@ -7,7 +7,7 @@ - fsck \- check and repair a Linux file system - .SH SYNOPSIS - .B fsck --.RB [ \-sAVRTMNP ] -+.RB [ \-lsAVRTMNP ] - .RB [ \-C - .RI [ fd ]] - .RB [ \-t -@@ -80,6 +80,17 @@ variable. Please see the file system-sp - further details. - .SH OPTIONS - .TP -+.B \-l -+Lock whole-disk device by exclusive -+.BR flock (2). -+This option can be used with one device only (e.g. -A and -l are mutually -+exclusive). This option is recommended when more -+.B fsck (8) -+instances are executed in the same time. The option is ignored when used for -+multiple devices or for non-rotating disk. The fsck does not lock underlying -+devices if executed to check stacked devices (e.g. MD or DM) -- this feature is -+not implemented yet. -+.TP - .B \-s - Serialize - .B fsck -@@ -200,6 +211,11 @@ If there are multiple filesystems with t - fsck will attempt to check them in parallel, although it will avoid running - multiple filesystem checks on the same physical disk. - .sp -+.B fsck -+does not check stacked devices (RAIDs, dm-crypt, ...) in parallel with any other -+device. See below for FSCK_FORCE_ALL_PARALLEL setting. The /sys filesystem is -+used to detemine dependencies between devices. -+.sp - Hence, a very common configuration in - .I /etc/fstab - files is to set the root filesystem to have a -@@ -366,10 +382,10 @@ program's behavior is affected by the fo - .B FSCK_FORCE_ALL_PARALLEL - If this environment variable is set, - .B fsck --will attempt to run all of the specified filesystems in parallel, --regardless of whether the filesystems appear to be on the same --device. (This is useful for RAID systems or high-end storage systems --such as those sold by companies such as IBM or EMC.) -+will attempt to run all of the specified filesystems in parallel, regardless of -+whether the filesystems appear to be on the same device. (This is useful for -+RAID systems or high-end storage systems such as those sold by companies such -+as IBM or EMC.) Note that the fs_passno value is still used. - .TP - .B FSCK_MAX_INST - This environment variable will limit the maximum number of file system -diff -up util-linux-ng-2.18/fsck/fsck.c.kzak util-linux-ng-2.18/fsck/fsck.c ---- util-linux-ng-2.18/fsck/fsck.c.kzak 2010-05-19 23:36:23.000000000 +0200 -+++ util-linux-ng-2.18/fsck/fsck.c 2010-10-26 23:55:30.000000000 +0200 -@@ -31,6 +31,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -42,6 +44,8 @@ - #include - #include - #include -+#include -+#include - - #include "fsprobe.h" - -@@ -85,6 +89,7 @@ char *devices[MAX_DEVICES]; - char *args[MAX_ARGS]; - int num_devices, num_args; - -+int lockdisk = 0; - int verbose = 0; - int doall = 0; - int noexecute = 0; -@@ -214,11 +219,97 @@ static void parse_escape(char *word) - *q = 0; - } - -+static dev_t get_disk(const char *device) -+{ -+ struct stat st; -+ dev_t disk; -+ -+ if (!stat(device, &st) && -+ !blkid_devno_to_wholedisk(st.st_rdev, NULL, 0, &disk)) -+ return disk; -+ -+ return 0; -+} -+ -+static int is_irrotational_disk(dev_t disk) -+{ -+ char path[PATH_MAX]; -+ FILE *f; -+ int rc, x; -+ -+ rc = snprintf(path, sizeof(path), -+ "/sys/dev/block/%d:%d/queue/rotational", -+ major(disk), minor(disk)); -+ -+ if (rc < 0 || rc + 1 > sizeof(path)) -+ return 0; -+ -+ f = fopen(path, "r"); -+ if (!f) -+ return 0; -+ -+ rc = fscanf(f, "%u", &x); -+ fclose(f); -+ -+ return rc == 1 ? !x : 0; -+} -+ -+static void lock_disk(struct fsck_instance *inst) -+{ -+ dev_t disk = inst->fs->disk ? : get_disk(inst->fs->device); -+ char *diskname; -+ -+ if (!disk || is_irrotational_disk(disk)) -+ return; -+ -+ diskname = blkid_devno_to_devname(disk); -+ if (!diskname) -+ return; -+ -+ if (verbose) -+ printf(_("Locking disk %s ... "), diskname); -+ -+ inst->lock = open(diskname, O_CLOEXEC | O_RDONLY); -+ if (inst->lock >= 0) { -+ int rc = -1; -+ -+ /* inform users that we're waiting on the lock */ -+ if (verbose && -+ (rc = flock(inst->lock, LOCK_EX | LOCK_NB)) != 0 && -+ errno == EWOULDBLOCK) -+ printf(_("(waiting) ")); -+ -+ if (rc != 0 && flock(inst->lock, LOCK_EX) != 0) { -+ close(inst->lock); /* failed */ -+ inst->lock = -1; -+ } -+ } -+ -+ if (verbose) -+ printf("%s.\n", inst->lock >= 0 ? _("success") : _("failed")); -+ -+ free(diskname); -+ return; -+} -+ -+static void unlock_disk(struct fsck_instance *inst) -+{ -+ if (inst->lock >= 0) { -+ /* explicitly unlock, don't rely on close(), maybe some library -+ * (e.g. liblkid) has still open the device. -+ */ -+ flock(inst->lock, LOCK_UN); -+ close(inst->lock); -+ } -+} -+ -+ -+ - static void free_instance(struct fsck_instance *i) - { -+ if (lockdisk) -+ unlock_disk(i); - free(i->prog); -- free(i->device); -- free(i->base_device); - free(i); - return; - } -@@ -240,6 +331,8 @@ static struct fs_info *create_fs_device( - fs->passno = passno; - fs->flags = 0; - fs->next = NULL; -+ fs->disk = 0; -+ fs->stacked = 0; - - if (!filesys_info) - filesys_info = fs; -@@ -414,8 +507,7 @@ static int progress_active(NOARGS) - * Execute a particular fsck program, and link it into the list of - * child processes we are waiting for. - */ --static int execute(const char *type, const char *device, const char *mntpt, -- int interactive) -+static int execute(const char *type, struct fs_info *fs, int interactive) - { - char *s, *argv[80], prog[80]; - int argc, i; -@@ -452,7 +544,7 @@ static int execute(const char *type, con - } - } - -- argv[argc++] = string_copy(device); -+ argv[argc++] = string_copy(fs->device); - argv[argc] = 0; - - s = find_fsck(prog); -@@ -464,12 +556,19 @@ static int execute(const char *type, con - - if (verbose || noexecute) { - printf("[%s (%d) -- %s] ", s, num_running, -- mntpt ? mntpt : device); -+ fs->mountpt ? fs->mountpt : fs->device); - for (i=0; i < argc; i++) - printf("%s ", argv[i]); - printf("\n"); - } - -+ -+ inst->fs = fs; -+ inst->lock = -1; -+ -+ if (lockdisk) -+ lock_disk(inst); -+ - /* Fork and execute the correct program. */ - if (noexecute) - pid = -1; -@@ -492,8 +591,6 @@ static int execute(const char *type, con - inst->pid = pid; - inst->prog = string_copy(prog); - inst->type = string_copy(type); -- inst->device = string_copy(device); -- inst->base_device = base_device(device); - inst->start_time = time(0); - inst->next = NULL; - -@@ -597,12 +694,12 @@ static struct fsck_instance *wait_one(in - } else { - printf(_("Warning... %s for device %s exited " - "with signal %d.\n"), -- inst->prog, inst->device, sig); -+ inst->prog, inst->fs->device, sig); - status = EXIT_ERROR; - } - } else { - printf(_("%s %s: status is %x, should never happen.\n"), -- inst->prog, inst->device, status); -+ inst->prog, inst->fs->device, status); - status = EXIT_ERROR; - } - inst->exit_status = status; -@@ -641,7 +738,7 @@ ret_inst: - instance_list = inst->next; - if (verbose > 1) - printf(_("Finished with %s (exit status %d)\n"), -- inst->device, inst->exit_status); -+ inst->fs->device, inst->exit_status); - num_running--; - return inst; - } -@@ -698,7 +795,7 @@ static void fsck_device(struct fs_info * - type = DEFAULT_FSTYPE; - - num_running++; -- retval = execute(type, fs->device, fs->mountpt, interactive); -+ retval = execute(type, fs, interactive); - if (retval) { - fprintf(stderr, _("%s: Error %d while executing fsck.%s " - "for %s\n"), progname, retval, type, fs->device); -@@ -924,40 +1021,70 @@ static int ignore(struct fs_info *fs) - return 0; - } - -+static int count_slaves(dev_t disk) -+{ -+ DIR *dir; -+ struct dirent *dp; -+ char dirname[PATH_MAX]; -+ int count = 0; -+ -+ snprintf(dirname, sizeof(dirname), -+ "/sys/dev/block/%u:%u/slaves/", -+ major(disk), minor(disk)); -+ -+ if (!(dir = opendir(dirname))) -+ return -1; -+ -+ while ((dp = readdir(dir)) != 0) { -+#ifdef _DIRENT_HAVE_D_TYPE -+ if (dp->d_type != DT_UNKNOWN && dp->d_type != DT_LNK) -+ continue; -+#endif -+ if (dp->d_name[0] == '.' && -+ ((dp->d_name[1] == 0) || -+ ((dp->d_name[1] == '.') && (dp->d_name[2] == 0)))) -+ continue; -+ -+ count++; -+ } -+ closedir(dir); -+ return count; -+} -+ - /* - * Returns TRUE if a partition on the same disk is already being - * checked. - */ --static int device_already_active(char *device) -+static int disk_already_active(struct fs_info *fs) - { - struct fsck_instance *inst; -- char *base; - - if (force_all_parallel) - return 0; - --#ifdef BASE_MD -- /* Don't check a soft raid disk with any other disk */ -- if (instance_list && -- (!strncmp(instance_list->device, BASE_MD, sizeof(BASE_MD)-1) || -- !strncmp(device, BASE_MD, sizeof(BASE_MD)-1))) -+ if (instance_list && instance_list->fs->stacked) -+ /* any instance for a stacked device is already running */ - return 1; --#endif - -- base = base_device(device); -+ if (!fs->disk) { -+ fs->disk = get_disk(fs->device); -+ if (fs->disk) -+ fs->stacked = count_slaves(fs->disk); -+ } -+ - /* - * If we don't know the base device, assume that the device is - * already active if there are any fsck instances running. -+ * -+ * Don't check a stacked device with any other disk too. - */ -- if (!base) -+ if (!fs->disk || fs->stacked) - return (instance_list != 0); -+ - for (inst = instance_list; inst; inst = inst->next) { -- if (!inst->base_device || !strcmp(base, inst->base_device)) { -- free(base); -+ if (!inst->fs->disk || fs->disk == inst->fs->disk) - return 1; -- } - } -- free(base); - return 0; - } - -@@ -1038,7 +1165,7 @@ static int check_all(NOARGS) - * already been spawned, then we need to defer - * this to another pass. - */ -- if (device_already_active(fs->device)) { -+ if (disk_already_active(fs)) { - pass_done = 0; - continue; - } -@@ -1188,6 +1315,9 @@ static void PRS(int argc, char *argv[]) - } - } - break; -+ case 'l': -+ lockdisk++; -+ break; - case 'V': - verbose++; - break; -@@ -1298,6 +1428,12 @@ int main(int argc, char *argv[]) - if ((num_devices == 1) || (serialize)) - interactive = 1; - -+ if (lockdisk && (doall || num_devices > 1)) { -+ fprintf(stderr, _("%s: the -l option can be used with one " -+ "device only -- ignore\n"), progname); -+ lockdisk = 0; -+ } -+ - /* If -A was specified ("check all"), do that! */ - if (doall) - return check_all(); -diff -up util-linux-ng-2.18/fsck/fsck.h.kzak util-linux-ng-2.18/fsck/fsck.h ---- util-linux-ng-2.18/fsck/fsck.h.kzak 2010-03-18 23:11:23.000000000 +0100 -+++ util-linux-ng-2.18/fsck/fsck.h 2010-10-26 23:55:30.000000000 +0200 -@@ -44,6 +44,8 @@ struct fs_info { - int freq; - int passno; - int flags; -+ dev_t disk; -+ int stacked; - struct fs_info *next; - }; - -@@ -56,12 +58,12 @@ struct fs_info { - struct fsck_instance { - int pid; - int flags; -+ int lock; /* flock()ed whole disk file descriptor or -1 */ - int exit_status; - time_t start_time; - char * prog; - char * type; -- char * device; -- char * base_device; -+ struct fs_info *fs; - struct fsck_instance *next; - }; - -diff -up util-linux-ng-2.18/fsck/Makefile.am.kzak util-linux-ng-2.18/fsck/Makefile.am ---- util-linux-ng-2.18/fsck/Makefile.am.kzak 2010-05-24 12:33:46.000000000 +0200 -+++ util-linux-ng-2.18/fsck/Makefile.am 2010-10-26 23:55:30.000000000 +0200 -@@ -3,7 +3,7 @@ include $(top_srcdir)/config/include-Mak - sbin_PROGRAMS = fsck - dist_man_MANS = fsck.8 - --fsck_SOURCES = base_device.c fsck.c fsck.h $(top_srcdir)/lib/ismounted.c \ -+fsck_SOURCES = fsck.c fsck.h $(top_srcdir)/lib/ismounted.c \ - $(top_srcdir)/lib/fsprobe.c $(top_srcdir)/lib/canonicalize.c - fsck_LDADD = - fsck_CFLAGS = $(AM_CFLAGS) -diff -up util-linux-ng-2.18/fsck/Makefile.in.kzak util-linux-ng-2.18/fsck/Makefile.in ---- util-linux-ng-2.18/fsck/Makefile.in.kzak 2010-10-26 23:56:04.000000000 +0200 -+++ util-linux-ng-2.18/fsck/Makefile.in 2010-10-26 23:56:15.000000000 +0200 -@@ -62,9 +62,8 @@ CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" - PROGRAMS = $(sbin_PROGRAMS) --am_fsck_OBJECTS = fsck-base_device.$(OBJEXT) fsck-fsck.$(OBJEXT) \ -- fsck-ismounted.$(OBJEXT) fsck-fsprobe.$(OBJEXT) \ -- fsck-canonicalize.$(OBJEXT) -+am_fsck_OBJECTS = fsck-fsck.$(OBJEXT) fsck-ismounted.$(OBJEXT) \ -+ fsck-fsprobe.$(OBJEXT) fsck-canonicalize.$(OBJEXT) - fsck_OBJECTS = $(am_fsck_OBJECTS) - am__DEPENDENCIES_1 = - @BUILD_LIBBLKID_FALSE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -@@ -204,6 +203,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ - PACKAGE_NAME = @PACKAGE_NAME@ - PACKAGE_STRING = @PACKAGE_STRING@ - PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_URL = @PACKAGE_URL@ - PACKAGE_VERSION = @PACKAGE_VERSION@ - PATH_SEPARATOR = @PATH_SEPARATOR@ - PERL = @PERL@ -@@ -315,7 +315,7 @@ ul_libmount_la = $(top_builddir)/shlibs/ - # mount.h is generated by ./configure script and stored in build directory - ul_libmount_incdir = $(ul_libmount_builddir) - dist_man_MANS = fsck.8 --fsck_SOURCES = base_device.c fsck.c fsck.h $(top_srcdir)/lib/ismounted.c \ -+fsck_SOURCES = fsck.c fsck.h $(top_srcdir)/lib/ismounted.c \ - $(top_srcdir)/lib/fsprobe.c $(top_srcdir)/lib/canonicalize.c - - fsck_LDADD = $(am__append_1) $(am__append_3) -@@ -407,7 +407,6 @@ mostlyclean-compile: - distclean-compile: - -rm -f *.tab.c - --@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsck-base_device.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsck-canonicalize.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsck-fsck.Po@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsck-fsprobe.Po@am__quote@ -@@ -437,22 +436,6 @@ distclean-compile: - @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - --fsck-base_device.o: base_device.c --@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fsck_CFLAGS) $(CFLAGS) -MT fsck-base_device.o -MD -MP -MF $(DEPDIR)/fsck-base_device.Tpo -c -o fsck-base_device.o `test -f 'base_device.c' || echo '$(srcdir)/'`base_device.c --@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fsck-base_device.Tpo $(DEPDIR)/fsck-base_device.Po --@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ --@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='base_device.c' object='fsck-base_device.o' libtool=no @AMDEPBACKSLASH@ --@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fsck_CFLAGS) $(CFLAGS) -c -o fsck-base_device.o `test -f 'base_device.c' || echo '$(srcdir)/'`base_device.c -- --fsck-base_device.obj: base_device.c --@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fsck_CFLAGS) $(CFLAGS) -MT fsck-base_device.obj -MD -MP -MF $(DEPDIR)/fsck-base_device.Tpo -c -o fsck-base_device.obj `if test -f 'base_device.c'; then $(CYGPATH_W) 'base_device.c'; else $(CYGPATH_W) '$(srcdir)/base_device.c'; fi` --@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fsck-base_device.Tpo $(DEPDIR)/fsck-base_device.Po --@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ --@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='base_device.c' object='fsck-base_device.obj' libtool=no @AMDEPBACKSLASH@ --@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ --@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fsck_CFLAGS) $(CFLAGS) -c -o fsck-base_device.obj `if test -f 'base_device.c'; then $(CYGPATH_W) 'base_device.c'; else $(CYGPATH_W) '$(srcdir)/base_device.c'; fi` -- - fsck-fsck.o: fsck.c - @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fsck_CFLAGS) $(CFLAGS) -MT fsck-fsck.o -MD -MP -MF $(DEPDIR)/fsck-fsck.Tpo -c -o fsck-fsck.o `test -f 'fsck.c' || echo '$(srcdir)/'`fsck.c - @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fsck-fsck.Tpo $(DEPDIR)/fsck-fsck.Po -diff -up util-linux-ng-2.18/Makefile.am.kzak util-linux-ng-2.18/Makefile.am ---- util-linux-ng-2.18/Makefile.am.kzak 2010-03-18 23:11:23.000000000 +0100 -+++ util-linux-ng-2.18/Makefile.am 2010-10-26 23:55:30.000000000 +0200 -@@ -30,8 +30,10 @@ SUBDIRS += mount - endif - - if BUILD_FSCK -+if BUILD_LIBBLKID - SUBDIRS += fsck - endif -+endif - - ACLOCAL_AMFLAGS = -I m4 - diff --git a/util-linux-ng-2.18.tar.bz2 b/util-linux-ng-2.18.tar.bz2 deleted file mode 100644 index 4afa426..0000000 --- a/util-linux-ng-2.18.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8c5c07c763888aa712b4585393346667a00793127c54cef0470cfa456b031cc -size 7669676 diff --git a/util-linux-swapon-btrfs-limitations b/util-linux-swapon-btrfs-limitations deleted file mode 100644 index 59722da..0000000 --- a/util-linux-swapon-btrfs-limitations +++ /dev/null @@ -1,42 +0,0 @@ -From: Jeff Mahoney -Subject: swapon: Document btrfs limitation with swapfiles -References: bnc#616617 - - Btrfs, as of 2.6.35, is unable to allow swapfiles to be used on its - filesystems. This is due to the swapfile implementation wanting to build - an extent map of each block in the file and expecting it to be static - for the life of the swapfile. - - Btrfs can't guarantee this and refuses to return the mapping. The swapfile - implementation just makes a comment about there being holes in the file - - but that's how btrfs denies the mapping. - - This patch adds a section to the swapon manpage to document it. - -Signed-off-by: Jeff Mahoney - ---- - mount/swapon.8 | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - ---- a/mount/swapon.8 -+++ b/mount/swapon.8 -@@ -167,6 +167,18 @@ automatically detects and rewrites swap - suspend data (e.g S1SUSPEND, S2SUSPEND, ...). The problem is that if we don't - do it, then we get data corruption the next time an attempt at unsuspending is - made. -+.PP -+.B swapon -+may not work correctly when using a swap file with some versions of btrfs. -+This is due to the swap file implementation in the kernel expecting to be able -+to write to the file directly, without the assistance of the file system. -+Since btrfs is a copy-on-write file system, the file location may not be -+static and corruption can result. Btrfs actively disallows the use of files -+on its file systems by refusing to map the file. This can be seen in the system -+log as "swapon: swapfile has holes." One possible workaround is to map the -+file to a loopback device. This will allow the file system to determine the -+mapping properly but may come with a performance impact. -+ - .SH SEE ALSO - .BR swapon (2), - .BR swapoff (2), diff --git a/util-linux-swapon-canonicalize-swap-device.patch b/util-linux-swapon-canonicalize-swap-device.patch deleted file mode 100644 index 435a540..0000000 --- a/util-linux-swapon-canonicalize-swap-device.patch +++ /dev/null @@ -1,41 +0,0 @@ -Index: util-linux-ng-2.18/mount/swapon.c -=================================================================== ---- util-linux-ng-2.18.orig/mount/swapon.c -+++ util-linux-ng-2.18/mount/swapon.c -@@ -23,6 +23,7 @@ - #include "pathnames.h" - #include "swapheader.h" - #include "mangle.h" -+#include "canonicalize.h" - - #define PATH_MKSWAP "/sbin/mkswap" - -@@ -171,7 +172,11 @@ read_proc_swaps(void) { - break; - swapFiles = q; - -- swapFiles[numSwaps++] = unmangle(line); -+ if ((p = unmangle(line)) == NULL) -+ break; -+ -+ swapFiles[numSwaps++] = canonicalize_path(p); -+ free(p); - } - fclose(swaps); - } -@@ -179,10 +184,14 @@ read_proc_swaps(void) { - static int - is_in_proc_swaps(const char *fname) { - int i; -+ char *p = canonicalize_path(fname); - - for (i = 0; i < numSwaps; i++) -- if (swapFiles[i] && !strcmp(fname, swapFiles[i])) -+ if (swapFiles[i] && !strcmp(p, swapFiles[i])) { -+ free(p); - return 1; -+ } -+ free(p); - return 0; - } - diff --git a/util-linux.changes b/util-linux.changes index 150828d..e4a4bc5 100644 --- a/util-linux.changes +++ b/util-linux.changes @@ -1,3 +1,56 @@ +------------------------------------------------------------------- +Thu Jan 6 16:43:46 UTC 2011 - puzel@novell.com + +- update to util-linux-2.19-rc1 +- important changes: + * lsblk(8): + - this NEW COMMAND lists information about all or selected block + devices in tree-like format. + * partx(8): + - this command has been rewritten to use libblkid for partition + tables parsing. It supports aix, bsd, dos, gpt, mac, minix, + sgi, solaris_x86, sun, ultrix and unixware now. + - supports new command line option "--show" to list partitions in + new format + - prints UUID and name for GPT and mac partitions + * findmnt(8): + - supports new command line option "--submounts" to list all + submounts for selected mountpoint(s) + * agetty(8): + - supports new command line options "-c" and "-s" to reuse + already initialized tty cflags and existing baud rate + * mount(8), umount(8): + - could be linked with libmount (--enable-libmount-mount) to + manage userspace mount options outside /etc/mtab on systems + where the file is a symlink to /proc/mounts. (EXPERIMENTAL, + enabled in openSUSE package) + * losetup(8), mount(8): + - uses /sys/dev/block//loop/backing_file rather than + loopdev ioctls (requires kernel >= 2.6.37) + * fsck(8): + - supports new command line option "-l" to lock whole-disk device + by exclusive flock(2). This option is recommended when more + fsck(8) instances are executed in the same time. + * rtcwake(8): + - supports new mode "show" to print the current RTC alarm time + * fstrim(8): + - this NEW COMMAND allows to discard unused blocks on a mounted + filesystem (wrapper for FITRIM ioctl) + * swapon(8): + - supports new options "discard" and "nofail" + +- in post, replace /etc/mtab with a symlink to /proc/mounts/self +- drop following patches (in upstream) + - util-linux-swapon-btrfs-limitations + - util-linux-agetty-s-option.patch + - util-linux-fsck-l-option.patch + - util-linux-2.18-no-canonicalize-fix.patch + - util-linux-swapon-canonicalize-swap-device.patch +- fix uuidd Summary and Description +- build with --enable-libmount-mount (new option) +- use set_permissions macros +- run spec-cleaner + ------------------------------------------------------------------- Tue Dec 14 16:11:34 UTC 2010 - puzel@novell.com diff --git a/util-linux.spec b/util-linux.spec index c25297f..51468b6 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -1,5 +1,5 @@ # -# spec file for package util-linux (Version 2.18) +# spec file for package util-linux (Version 2.19-rc1) # # Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -20,6 +20,8 @@ %define which_ver 2.20 %define adjtimex_ver 1.28 +%define ul_tar_version 2.19-rc1 + Name: util-linux BuildRequires: audit-devel BuildRequires: gettext-devel @@ -30,6 +32,7 @@ BuildRequires: pam-devel BuildRequires: pkg-config BuildRequires: readline-devel BuildRequires: zlib-devel +Version: 2.18.91 Url: http://kernel.org/~kzak/util-linux/ Supplements: filesystem(minix) Provides: fsck-with-dev-lock = %{version} @@ -39,11 +42,10 @@ PreReq: %install_info_prereq permissions License: GPLv2+ Group: System/Base AutoReqProv: on -Version: 2.18 Release: 7 -Recommends: %name-lang = %{version} +Recommends: %{name}-lang = %{version} Summary: A collection of basic system utilities -Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v%{version}/%name-ng-%{version}.tar.bz2 +Source: ftp://ftp.kernel.org/pub/linux/utils/util-linux/v19/%{name}-%{ul_tar_version}.tar.bz2 Source1: util-linux-rpmlintrc # XXX: make nologin part of login package Source2: nologin.c @@ -81,11 +83,6 @@ Patch1: util-linux-2.12r-fdisk_remove_bogus_warnings.patch # crypto patch Patch3: util-linux-2.17.1-mount_losetup_crypto.patch Patch4: util-linux-2.17.1-losetup-honor-documented-c-option -Patch7: util-linux-swapon-btrfs-limitations -Patch8: util-linux-agetty-s-option.patch -Patch9: util-linux-fsck-l-option.patch -Patch10: util-linux-2.18-no-canonicalize-fix.patch -Patch11: util-linux-swapon-canonicalize-swap-device.patch ## ## adjtimex ## @@ -117,7 +114,6 @@ mount program, the fdisk configuration tool, and more. License: GPLv2+ Summary: Filesystem detection library Group: System/Filesystems -AutoReqProv: on %description -n libblkid1 Library for filesystem detection. @@ -126,8 +122,7 @@ Library for filesystem detection. License: GPLv2+ Summary: Development files for the filesystem detection library Group: Development/Libraries/C and C++ -AutoReqProv: on -Requires: libblkid1 = %version +Requires: libblkid1 = %{version} %description -n libblkid-devel Files needed to develop applications using the library for filesystem @@ -135,21 +130,22 @@ detection. %package -n uuidd License: GPLv2+ -Summary: Utilities for the Second Extended File System +Summary: Helper daemon to guarantee uniqueness of time-based UUIDs Group: System/Filesystems -AutoReqProv: on -PreReq: %fillup_prereq %insserv_prereq permissions pwdutils +PreReq: %fillup_prereq +PreReq: %insserv_prereq +PreReq: permissions +PreReq: pwdutils %description -n uuidd -Utilities needed to create and maintain ext2 and ext3 file systems -under Linux. Included in this package are: chattr, lsattr, mke2fs, -mklost+found, tune2fs, e2fsck, resize2fs, and badblocks. +The uuidd package contains a userspace daemon (uuidd) which guarantees +uniqueness of time-based UUID generation even at very high rates on +SMP systems. %package -n libuuid1 License: GPLv2+ Summary: Library to generate UUIDs Group: System/Filesystems -AutoReqProv: on %description -n libuuid1 A library to generate universally unique IDs (UUIDs). @@ -158,8 +154,7 @@ A library to generate universally unique IDs (UUIDs). License: GPLv2+ Summary: Development files for libuuid1 Group: Development/Libraries/C and C++ -AutoReqProv: on -Requires: libuuid1 = %version +Requires: libuuid1 = %{version} %description -n libuuid-devel Files to develop applications using the library to generate universally @@ -167,9 +162,8 @@ unique IDs (UUIDs). %package -n libmount1 License: GPLv2+ -Summary: Mount library +Summary: Device mount library Group: System/Filesystems -AutoReqProv: on %description -n libmount1 Library designed to be used in low-level utils like @@ -179,23 +173,17 @@ mount(8) and /sbin/mount. helpers. License: GPLv2+ Summary: Development files for libmount1 Group: Development/Libraries/C and C++ -AutoReqProv: on -Requires: libmount1 = %version +Requires: libmount1 = %{version} %description -n libmount-devel Files to develop applications using the libmount library. %lang_package %prep -%setup -q -a 9 -b 11 -b 12 -b 13 -n %name-ng-%version +%setup -q -a 9 -b 11 -b 12 -b 13 -n %{name}-%ul_tar_version %patch1 -p1 %patch3 -p1 %patch4 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 # cd adjtimex-* @@ -208,7 +196,7 @@ cp %{S:2} %{S:3} %{S:26} %{S:30} . cd ../klogconsole #%#patch55 -p1 -b .quiet %patch55 -p1 -%patch56 -p1 +%patch56 -p1 cd ../time-* %patch60 cd ../which-* @@ -217,7 +205,7 @@ cd ../which-* %build # adjtimex build cd adjtimex-%{adjtimex_ver} -CFLAGS="$RPM_OPT_FLAGS" ./configure +CFLAGS="%{optflags}" ./configure make %{?_smp_mflags} cd .. pushd ../ @@ -227,7 +215,7 @@ aclocal --force autoconf --force automake --force-missing --add-missing --foreign %{?suse_update_config:%{suse_update_config}} -CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr \ +CFLAGS="%{optflags}" ./configure --prefix=/usr \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ %{_target_cpu}-suse-linux @@ -236,7 +224,7 @@ cd .. # time build cd time-%{time_ver} %{?suse_update_config:%{suse_update_config}} -CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE " INSTALL_PROGRAM='$(INSTALL)' \ +CFLAGS="%{optflags} -D_GNU_SOURCE " INSTALL_PROGRAM='$(INSTALL)' \ ./configure --prefix=/usr \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ @@ -245,19 +233,19 @@ make %{?_smp_mflags} cd .. # klogconsole build cd klogconsole -make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS" +make %{?_smp_mflags} CFLAGS="%{optflags}" cd .. popd # setctsid build rm -f setctsid -make %{?_smp_mflags} setctsid CFLAGS="$RPM_OPT_FLAGS" +make %{?_smp_mflags} setctsid CFLAGS="%{optflags}" # # util-linux itself # autoreconf -fi export SUID_CFLAGS="-fpie" export SUID_LDFLAGS="-pie" -CFLAGS="$RPM_OPT_FLAGS" \ +CFLAGS="%{optflags}" \ %configure \ --bindir=/bin \ --sbindir=/sbin \ @@ -269,154 +257,163 @@ CFLAGS="$RPM_OPT_FLAGS" \ --enable-partx \ --enable-raw \ --enable-write \ + --enable-libmount-mount \ --disable-use-tty-group \ --disable-static \ --disable-silent-rules # make %{?_smp_mflags} # -gcc $RPM_OPT_FLAGS -o nologin nologin.c -gcc $RPM_OPT_FLAGS -o mkzimage_cmdline %{S:29} -gcc $RPM_OPT_FLAGS -o chrp-addnote %{SOURCE31} +gcc %{optflags} -o nologin nologin.c +gcc %{optflags} -o mkzimage_cmdline %{S:29} +gcc %{optflags} -o chrp-addnote %{SOURCE31} %check cd ../time-%{time_ver} make check %install -mkdir -p "$RPM_BUILD_ROOT"{/etc/init.d,%{_mandir}/man{1,8},/bin,/sbin,/usr/bin,/usr/sbin,%{_infodir}} -mkdir -p $RPM_BUILD_ROOT/var/lib/libuuid/ -mkdir -p $RPM_BUILD_ROOT/var/run/uuidd/ -install -m 744 %{SOURCE50} $RPM_BUILD_ROOT/etc/init.d/uuidd -install -m 644 %{SOURCE51} $RPM_BUILD_ROOT/etc/blkid.conf -mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates +mkdir -p %{buildroot}{/etc/init.d,%{_mandir}/man{1,8},/bin,/sbin,/usr/bin,/usr/sbin,%{_infodir}} +mkdir -p %{buildroot}%{_localstatedir}/lib/libuuid/ +mkdir -p %{buildroot}%{_localstatedir}/run/uuidd/ +install -m 744 %{SOURCE50} %{buildroot}%{_initddir}/uuidd +install -m 644 %{SOURCE51} %{buildroot}%{_sysconfdir}/blkid.conf +mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates cp adjtimex-*/adjtimex %{buildroot}/sbin/ cp adjtimex-*/adjtimex.8 %{buildroot}%{_mandir}/man8/ pushd .. # which install cd which-%{which_ver} -make install DESTDIR=$RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/which -install -m 0644 README $RPM_BUILD_ROOT%{_defaultdocdir}/which/ -install -m 0644 EXAMPLES $RPM_BUILD_ROOT%{_defaultdocdir}/which/ -install -m 0644 README.alias $RPM_BUILD_ROOT%{_defaultdocdir}/which/ +%make_install +mkdir -p %{buildroot}%{_defaultdocdir}/which +install -m 0644 README %{buildroot}%{_defaultdocdir}/which/ +install -m 0644 EXAMPLES %{buildroot}%{_defaultdocdir}/which/ +install -m 0644 README.alias %{buildroot}%{_defaultdocdir}/which/ cd .. # time install cd time-%{time_ver} -mkdir -p $RPM_BUILD_ROOT%{_defaultdocdir}/time -make install DESTDIR=$RPM_BUILD_ROOT \ - prefix=$RPM_BUILD_ROOT/usr \ - infodir=$RPM_BUILD_ROOT%{_infodir} \ - mandir=$RPM_BUILD_ROOT%{_mandir} -install -m 0644 README $RPM_BUILD_ROOT%{_defaultdocdir}/time/ -install -m 0644 AUTHORS $RPM_BUILD_ROOT%{_defaultdocdir}/time/ -install -m 0644 COPYING $RPM_BUILD_ROOT%{_defaultdocdir}/time/ -install -m 0644 NEWS $RPM_BUILD_ROOT%{_defaultdocdir}/time/ +mkdir -p %{buildroot}%{_defaultdocdir}/time +make install DESTDIR=%{buildroot} \ + prefix=%{buildroot}/usr \ + infodir=%{buildroot}%{_infodir} \ + mandir=%{buildroot}%{_mandir} +install -m 0644 README %{buildroot}%{_defaultdocdir}/time/ +install -m 0644 AUTHORS %{buildroot}%{_defaultdocdir}/time/ +install -m 0644 COPYING %{buildroot}%{_defaultdocdir}/time/ +install -m 0644 NEWS %{buildroot}%{_defaultdocdir}/time/ cd .. # klogconsole install cd klogconsole -make install DEST=$RPM_BUILD_ROOT +make install DEST=%{buildroot} popd # # util-linux install # -make DESTDIR=$RPM_BUILD_ROOT install -mv $RPM_BUILD_ROOT/usr/bin/logger $RPM_BUILD_ROOT/bin/logger -install -m 644 %{SOURCE6} $RPM_BUILD_ROOT/etc/filesystems -install -m 755 nologin $RPM_BUILD_ROOT/sbin -rm -f $RPM_BUILD_ROOT/%{_libdir}/libblkid.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/libuuid.la -rm -f $RPM_BUILD_ROOT/%{_libdir}/libmount.la +%make_install +mv %{buildroot}%{_bindir}/logger %{buildroot}/bin/logger +install -m 644 %{SOURCE6} %{buildroot}%{_sysconfdir}/filesystems +install -m 755 nologin %{buildroot}/sbin +rm -f %{buildroot}/%{_libdir}/libblkid.la +rm -f %{buildroot}/%{_libdir}/libuuid.la +rm -f %{buildroot}/%{_libdir}/libmount.la %ifnarch ppc ppc64 -install -m 755 mkzimage_cmdline $RPM_BUILD_ROOT/usr/bin -install -m 644 %{S:28} $RPM_BUILD_ROOT%{_mandir}/man8 -install -m 755 chrp-addnote $RPM_BUILD_ROOT/usr/bin +install -m 755 mkzimage_cmdline %{buildroot}%{_prefix}/bin +install -m 644 %{S:28} %{buildroot}%{_mandir}/man8 +install -m 755 chrp-addnote %{buildroot}%{_prefix}/bin %endif -install -m 644 nologin.8 $RPM_BUILD_ROOT%{_mandir}/man8 +install -m 644 nologin.8 %{buildroot}%{_mandir}/man8 # setctsid install -install -m 755 setctsid $RPM_BUILD_ROOT/usr/sbin -install -m 444 setctsid.8 $RPM_BUILD_ROOT%{_mandir}/man8/ -echo -e "#! /bin/bash\n/sbin/blockdev --flushbufs \$1" > $RPM_BUILD_ROOT/usr/sbin/flushb -chmod 755 $RPM_BUILD_ROOT/usr/sbin/flushb +install -m 755 setctsid %{buildroot}%{_prefix}/sbin +install -m 444 setctsid.8 %{buildroot}%{_mandir}/man8/ +echo -e "#! /bin/bash\n/sbin/blockdev --flushbufs \$1" > %{buildroot}%{_sbindir}/flushb +chmod 755 %{buildroot}%{_sbindir}/flushb # Install scripts to configure raw devices at boot time -install -m 644 $RPM_SOURCE_DIR/etc.raw $RPM_BUILD_ROOT/etc/raw -install -m 755 $RPM_SOURCE_DIR/raw.init $RPM_BUILD_ROOT/etc/init.d/raw -ln -sf ../../etc/init.d/raw $RPM_BUILD_ROOT/usr/sbin/rcraw +install -m 644 $RPM_SOURCE_DIR/etc.raw %{buildroot}%{_sysconfdir}/raw +install -m 755 $RPM_SOURCE_DIR/raw.init %{buildroot}%{_initddir}/raw +ln -sf ../../etc/init.d/raw %{buildroot}%{_sbindir}/rcraw # Stupid hack so we don't have a tcsh dependency -chmod 644 $RPM_BUILD_ROOT/usr/share/getopt/getopt*.tcsh +chmod 644 %{buildroot}%{_datadir}/getopt/getopt*.tcsh # Following files we don't want to package, so remove them -rm -f $RPM_BUILD_ROOT/usr/bin/pg -rm -f $RPM_BUILD_ROOT/usr/share/man/man1/pg.1* +rm -f %{buildroot}%{_bindir}/pg +rm -f %{buildroot}%{_mandir}/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/share/man/man1/chkdupexe.1 +rm -f %{buildroot}%{_bindir}/chkdupexe +rm -f %{buildroot}%{_mandir}/man1/chkdupexe.1 # arch dependent %ifarch s390 s390x -rm -f $RPM_BUILD_ROOT/etc/fdprm -rm -f $RPM_BUILD_ROOT/usr/bin/cytune -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 -rm -f $RPM_BUILD_ROOT/usr/sbin/tunelp -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/cytune.8* -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/fdformat.8* -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/hwclock.8* -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/klogconsole.8* -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/tunelp.8* +rm -f %{buildroot}%{_sysconfdir}/fdprm +rm -f %{buildroot}%{_bindir}/cytune +rm -f %{buildroot}%{_sbindir}/fdformat +rm -f %{buildroot}/sbin/hwclock +rm -f %{buildroot}%{_sbindir}/klogconsole +rm -f %{buildroot}%{_bindir}/setterm +rm -f %{buildroot}%{_sbindir}/tunelp +rm -f %{buildroot}/%{_mandir}/man8/cytune.8* +rm -f %{buildroot}/%{_mandir}/man8/fdformat.8* +rm -f %{buildroot}/%{_mandir}/man8/hwclock.8* +rm -f %{buildroot}/%{_mandir}/man8/klogconsole.8* +rm -f %{buildroot}/%{_mandir}/man8/tunelp.8* %endif %ifarch ia64 %sparc -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/cfdisk.8* -rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/sfdisk.8* -rm -f $RPM_BUILD_ROOT/sbin/cfdisk -rm -f $RPM_BUILD_ROOT/sbin/sfdisk +rm -f %{buildroot}/%{_mandir}/man8/cfdisk.8* +rm -f %{buildroot}/%{_mandir}/man8/sfdisk.8* +rm -f %{buildroot}/sbin/cfdisk +rm -f %{buildroot}/sbin/sfdisk %endif %ifarch ia64 -rm -f $RPM_BUILD_ROOT/sbin/fdisk -rm -f $RPM_BUILD_ROOT%{_mandir}/man8/fdisk.8* +rm -f %{buildroot}/sbin/fdisk +rm -f %{buildroot}%{_mandir}/man8/fdisk.8* %endif -%find_lang %{name}-ng %{name}.lang +%find_lang %{name} %{name}.lang # create list of setarch(8) symlinks -find $RPM_BUILD_ROOT%{_bindir}/ -regextype posix-egrep -type l \ +find %{buildroot}%{_bindir}/ -regextype posix-egrep -type l \ -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)$" \ -printf "%{_bindir}/%f\n" >> %{name}.files -find $RPM_BUILD_ROOT%{_mandir}/man8 -regextype posix-egrep \ +find %{buildroot}%{_mandir}/man8 -regextype posix-egrep \ -regex ".*(linux32|linux64|s390|s390x|i386|ppc|ppc64|ppc32|sparc|sparc64|sparc32|sparc32bash|mips|mips64|mips32|ia64|x86_64|parisc|parisc32|parisc64)\.8.*" \ -printf "%{_mandir}/man8/%f*\n" >> %{name}.files %clean -rm -rf $RPM_BUILD_ROOT +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 %run_permissions +%else +%set_permissions /usr/bin/wall /usr/bin/write /bin/mount /bin/umount +%endif + # mount option 'code=' is now called 'codepage=' so change fstab if [ -f etc/fstab ]; then sed -i 's:code=:codepage=:' etc/fstab fi +# if /etc/mtab is a regular file, replace it with a symlink to /proc/self/mounts +# (regular mtab is not written/cleaned-up/supported by systemd) +if [ -f /etc/mtab ]; then + ln -sf /proc/self/mounts /etc/mtab || : +fi + %postun %install_info_delete --info-dir=%{_infodir} %{_infodir}/ipc.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/time.info.gz %install_info_delete --info-dir=%{_infodir} %{_infodir}/which.info.gz %{insserv_cleanup} + %verifyscript -%verify_permissions -e /usr/bin/wall -e /usr/bin/write +%verify_permissions -e /usr/bin/wall -e /usr/bin/write -e /bin/mount -e /bin/umount -%post -n libblkid1 -/sbin/ldconfig +%post -n libblkid1 -p /sbin/ldconfig -%postun -n libblkid1 -/sbin/ldconfig +%postun -n libblkid1 -p /sbin/ldconfig -%post -n libmount1 -/sbin/ldconfig +%post -n libmount1 -p /sbin/ldconfig -%postun -n libmount1 -/sbin/ldconfig +%postun -n libmount1 -p /sbin/ldconfig %pre -n uuidd /usr/sbin/groupadd -r uuidd 2>/dev/null || : @@ -428,17 +425,21 @@ fi %post -n uuidd %{fillup_and_insserv -n uuidd} +%if 0%{?suse_version} <= 1130 %run_permissions +%else +%set_permissions /usr/sbin/uuidd +%endif %postun -n uuidd %{restart_on_update uuidd} %{insserv_cleanup} -%post -n libuuid1 -/sbin/ldconfig +%post -n libuuid1 -p /sbin/ldconfig %postun -n libuuid1 /sbin/ldconfig + %verifyscript -n uuidd %verify_permissions -e /usr/sbin/uuidd @@ -457,15 +458,16 @@ fi %doc hwclock/README.hwclock %doc text-utils/README.col %doc README.largedisk -%config %attr(744,root,root) /etc/init.d/raw -%config(noreplace) %attr(644,root,root) /etc/raw -%config(noreplace) /etc/filesystems -%config(noreplace) /etc/blkid.conf +%config %attr(744,root,root) %{_sysconfdir}/init.d/raw +%config(noreplace) %attr(644,root,root) %{_sysconfdir}/raw +%config(noreplace) %{_sysconfdir}/filesystems +%config(noreplace) %{_sysconfdir}/blkid.conf /bin/dmesg /bin/more /bin/mount /bin/umount /bin/findmnt +/bin/lsblk /sbin/adjtimex /sbin/agetty /sbin/blockdev @@ -491,62 +493,62 @@ fi /sbin/wipefs /sbin/fsfreeze /sbin/swaplabel -/usr/bin/ipcmk +/sbin/fstrim +%{_bindir}/ipcmk /bin/logger -/usr/bin/cal -/usr/bin/chrt -/usr/bin/col -/usr/bin/colcrt -/usr/bin/colrm -/usr/bin/column -/usr/bin/ddate -/usr/bin/fallocate -/usr/bin/flock -/usr/bin/getopt -/usr/bin/hexdump -/usr/bin/ionice -/usr/bin/ipcrm -/usr/bin/ipcs -/usr/bin/isosize -/usr/bin/line -/usr/bin/look -/usr/bin/lscpu -/usr/bin/mcookie -/usr/bin/mesg -/usr/bin/uuidgen +%{_bindir}/cal +%{_bindir}/chrt +%{_bindir}/col +%{_bindir}/colcrt +%{_bindir}/colrm +%{_bindir}/column +%{_bindir}/ddate +%{_bindir}/fallocate +%{_bindir}/flock +%{_bindir}/getopt +%{_bindir}/hexdump +%{_bindir}/ionice +%{_bindir}/ipcrm +%{_bindir}/ipcs +%{_bindir}/isosize +%{_bindir}/line +%{_bindir}/look +%{_bindir}/lscpu +%{_bindir}/mcookie +%{_bindir}/mesg +%{_bindir}/uuidgen %ifnarch ppc ppc64 -/usr/bin/chrp-addnote -/usr/bin/mkzimage_cmdline +%{_bindir}/chrp-addnote +%{_bindir}/mkzimage_cmdline %endif -/usr/bin/namei -/usr/bin/rename -/usr/bin/renice -/usr/bin/rev -/usr/bin/script -/usr/bin/setarch -/usr/bin/scriptreplay -/usr/bin/setsid -/usr/bin/ul -/usr/bin/tailf -/usr/bin/taskset -/usr/bin/time -/usr/bin/unshare -/usr/bin/which -/usr/sbin/addpart -/usr/sbin/delpart -/usr/sbin/ldattach -/usr/sbin/partx -/usr/sbin/rcraw -/usr/sbin/rtcwake -/usr/sbin/setctsid -%verify(not mode) %attr(0755,root,tty) /usr/bin/wall -/usr/bin/whereis -%verify(not mode) %attr(0755,root,tty) /usr/bin/write +%{_bindir}/namei +%{_bindir}/rename +%{_bindir}/renice +%{_bindir}/rev +%{_bindir}/script +%{_bindir}/setarch +%{_bindir}/scriptreplay +%{_bindir}/setsid +%{_bindir}/ul +%{_bindir}/tailf +%{_bindir}/taskset +%{_bindir}/time +%{_bindir}/unshare +%{_bindir}/which +%{_sbindir}/addpart +%{_sbindir}/delpart +%{_sbindir}/ldattach +%{_sbindir}/partx +%{_sbindir}/rcraw +%{_sbindir}/rtcwake +%{_sbindir}/setctsid +%verify(not mode) %attr(0755,root,tty) %{_bindir}/wall +%{_bindir}/whereis +%verify(not mode) %attr(0755,root,tty) %{_bindir}/write %dir %{_defaultdocdir}/time %dir %{_defaultdocdir}/which %{_defaultdocdir}/time/* %{_defaultdocdir}/which/* -%{_infodir}/ipc.info.gz %{_infodir}/time.info*.gz %{_infodir}/which.info*.gz %{_mandir}/man1/cal.1.gz @@ -628,13 +630,16 @@ fi %{_mandir}/man8/umount.8.gz %{_mandir}/man8/setctsid.8.gz %{_mandir}/man8/wipefs.8.gz -/usr/sbin/flushb -/usr/sbin/readprofile -%dir /usr/share/getopt -%attr (755,root,root) /usr/share/getopt/getopt-parse.bash -%attr (755,root,root) /usr/share/getopt/getopt-parse.tcsh -%attr (755,root,root) /usr/share/getopt/getopt-test.bash -%attr (755,root,root) /usr/share/getopt/getopt-test.tcsh +%{_mandir}/man8/fstrim.8.gz +%{_mandir}/man8/lsblk.8.gz +%{_mandir}/ru +%{_sbindir}/flushb +%{_sbindir}/readprofile +%dir %{_datadir}/getopt +%attr (755,root,root) %{_datadir}/getopt/getopt-parse.bash +%attr (755,root,root) %{_datadir}/getopt/getopt-parse.tcsh +%attr (755,root,root) %{_datadir}/getopt/getopt-test.bash +%attr (755,root,root) %{_datadir}/getopt/getopt-test.tcsh %ifnarch ia64 %doc fdisk/README.fdisk /sbin/fdisk @@ -648,12 +653,12 @@ fi /sbin/sfdisk %endif %ifnarch s390 s390x -/usr/bin/cytune -/usr/sbin/fdformat +%{_bindir}/cytune +%{_sbindir}/fdformat /sbin/hwclock -/usr/sbin/klogconsole -/usr/bin/setterm -/usr/sbin/tunelp +%{_sbindir}/klogconsole +%{_bindir}/setterm +%{_sbindir}/tunelp %{_mandir}/man8/cytune.8.gz %{_mandir}/man8/fdformat.8.gz %{_mandir}/man8/hwclock.8.gz @@ -671,7 +676,7 @@ fi %{_libdir}/libblkid.so %dir %{_includedir}/blkid %{_includedir}/blkid/blkid.h -%_libdir/pkgconfig/blkid.pc +%{_libdir}/pkgconfig/blkid.pc %{_mandir}/man3/libblkid.3.gz %files -n libmount1 @@ -684,14 +689,14 @@ fi %{_libdir}/libmount.so %dir %{_includedir}/mount %{_includedir}/mount/mount.h -%_libdir/pkgconfig/mount.pc +%{_libdir}/pkgconfig/mount.pc %files -n uuidd %defattr(-, root, root) -%verify(not mode) %attr(0755,root,root) /usr/sbin/uuidd -%attr(-,uuidd,uuidd) %dir /var/lib/libuuid -%attr(-,uuidd,uuidd) %ghost %dir /var/run/uuidd -/etc/init.d/uuidd +%verify(not mode) %attr(0755,root,root) %{_sbindir}/uuidd +%attr(-,uuidd,uuidd) %dir %{_localstatedir}/lib/libuuid +%attr(-,uuidd,uuidd) %ghost %dir %{_localstatedir}/run/uuidd +%{_sysconfdir}/init.d/uuidd %{_mandir}/man8/uuidd.8.gz %files -n libuuid1 @@ -704,7 +709,7 @@ fi %{_libdir}/libuuid.so %dir %{_includedir}/uuid %{_includedir}/uuid/uuid.h -%_libdir/pkgconfig/uuid.pc +%{_libdir}/pkgconfig/uuid.pc %{_mandir}/man3/uuid* %changelog