Karel Zak [Fri, 19 Mar 2010 14:56:27 +0000 (15:56 +0100)]
fdisk: fix -b <sectorsize>
The old fdisk (<2.17) does not differentiate between logical and
physical sector size, it uses the <sectorsize> for everything.
Now, we have logical and physical sectors size, but the -b option
changes the logical size only. The second bug is that "fdisk -b <sz>"
does not read topology information (it means that all I/O limits and
physical sector size are 512 (default).
The backwardly compatible bug fix is to override both sizes, logical
and physical if "-b" is used.
In future we can add a special option for physical size only.
Karel Zak [Wed, 17 Mar 2010 13:49:14 +0000 (14:49 +0100)]
libblkid: add microsecond resolution for cache entries
The libblkid library uses stat.st_mtine to detect changes on the
device. The last update time of of the device in the cache is stored
as TIME= tag in the /etc/blkid.tab file.
Linux since 2.5.48 supports nanosecond resolution and more precise
time is available in the stat.st_mtim timespec struct.
This patch add microsecond precision to TIME= tag in the cache file,
old format:
TIME="<sec>"
the new format:
TIME="<sec>.<usec>"
This change is backwardly compatible.
Now, the blkid_verify() function checks stat.st_mtime and
stat.st_mtim.tv_nsec/1000.
Karel Zak [Mon, 15 Mar 2010 16:10:35 +0000 (17:10 +0100)]
mount: automatically detect and loop-mount regular files
This patch allows to automatically create a loop device from a regular
file if a filesystem type is not specified, for example:
mount /path/disk.img /mnt
If the filesystem type is specified than "-o loop" is required.
Note that there is not a restriction (on kernel side) that prevents
regular file as a mount(2) source argument. A filesystem that is able
to mount regular files could be implemented.
Based on a patch from Adam Jackson <ajax@redhat.com>.
Karel Zak [Mon, 15 Mar 2010 12:46:43 +0000 (13:46 +0100)]
mount: report ambivalent FS detection, improve brute force detection
The ambivalent probing result should be properly reported and user
should be informed that the problem is possible to bypass by "-t
<type>" or resolved by wipefs(8).
The mount(8) command uses a brute force stage (calls mount(2) for all
/{proc,etc}/fylesystems) if there is not any other way how to detect
the filesystem type. The brute force stage should not be restricted by
libblkid. It's possible that libblkid is not able to detect slightly
corrupted filesystem, but kernel is able to mount such filesystem.
Note that the brute force stage should not be used if libblkid returns
ambivalent probing result. In this case user's intervention is required
(e.g. mount -t <type>).
Reported-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Karel Zak <kzak@redhat.com>
Colin Watson [Sat, 13 Mar 2010 00:46:35 +0000 (00:46 +0000)]
libblkid: fix infinite loop when probe chain bails out early
The superblocks probe bails out early with no results in some cases. If
this happens, blkid_do_probe needs to go to the next chain, rather than
entering an infinite loop calling superblocks_probe over and over again.
[kzak@redhat.com: - print debug message always when leaving
superblocks_probe()]
Addresses: https://bugs.launchpad.net/bugs/528073 Signed-off-by: Colin Watson <cjwatson@canonical.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Andreas Dilger [Thu, 11 Mar 2010 14:16:46 +0000 (15:16 +0100)]
libblkid: improve ZFS detection and add LABEL and UUID extraction
Improve ZFS uberblock detection to loop over multiple uberblocks,
and detect at least 4 magic values, to avoid random collisions.
It doesn't yet probe the VDEV LABEL at the end of the device, though
it wouldn't be too hard to add it at this point if needed.
Add extraction of the pool name (as LABEL), the VDEV (block device)
guid as UUID_SUB, and pool_guid (volume) as UUID from the nvlist in
the VDEV LABEL. Do simple sanity checking on the nvlist data values
to avoid overflowing the buffer if they are corrupt in any way.
[kzak@redhat.com: - use %PRIu64 instead %llu]
Signed-off-by: Andreas Dilger <adilger@sun.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Miklos Szeredi [Mon, 8 Mar 2010 18:01:13 +0000 (19:01 +0100)]
umount: add --fake option to umount(8)
Add --fake option to umount(8), which omits calling the actual umount
syscall (and the loop device deletion) but modifies /etc/mtab. This
is similar to the -f or --fake option to mount(8).
This would allow some simplifications in fuse by allowing it to call
the umount syscall and letting umount(8) just update mtab.
[kzak@redhat.com: - initialize 'res' variable in umount_one() ]
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Karel Zak <kzak@redhat.com>
Mike Frysinger [Sun, 7 Mar 2010 05:16:41 +0000 (00:16 -0500)]
mount: properly ignore comments in /etc/filesystems
The POSIX spec for sscanf() says that whitespace may be matched against 0
bytes which means doing sscanf(" %s") against "#foo" will result in a
match. You can see this behavior by using the verbose options on a garbage
file:
...
mount: you didn't specify a filesystem type for /dev/null
I will try all types mentioned in /etc/filesystems or /proc/filesystems
Trying #
mount: mount(2) syscall: source: "/dev/null", target: "/", filesystemtype: "#", mountflags: -1058209792, data: (null)
Trying #vfat
mount: mount(2) syscall: source: "/dev/null", target: "/", filesystemtype: "#vfat", mountflags: -1058209792, data: (null)
...
Reported-by: Dave Barton <dave.barton@comodo.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Karel Zak [Wed, 10 Mar 2010 22:08:26 +0000 (23:08 +0100)]
swapon: remove " (deleted)" from filenames from /proc/swaps
The filenames in /proc/swaps are generated by seq_path() and this
function uses __d_path() from fs/dcache.c. The filename could
generated with " (deleted)" suffix. We need real filenames without
the suffix.
Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=562403 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Wed, 3 Mar 2010 12:12:02 +0000 (13:12 +0100)]
libblkid: support alignment_offset=-1
Unfortunately, Linux kernel uses "signed int" for alignment_offset and
the offset could be -1 for devices with undefined alignment (if no
compatible sizes and alignments exist for stacked devices).
There is no way how libblkid caller can respond to the value -1, so
we are going to hide this corner case...
TODO: maybe we can export an extra boolean value 'misaligned' rather
then complete hide this problem. We will see...
Summary of changes from v2.5.42 to v2.5.43
[PATCH] removes posix option of fat (3/5)
This removes the posix option of vfat. The current posix options works
only as an alias of name_check=s.
Henne Vogelsang [Mon, 1 Mar 2010 10:35:54 +0000 (11:35 +0100)]
lscpu: fix cpuid opcode detection
Fixes commit c9239f23acdc8b50f8bcbfadf967c6a490fd4693. The author
didn't care for matching constraints when resorting the register
constraints. The eax register (with the cpuid opcode) is now in
operand 1, not zero anymore.
Signed-off-by: Henne Vogelsang <hvogel@opensuse.org>
Tilman Schmidt [Mon, 1 Mar 2010 09:45:47 +0000 (10:45 +0100)]
ldattach: add --iflag command line option
Add a command line option '-i' / '--iflag' for setting or clearing
input flags on the serial device before attaching the line discipline.
[kzak@redhat.com: - use generic functions for work with iflags table
- add list of iflags to usage/help output
- move iflags parsing to separate function]
Karel Zak [Fri, 19 Feb 2010 13:54:25 +0000 (14:54 +0100)]
libblkid: improve Sun VTOC
It seems that for example GNU Parted is able to generate Sun VTOC with
empty sanity, version and nparts fields. But there is still useful
info about partition flags in such VTOC.
This change makes libblkid Sun PT parser compatible with Sun PT
parser in Linux kernel.
Andreas Dilger [Wed, 17 Feb 2010 09:21:27 +0000 (10:21 +0100)]
libblkid: fix ZSF detection
Fix the ZFS device detection by looking at multiple uberblocks to see
if any are present, rather than looking for the ZFS boot block which
is not always present.
There may be up to 128 uberblocks, but the first 4 are not written to
disk on a newly-formatted filesystem so check several of them at
different offsets within the uberblock array.
[kzak@redhat.com: - port e2fsprogs patch to util-linux-ng]
Signed-off-by: Andreas Dilger <adilger@sun.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Mon, 15 Feb 2010 14:55:22 +0000 (15:55 +0100)]
fdisk: use 1MiB offset and grain always when possible
It would be nice to minimize dependence between the disk layout and
disk topology. We have to follow disk topology for alignment_offset
and huge (> 1MiB) I/O sizes only. For all others disks we can use 1MiB
grain and 1MiB offset.
Reported-by: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Fri, 12 Feb 2010 09:21:05 +0000 (10:21 +0100)]
build-sys: remove duplicate #includes
$ make checkincludes
fsck/fsck.c: errno.h is included more than once.
lib/canonicalize.c: string.h is included more than once.
shlibs/blkid/src/blkidP.h: stdio.h is included more than once.
shlibs/blkid/src/devname.c: string.h is included more than once.
shlibs/blkid/src/devno.c: string.h is included more than once.
Karel Zak [Thu, 4 Feb 2010 14:02:16 +0000 (15:02 +0100)]
fdisk: cleanup warnings
* don't print:
The number of cylinders for this disk is set to 12161.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
we really don't care about MS-DOS or extremely old LILO.
* inform users that DOS-compatible mode is bad and deprecated thing
(It's difficult to use 2048 sectors grain or 4KiB sectors or
alignment_offset in DOS mode where all is based on cylinders...)
* don't check for cylinders boundary in non-DOS mode
Karel Zak [Tue, 9 Feb 2010 10:06:42 +0000 (11:06 +0100)]
fdisk: fix default first sector
The previous release 2.17 introduces aligned defaults for the first
and last sectors on the partition. Unfortunately, there is endless
loop when the code looks for first unused aligned sector.
Karel Zak [Mon, 8 Feb 2010 16:45:42 +0000 (17:45 +0100)]
fdisk: don't check alignment_offset against geometry
The alignment_offset is compensation for DOS compatible partitioning.
It usually matches with disk geometry (e.g. 63 sectors), but the
offset is also exported from phy.disks to RAIDs there the geometry
don't match with the offset. So.. don't print unnecessary warning.
Karel Zak [Thu, 4 Feb 2010 21:19:38 +0000 (22:19 +0100)]
libblkid: don't return error on empty files
Currently, the library does not allow to initialize blkid_probe if the
file (or block device) is empty. The empty file is reported as an
error. That's wrong. The empty file should be interpreted as a file
without any FS or PT. It means that
blkid_do_{probe,safeprobe,fullprobe}()
have to return 1 ("nothing").
Reported-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Karel Zak <kzak@redhat.com>
Adrian Knoth [Tue, 2 Feb 2010 16:18:29 +0000 (17:18 +0100)]
chrt: add support for SCHED_RESET_ON_FORK
From 9262c9832134f8a33ac2ea2854dc6d20acc712d1 Mon Sep 17 00:00:00 2001
From: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Date: Tue, 2 Feb 2010 16:57:23 +0100
Subject: [PATCH] Add support for SCHED_RESET_ON_FORK to chrt
SCHED_RESET_ON_FORK has been added in 2.6.31. If a thread has this flag
set, chrt reports "unknown" policy, which is confusing.
The patch adds support for this new flag. It will (can) only be applied
to SCHED_FIFO or SCHED_RR, so there's no need to catch the other
scheduling policies.
Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Karel Zak [Tue, 2 Feb 2010 15:01:28 +0000 (16:01 +0100)]
libblkid: minor fixes in befs.c
The library does not reset the probing result (e.g. LABEL, VERSION)
when the probing function failed (return value != 0). We have to be
absolutely sure that the FS has been properly detected before we set
LABEL or VERSION or so.
Jeroen Oortwijn [Fri, 29 Jan 2010 22:20:49 +0000 (23:20 +0100)]
libblkid: Add probing function for BeFS
Add probing function for the Be File System to libblkid. It sets LABEL,
VERSION and UUID. But UUID is only set if the be:volume_id attribute is
found in the small_data area of the i-node of the root directory.
[kzak@redhat.com: - add .minsz = 1024*1440 to avoid BeFS probing on
very small devices]
Signed-off-by: Jeroen Oortwijn <oortwijn@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
Mike Frysinger [Mon, 25 Jan 2010 03:36:55 +0000 (22:36 -0500)]
fsck/mkfs/mount: unify default search paths for helpers
Rather than each fs util having its own search policy, unify the paths in
configure and allow them to be tweaked by downstream. In the process,
drop the /etc paths as no one has ever really used these.
[kzak@redhat.com: - backport to autoconf < 2.64
(remove AS_{SET,IF,CASE,APPEND} macros)]
Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Mon, 1 Feb 2010 13:23:55 +0000 (14:23 +0100)]
libblkid: add blkid_probe_all_removable()
The libblkid probing is based on devices from /proc/partitions by
default. This file usually does not contain removable devices (e.g.
CDROMs) and this kind of devices are invisible for libblkid.
The blkid_probe_all_removable() function adds removable block devices
to blkid cache. The probing is based on information from the /sys
directory. The devices which were detected by this function won't be
written to blkid.tab cache file.
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=533874 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Thu, 28 Jan 2010 18:42:04 +0000 (19:42 +0100)]
fdisk: use optimal_io_size
* rename the minimum_io_size variable to io_size
* use blkid_topology_get_optimal_io_size() for io_size initialization
* use blkid_topology_get_minimum_io_size() as a fallback solution for
io_size initialization
Karel Zak [Thu, 28 Jan 2010 15:25:52 +0000 (16:25 +0100)]
login: check that after tty reopen we still work with a terminal
* the login code assumes that stdin is a terminal, it's better to
check (by isatty()) that after tty reopen we still have a terminal
* this patch also removes very old obscure fallback for situations where
ttyname() returns nothing (then ttyn = "/dev/tty??"). I guess that the
fake string was originally for utmp records or so. Currently (in last 10
years...) code requires that the tty name is a real open-able file.
It means the fake tty name is completely useless.
Reported-by: Yann Droneaud <yann@droneaud.fr> Signed-off-by: Karel Zak <kzak@redhat.com>