2.23-0.7: remove unused patches
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
59ea5186b7
commit
1ae81e57b4
@ -1,45 +0,0 @@
|
|||||||
From 7afbf6f20e1de62fb5595411d998703c95af8965 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Karel Zak <kzak@redhat.com>
|
|
||||||
Date: Wed, 2 Jan 2013 08:23:00 +0100
|
|
||||||
Subject: [PATCH 1/3] agetty: replace perms 660 to 620
|
|
||||||
|
|
||||||
... the default is root:tty 620
|
|
||||||
|
|
||||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
|
||||||
---
|
|
||||||
login-utils/login.1 | 5 ++++-
|
|
||||||
term-utils/agetty.c | 2 +-
|
|
||||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/login-utils/login.1 b/login-utils/login.1
|
|
||||||
index 092213d..e37e5e6 100644
|
|
||||||
--- a/login-utils/login.1
|
|
||||||
+++ b/login-utils/login.1
|
|
||||||
@@ -184,7 +184,10 @@ login failure. The default value is
|
|
||||||
(string)
|
|
||||||
.RS 4
|
|
||||||
The terminal permissions. The default value is
|
|
||||||
-.IR 0600 .
|
|
||||||
+.IR 0600
|
|
||||||
+or
|
|
||||||
+.IR 0620
|
|
||||||
+if tty group is used.
|
|
||||||
.RE
|
|
||||||
.PP
|
|
||||||
.B TTYGROUP
|
|
||||||
diff --git a/term-utils/agetty.c b/term-utils/agetty.c
|
|
||||||
index 7ee252d..17ebfba 100644
|
|
||||||
--- a/term-utils/agetty.c
|
|
||||||
+++ b/term-utils/agetty.c
|
|
||||||
@@ -894,7 +894,7 @@ static void open_tty(char *tty, struct termios *tp, struct options *op)
|
|
||||||
* Linux login(1) will change tty permissions. Use root owner and group
|
|
||||||
* with permission -rw------- for the period between getty and login.
|
|
||||||
*/
|
|
||||||
- if (chown(buf, 0, gid) || chmod(buf, (gid ? 0660 : 0600))) {
|
|
||||||
+ if (chown(buf, 0, gid) || chmod(buf, (gid ? 0620 : 0600))) {
|
|
||||||
if (errno == EROFS)
|
|
||||||
log_warn("%s: %m", buf);
|
|
||||||
else
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -1,139 +0,0 @@
|
|||||||
From c265cc40a8ece740084fbfb3ebd4c1894b3b29b7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Karel Zak <kzak@redhat.com>
|
|
||||||
Date: Thu, 17 Jan 2013 18:48:16 +0100
|
|
||||||
Subject: [PATCH 3/3] cal: don't mix ncurses output functions and printf()
|
|
||||||
|
|
||||||
Fedora 18 (ncurses-libs-5.9-7.20121017, glibc-2.16-28):
|
|
||||||
|
|
||||||
$ cal | cat
|
|
||||||
Actual results:
|
|
||||||
January 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8
|
|
||||||
9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31
|
|
||||||
|
|
||||||
Not sure where is the problem, but it's too fragile to mix two
|
|
||||||
output methods in one code.
|
|
||||||
|
|
||||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=896447
|
|
||||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
|
||||||
---
|
|
||||||
misc-utils/cal.c | 43 +++++++++++++++++++++++++++----------------
|
|
||||||
1 file changed, 27 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/misc-utils/cal.c b/misc-utils/cal.c
|
|
||||||
index 60e85df..0e204b9 100644
|
|
||||||
--- a/misc-utils/cal.c
|
|
||||||
+++ b/misc-utils/cal.c
|
|
||||||
@@ -498,7 +498,7 @@ monthly(int day, int month, int year) {
|
|
||||||
do_monthly(day, month, year, &out);
|
|
||||||
for (i = 0; i < FMT_ST_LINES; i++) {
|
|
||||||
my_putstring(out.s[i]);
|
|
||||||
- putchar('\n');
|
|
||||||
+ my_putstring("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -533,8 +533,11 @@ monthly3(int day, int month, int year) {
|
|
||||||
do_monthly(day, next_month, next_year, &out_next);
|
|
||||||
|
|
||||||
width = (julian ? J_WEEK_LEN : WEEK_LEN) -1;
|
|
||||||
- for (i = 0; i < 2; i++)
|
|
||||||
- printf("%s %s %s\n", out_prev.s[i], out_curm.s[i], out_next.s[i]);
|
|
||||||
+ for (i = 0; i < 2; i++) {
|
|
||||||
+ snprintf(lineout, sizeof(lineout),
|
|
||||||
+ "%s %s %s\n", out_prev.s[i], out_curm.s[i], out_next.s[i]);
|
|
||||||
+ my_putstring(lineout);
|
|
||||||
+ }
|
|
||||||
for (i = 2; i < FMT_ST_LINES; i++) {
|
|
||||||
int w1, w2, w3;
|
|
||||||
w1 = w2 = w3 = width;
|
|
||||||
@@ -562,7 +565,7 @@ j_yearly(int day, int year) {
|
|
||||||
|
|
||||||
snprintf(lineout, sizeof(lineout), "%d", year);
|
|
||||||
center(lineout, J_WEEK_LEN*2 + J_HEAD_SEP - 1, 0);
|
|
||||||
- printf("\n\n");
|
|
||||||
+ my_putstring("\n\n");
|
|
||||||
|
|
||||||
for (i = 0; i < 12; i++)
|
|
||||||
day_array(day, i + 1, year, days[i]);
|
|
||||||
@@ -571,8 +574,10 @@ j_yearly(int day, int year) {
|
|
||||||
for (month = 0; month < 12; month += 2) {
|
|
||||||
center(full_month[month], J_WEEK_LEN-1, J_HEAD_SEP+1);
|
|
||||||
center(full_month[month + 1], J_WEEK_LEN-1, 0);
|
|
||||||
- printf("\n%s%*s %s\n", j_day_headings, J_HEAD_SEP, "",
|
|
||||||
- j_day_headings);
|
|
||||||
+ snprintf(lineout, sizeof(lineout),
|
|
||||||
+ "\n%s%*s %s\n", j_day_headings, J_HEAD_SEP, "",
|
|
||||||
+ j_day_headings);
|
|
||||||
+ my_putstring(lineout);
|
|
||||||
for (row = 0; row < 6; row++) {
|
|
||||||
p = lineout;
|
|
||||||
for (which_cal = 0; which_cal < 2; which_cal++) {
|
|
||||||
@@ -584,10 +589,10 @@ j_yearly(int day, int year) {
|
|
||||||
*p = '\0';
|
|
||||||
trim_trailing_spaces(lineout);
|
|
||||||
my_putstring(lineout);
|
|
||||||
- putchar('\n');
|
|
||||||
+ my_putstring("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- printf("\n");
|
|
||||||
+ my_putstring("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -598,7 +603,7 @@ yearly(int day, int year) {
|
|
||||||
|
|
||||||
snprintf(lineout, sizeof(lineout), "%d", year);
|
|
||||||
center(lineout, WEEK_LEN*3 + HEAD_SEP*2 - 1, 0);
|
|
||||||
- printf("\n\n");
|
|
||||||
+ my_putstring("\n\n");
|
|
||||||
|
|
||||||
for (i = 0; i < 12; i++)
|
|
||||||
day_array(day, i + 1, year, days[i]);
|
|
||||||
@@ -608,8 +613,10 @@ yearly(int day, int year) {
|
|
||||||
center(full_month[month], WEEK_LEN-1, HEAD_SEP+1);
|
|
||||||
center(full_month[month + 1], WEEK_LEN-1, HEAD_SEP+1);
|
|
||||||
center(full_month[month + 2], WEEK_LEN-1, 0);
|
|
||||||
- printf("\n%s%*s %s%*s %s\n", day_headings, HEAD_SEP,
|
|
||||||
- "", day_headings, HEAD_SEP, "", day_headings);
|
|
||||||
+ snprintf(lineout, sizeof(lineout),
|
|
||||||
+ "\n%s%*s %s%*s %s\n", day_headings, HEAD_SEP,
|
|
||||||
+ "", day_headings, HEAD_SEP, "", day_headings);
|
|
||||||
+ my_putstring(lineout);
|
|
||||||
for (row = 0; row < 6; row++) {
|
|
||||||
p = lineout;
|
|
||||||
for (which_cal = 0; which_cal < 3; which_cal++) {
|
|
||||||
@@ -621,10 +628,10 @@ yearly(int day, int year) {
|
|
||||||
*p = '\0';
|
|
||||||
trim_trailing_spaces(lineout);
|
|
||||||
my_putstring(lineout);
|
|
||||||
- putchar('\n');
|
|
||||||
+ my_putstring("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
- putchar('\n');
|
|
||||||
+ my_putstring("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -773,10 +780,14 @@ void
|
|
||||||
center(const char *str, size_t len, int separate)
|
|
||||||
{
|
|
||||||
char lineout[FMT_ST_CHARS];
|
|
||||||
+
|
|
||||||
center_str(str, lineout, ARRAY_SIZE(lineout), len);
|
|
||||||
- fputs(lineout, stdout);
|
|
||||||
- if (separate)
|
|
||||||
- printf("%*s", separate, "");
|
|
||||||
+ my_putstring(lineout);
|
|
||||||
+
|
|
||||||
+ if (separate) {
|
|
||||||
+ snprintf(lineout, sizeof(lineout), "%*s", separate, "");
|
|
||||||
+ my_putstring(lineout);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __attribute__ ((__noreturn__)) usage(FILE * out)
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
|||||||
From 85c24fe2b11cd136d43bbffd983014a3f967c25e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ondrej Oprala <ooprala@redhat.com>
|
|
||||||
Date: Fri, 21 Dec 2012 13:04:04 +0100
|
|
||||||
Subject: [PATCH 2/3] hexdump: do not segfault when iterating over an empty
|
|
||||||
format string
|
|
||||||
|
|
||||||
Signed-off-by: Ondrej Oprala <ooprala@redhat.com>
|
|
||||||
---
|
|
||||||
tests/commands.sh | 1 +
|
|
||||||
tests/expected/hexdump/empty-format | 1 +
|
|
||||||
tests/ts/hexdump/empty-format | 26 ++++++++++++++++++++++++++
|
|
||||||
text-utils/parse.c | 16 +++++++++-------
|
|
||||||
4 files changed, 37 insertions(+), 7 deletions(-)
|
|
||||||
create mode 100644 tests/expected/hexdump/empty-format
|
|
||||||
create mode 100755 tests/ts/hexdump/empty-format
|
|
||||||
|
|
||||||
diff --git a/tests/commands.sh b/tests/commands.sh
|
|
||||||
index db1d4ac..3672095 100644
|
|
||||||
--- a/tests/commands.sh
|
|
||||||
+++ b/tests/commands.sh
|
|
||||||
@@ -62,3 +62,4 @@ TS_CMD_FINDMNT=${TS_CMD_FINDMNT-"$top_builddir/findmnt"}
|
|
||||||
|
|
||||||
TS_CMD_FDISK=${TS_CMD_FDISK-"$top_builddir/fdisk"}
|
|
||||||
|
|
||||||
+TS_CMD_HEXDUMP=${TS_CMD_HEXDUMP-"$top_builddir/hexdump"}
|
|
||||||
diff --git a/tests/expected/hexdump/empty-format b/tests/expected/hexdump/empty-format
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..9d60796
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/expected/hexdump/empty-format
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+11
|
|
||||||
\ No newline at end of file
|
|
||||||
diff --git a/tests/ts/hexdump/empty-format b/tests/ts/hexdump/empty-format
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..4a3e528
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/ts/hexdump/empty-format
|
|
||||||
@@ -0,0 +1,26 @@
|
|
||||||
+#!/bin/bash
|
|
||||||
+
|
|
||||||
+# This file is part of util-linux.
|
|
||||||
+#
|
|
||||||
+# This file is free software; you can redistribute it and/or modify
|
|
||||||
+# it under the terms of the GNU General Public License as published by
|
|
||||||
+# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
+# (at your option) any later version.
|
|
||||||
+#
|
|
||||||
+# This file is distributed in the hope that it will be useful,
|
|
||||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+# GNU General Public License for more details.
|
|
||||||
+#
|
|
||||||
+TS_TOPDIR="$(dirname $0)/../.."
|
|
||||||
+TS_DESC="format-strings"
|
|
||||||
+
|
|
||||||
+. $TS_TOPDIR/functions.sh
|
|
||||||
+ts_init "$*"
|
|
||||||
+
|
|
||||||
+INPUT=$(printf \\1)
|
|
||||||
+$TS_CMD_HEXDUMP -n1 -ve '2 "" "%x"' <<< $INPUT 2>&1 >> $TS_OUTPUT
|
|
||||||
+
|
|
||||||
+$TS_CMD_HEXDUMP -n1 -ve '4 "%x"' -e '2 ""' <<< $INPUT 2>&1 >> $TS_OUTPUT
|
|
||||||
+
|
|
||||||
+ts_finalize
|
|
||||||
diff --git a/text-utils/parse.c b/text-utils/parse.c
|
|
||||||
index 5f1e2bd..bd96961 100644
|
|
||||||
--- a/text-utils/parse.c
|
|
||||||
+++ b/text-utils/parse.c
|
|
||||||
@@ -421,13 +421,15 @@ isint2: switch(fu->bcnt) {
|
|
||||||
!(fu->flags&F_SETREP) && fu->bcnt)
|
|
||||||
fu->reps += (blocksize - fs->bcnt) / fu->bcnt;
|
|
||||||
if (fu->reps > 1) {
|
|
||||||
- for (pr = fu->nextpr;; pr = pr->nextpr)
|
|
||||||
- if (!pr->nextpr)
|
|
||||||
- break;
|
|
||||||
- for (p1 = pr->fmt, p2 = NULL; *p1; ++p1)
|
|
||||||
- p2 = isspace((unsigned char)*p1) ? p1 : NULL;
|
|
||||||
- if (p2)
|
|
||||||
- pr->nospace = p2;
|
|
||||||
+ if (fu->nextpr) {
|
|
||||||
+ for (pr = fu->nextpr; ; pr = pr->nextpr)
|
|
||||||
+ if (!pr->nextpr)
|
|
||||||
+ break;
|
|
||||||
+ for (p1 = pr->fmt, p2 = NULL; *p1; ++p1)
|
|
||||||
+ p2 = isspace((unsigned char)*p1) ? p1 : NULL;
|
|
||||||
+ if (p2)
|
|
||||||
+ pr->nospace = p2;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From d4a276491269b6502c15e0089fba6b616f5c5df8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Goffredo Baroncelli <kreijack@inwind.it>
|
|
||||||
Date: Wed, 9 Jan 2013 22:14:43 +0100
|
|
||||||
Subject: [PATCH] libblkid: add support for btrfs backup superblock
|
|
||||||
|
|
||||||
Btrfs has three superblock. The first one is placed at 64KB, the second one at
|
|
||||||
64MB, the third one at 256GB.
|
|
||||||
|
|
||||||
If the first superblock is valid except that the "magic field" is zeroed, btrfs
|
|
||||||
skips the check of the other superblocks. If the first superblock is fully
|
|
||||||
invalid, btrfs checks for the other superblock.
|
|
||||||
|
|
||||||
So zeroing the first superblock "magic field" at the beginning seems that the
|
|
||||||
filesystem is wiped. But when the first superblock is overwritten (eg by
|
|
||||||
another filesystem), then the other two superblock may be considered valid, and
|
|
||||||
the filesystem may resurrect.
|
|
||||||
|
|
||||||
This patch allow to find and wipe the other btrfs superblocks signature.
|
|
||||||
|
|
||||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
|
||||||
---
|
|
||||||
libblkid/src/superblocks/btrfs.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/libblkid/src/superblocks/btrfs.c b/libblkid/src/superblocks/btrfs.c
|
|
||||||
index 039be42..1bd1df9 100644
|
|
||||||
--- a/libblkid/src/superblocks/btrfs.c
|
|
||||||
+++ b/libblkid/src/superblocks/btrfs.c
|
|
||||||
@@ -87,6 +87,14 @@ const struct blkid_idinfo btrfs_idinfo =
|
|
||||||
.magics =
|
|
||||||
{
|
|
||||||
{ .magic = "_BHRfS_M", .len = 8, .kboff = 64, .sboff = 0x40 },
|
|
||||||
+ { .magic = "_BHRfS_M",
|
|
||||||
+ .len = 8,
|
|
||||||
+ .kboff = 64 * 1024,
|
|
||||||
+ .sboff = 0x40 },
|
|
||||||
+ { .magic = "_BHRfS_M",
|
|
||||||
+ .len = 8,
|
|
||||||
+ .kboff = 256 * 1024 * 1024,
|
|
||||||
+ .sboff = 0x40 },
|
|
||||||
{ NULL }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
--
|
|
||||||
1.7.11.7
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
diff -up util-linux-2.22.2/libblkid/src/blkidP.h.kzak util-linux-2.22.2/libblkid/src/blkidP.h
|
|
||||||
--- util-linux-2.22.2/libblkid/src/blkidP.h.kzak 2012-12-12 21:04:47.902355093 +0100
|
|
||||||
+++ util-linux-2.22.2/libblkid/src/blkidP.h 2013-02-20 10:54:33.885606609 +0100
|
|
||||||
@@ -224,6 +224,9 @@ struct blkid_struct_probe
|
|
||||||
|
|
||||||
/* private per-probing flags */
|
|
||||||
#define BLKID_PROBE_FL_IGNORE_PT (1 << 1) /* ignore partition table */
|
|
||||||
+#define BLKID_PROBE_FL_IGNORE_BACKUP (1 << 2) /* ignore backup superblocks or PT */
|
|
||||||
+
|
|
||||||
+extern int blkid_probe_ignore_backup(blkid_probe pr);
|
|
||||||
|
|
||||||
extern blkid_probe blkid_clone_probe(blkid_probe parent);
|
|
||||||
extern blkid_probe blkid_probe_get_wholedisk_probe(blkid_probe pr);
|
|
||||||
diff -up util-linux-2.22.2/libblkid/src/probe.c.kzak util-linux-2.22.2/libblkid/src/probe.c
|
|
||||||
--- util-linux-2.22.2/libblkid/src/probe.c.kzak 2012-12-12 21:04:47.903355101 +0100
|
|
||||||
+++ util-linux-2.22.2/libblkid/src/probe.c 2013-02-20 11:02:48.525255696 +0100
|
|
||||||
@@ -810,6 +810,7 @@ int blkid_probe_get_idmag(blkid_probe pr
|
|
||||||
static inline void blkid_probe_start(blkid_probe pr)
|
|
||||||
{
|
|
||||||
if (pr) {
|
|
||||||
+ DBG(DEBUG_LOWPROBE, printf("%p: start probe\n", pr));
|
|
||||||
pr->cur_chain = NULL;
|
|
||||||
pr->prob_flags = 0;
|
|
||||||
blkid_probe_set_wiper(pr, 0, 0);
|
|
||||||
@@ -819,6 +820,7 @@ static inline void blkid_probe_start(blk
|
|
||||||
static inline void blkid_probe_end(blkid_probe pr)
|
|
||||||
{
|
|
||||||
if (pr) {
|
|
||||||
+ DBG(DEBUG_LOWPROBE, printf("%p: end probe\n", pr));
|
|
||||||
pr->cur_chain = NULL;
|
|
||||||
pr->prob_flags = 0;
|
|
||||||
blkid_probe_set_wiper(pr, 0, 0);
|
|
||||||
@@ -1057,6 +1059,8 @@ int blkid_do_safeprobe(blkid_probe pr)
|
|
||||||
|
|
||||||
blkid_probe_start(pr);
|
|
||||||
|
|
||||||
+ pr->prob_flags |= BLKID_PROBE_FL_IGNORE_BACKUP;
|
|
||||||
+
|
|
||||||
for (i = 0; i < BLKID_NCHAINS; i++) {
|
|
||||||
struct blkid_chain *chn;
|
|
||||||
|
|
||||||
@@ -1679,3 +1683,7 @@ void blkid_probe_use_wiper(blkid_probe p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+int blkid_probe_ignore_backup(blkid_probe pr)
|
|
||||||
+{
|
|
||||||
+ return pr && (pr->prob_flags & BLKID_PROBE_FL_IGNORE_BACKUP);
|
|
||||||
+}
|
|
||||||
diff -up util-linux-2.22.2/libblkid/src/superblocks/btrfs.c.kzak util-linux-2.22.2/libblkid/src/superblocks/btrfs.c
|
|
||||||
--- util-linux-2.22.2/libblkid/src/superblocks/btrfs.c.kzak 2013-02-20 10:54:03.422381876 +0100
|
|
||||||
+++ util-linux-2.22.2/libblkid/src/superblocks/btrfs.c 2013-02-20 10:54:33.886606616 +0100
|
|
||||||
@@ -63,6 +63,11 @@ static int probe_btrfs(blkid_probe pr, c
|
|
||||||
{
|
|
||||||
struct btrfs_super_block *bfs;
|
|
||||||
|
|
||||||
+ if (mag->kboff > 64 && blkid_probe_ignore_backup(pr)) {
|
|
||||||
+ DBG(DEBUG_LOWPROBE, printf("btrfs: found backup superblock, ignore\n"));
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
bfs = blkid_probe_get_sb(pr, mag, struct btrfs_super_block);
|
|
||||||
if (!bfs)
|
|
||||||
return -1;
|
|
@ -1,165 +0,0 @@
|
|||||||
From 2270b1ad90b394950f4fe215eb2fc1042020cef0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Karel Zak <kzak@redhat.com>
|
|
||||||
Date: Fri, 1 Feb 2013 15:59:58 +0100
|
|
||||||
Subject: [PATCH] libblkid: remove optimization from verify( funrtion
|
|
||||||
|
|
||||||
Now libblkid (the cache based part) tries to probe for the cached
|
|
||||||
filesystem firstly. This optimization is broken, because:
|
|
||||||
|
|
||||||
* new another superblock could be on the device and the original
|
|
||||||
is already obsolete
|
|
||||||
* we still need to probe for partitions and raids
|
|
||||||
* the code was too fragile
|
|
||||||
|
|
||||||
The patch also suggests lsblk --fs in blkid.8 for end users. lsblk
|
|
||||||
read information from used db.
|
|
||||||
|
|
||||||
Reported-by: Andreas Hofmeister <andi@collax.com>
|
|
||||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
|
||||||
---
|
|
||||||
libblkid/src/verify.c | 76 ++++++++-------------------------------------------
|
|
||||||
misc-utils/blkid.8 | 11 ++++++++
|
|
||||||
2 files changed, 22 insertions(+), 65 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/libblkid/src/verify.c b/libblkid/src/verify.c
|
|
||||||
index 4bab4de..0f48c48 100644
|
|
||||||
--- a/libblkid/src/verify.c
|
|
||||||
+++ b/libblkid/src/verify.c
|
|
||||||
@@ -43,26 +43,6 @@ static void blkid_probe_to_tags(blkid_probe pr, blkid_dev dev)
|
|
||||||
blkid_set_tag(dev, name, data, len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * remove obsolete tags
|
|
||||||
- */
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "LABEL"))
|
|
||||||
- blkid_set_tag(dev, "LABEL", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "UUID"))
|
|
||||||
- blkid_set_tag(dev, "UUID", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "PART_ENTRY_UUID"))
|
|
||||||
- blkid_set_tag(dev, "PARTUUID", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "PART_ENTRY_NAME"))
|
|
||||||
- blkid_set_tag(dev, "PARTLABEL", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "TYPE"))
|
|
||||||
- blkid_set_tag(dev, "TYPE", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "SEC_TYPE"))
|
|
||||||
- blkid_set_tag(dev, "SEC_TYPE", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "EXT_JOURNAL")) /* extN */
|
|
||||||
- blkid_set_tag(dev, "EXT_JOURNAL", NULL, 0);
|
|
||||||
- if (!nvals || !blkid_probe_has_value(pr, "MOUNT")) /* ocfs */
|
|
||||||
- blkid_set_tag(dev, "MOUNT", NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -76,9 +56,10 @@ static void blkid_probe_to_tags(blkid_probe pr, blkid_dev dev)
|
|
||||||
*/
|
|
||||||
blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
|
|
||||||
{
|
|
||||||
+ blkid_tag_iterate iter;
|
|
||||||
+ const char *type, *value;
|
|
||||||
struct stat st;
|
|
||||||
time_t diff, now;
|
|
||||||
- char *fltr[2];
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
if (!dev)
|
|
||||||
@@ -155,64 +136,29 @@ blkid_dev blkid_verify(blkid_cache cache, blkid_dev dev)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- blkid_probe_enable_superblocks(cache->probe, TRUE);
|
|
||||||
+ /* remove old cache info */
|
|
||||||
+ iter = blkid_tag_iterate_begin(dev);
|
|
||||||
+ while (blkid_tag_next(iter, &type, &value) == 0)
|
|
||||||
+ blkid_set_tag(dev, type, NULL, 0);
|
|
||||||
+ blkid_tag_iterate_end(iter);
|
|
||||||
|
|
||||||
+ /* enable superblocks probing */
|
|
||||||
+ blkid_probe_enable_superblocks(cache->probe, TRUE);
|
|
||||||
blkid_probe_set_superblocks_flags(cache->probe,
|
|
||||||
BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
|
|
||||||
BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE);
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * If we already know the type, then try that first.
|
|
||||||
- */
|
|
||||||
- if (dev->bid_type) {
|
|
||||||
- blkid_tag_iterate iter;
|
|
||||||
- const char *type, *value;
|
|
||||||
-
|
|
||||||
- fltr[0] = dev->bid_type;
|
|
||||||
- fltr[1] = NULL;
|
|
||||||
-
|
|
||||||
- blkid_probe_filter_superblocks_type(cache->probe,
|
|
||||||
- BLKID_FLTR_ONLYIN, fltr);
|
|
||||||
-
|
|
||||||
- if (blkid_do_probe(cache->probe) == 0) {
|
|
||||||
- /*
|
|
||||||
- * Cool, we found FS type, let's also read PART{UUID,LABEL}
|
|
||||||
- */
|
|
||||||
- blkid_probe_enable_superblocks(cache->probe, FALSE);
|
|
||||||
- blkid_probe_enable_partitions(cache->probe, TRUE);
|
|
||||||
- blkid_probe_set_partitions_flags(cache->probe, BLKID_PARTS_ENTRY_DETAILS);
|
|
||||||
- if (blkid_do_probe(cache->probe) == 0)
|
|
||||||
- goto found_type;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- blkid_probe_enable_superblocks(cache->probe, TRUE);
|
|
||||||
- blkid_probe_invert_superblocks_filter(cache->probe);
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Zap the device filesystem information and try again
|
|
||||||
- */
|
|
||||||
- DBG(DEBUG_PROBE,
|
|
||||||
- printf("previous fs type %s not valid, "
|
|
||||||
- "trying full probe\n", dev->bid_type));
|
|
||||||
- iter = blkid_tag_iterate_begin(dev);
|
|
||||||
- while (blkid_tag_next(iter, &type, &value) == 0)
|
|
||||||
- blkid_set_tag(dev, type, 0, 0);
|
|
||||||
- blkid_tag_iterate_end(iter);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
+ /* enable partitions probing */
|
|
||||||
blkid_probe_enable_partitions(cache->probe, TRUE);
|
|
||||||
blkid_probe_set_partitions_flags(cache->probe, BLKID_PARTS_ENTRY_DETAILS);
|
|
||||||
|
|
||||||
- /*
|
|
||||||
- * Probe for all types.
|
|
||||||
- */
|
|
||||||
+ /* probe */
|
|
||||||
if (blkid_do_safeprobe(cache->probe)) {
|
|
||||||
/* found nothing or error */
|
|
||||||
blkid_free_dev(dev);
|
|
||||||
dev = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-found_type:
|
|
||||||
if (dev) {
|
|
||||||
#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
|
|
||||||
struct timeval tv;
|
|
||||||
diff --git a/misc-utils/blkid.8 b/misc-utils/blkid.8
|
|
||||||
index 2ba1ab4..eb8d716 100644
|
|
||||||
--- a/misc-utils/blkid.8
|
|
||||||
+++ b/misc-utils/blkid.8
|
|
||||||
@@ -64,6 +64,17 @@ library. It can determine the type of content (e.g. filesystem or swap)
|
|
||||||
that a block device holds, and also attributes (tokens, NAME=value pairs)
|
|
||||||
from the content metadata (e.g. LABEL or UUID fields).
|
|
||||||
.PP
|
|
||||||
+Note that
|
|
||||||
+.B blkid
|
|
||||||
+reads information directly from devices and for non-root users
|
|
||||||
+it returns cached unverified information. It's better to use
|
|
||||||
+.B lsblk --fs
|
|
||||||
+to get user-friendly overview about filesystems and devices.
|
|
||||||
+.BR lsblk (8)
|
|
||||||
+is also easy to use in scripts.
|
|
||||||
+.B blkid
|
|
||||||
+is mostly designed for system services and to test libblkid functionality.
|
|
||||||
+.PP
|
|
||||||
.B blkid
|
|
||||||
has two main forms of operation: either searching for a device with a
|
|
||||||
specific NAME=value pair, or displaying NAME=value pairs for one or
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
Summary: A collection of basic system utilities
|
Summary: A collection of basic system utilities
|
||||||
Name: util-linux
|
Name: util-linux
|
||||||
Version: 2.23
|
Version: 2.23
|
||||||
Release: 0.6%{?dist}
|
Release: 0.7%{?dist}
|
||||||
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
URL: http://en.wikipedia.org/wiki/Util-linux
|
URL: http://en.wikipedia.org/wiki/Util-linux
|
||||||
@ -788,6 +788,9 @@ fi
|
|||||||
%{_libdir}/pkgconfig/uuid.pc
|
%{_libdir}/pkgconfig/uuid.pc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Apr 15 2013 Karel Zak <kzak@redhat.com> 2.23-0.7
|
||||||
|
- remove unused patches
|
||||||
|
|
||||||
* Mon Apr 15 2013 Karel Zak <kzak@redhat.com> 2.23-0.6
|
* Mon Apr 15 2013 Karel Zak <kzak@redhat.com> 2.23-0.6
|
||||||
- remove floppy from util-linux
|
- remove floppy from util-linux
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user