mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
delete vol_id and require util-linux-ng's blkid
This commit is contained in:
parent
86d9bf4bec
commit
f07996885d
9
NEWS
9
NEWS
@ -2,6 +2,11 @@ udev 142
|
||||
========
|
||||
Bugfixes.
|
||||
|
||||
The program vol_id is removed from the repository and blkid from the
|
||||
latest util-linux-ng package replaces it. Persisten disk links for
|
||||
label and uuid depend on the util-linux-ng version of blkid now. Older
|
||||
versions can not be used with udev.
|
||||
|
||||
Libudev allows to subscribe to udev events. To prevent unwanted messages
|
||||
to be delivered, and waking up the subscribing process, a filter can be
|
||||
installed, to drop messages inside a kernel socket filter. The filters
|
||||
@ -15,7 +20,9 @@ are expected anymore, and a first stable release should happen soon.
|
||||
|
||||
A too old kernel (2.6.21) or a kernel with CONFIG_SYSFS_DEPRECATED
|
||||
is not supported since while and udevd will log an error message at
|
||||
startup.
|
||||
startup. It should still be able to boot-up, but advanced rules and system
|
||||
services which depend on the information not available in the old sysfs
|
||||
format will fail to work correctly.
|
||||
|
||||
DVB device naming is supplied by the kernel now. In case older kernels
|
||||
need to be supported, the old shell script should be added to a compat
|
||||
|
@ -2,30 +2,3 @@ include $(top_srcdir)/Makefile.am.inc
|
||||
|
||||
SUBDIRS = \
|
||||
lib
|
||||
|
||||
udevhomedir = $(udev_prefix)/lib/udev
|
||||
udevhome_PROGRAMS = \
|
||||
vol_id
|
||||
|
||||
vol_id_SOURCES = \
|
||||
vol_id.c \
|
||||
../../udev/lib/libudev.h \
|
||||
../../udev/lib/libudev.c \
|
||||
../../udev/lib/libudev-list.c \
|
||||
../../udev/lib/libudev-util.c
|
||||
|
||||
vol_id_LDADD = \
|
||||
lib/libvolume_id.la
|
||||
|
||||
dist_man_MANS = \
|
||||
vol_id.8
|
||||
|
||||
EXTRA_DIST = \
|
||||
vol_id.xml
|
||||
|
||||
%.7 %.8 : %.xml
|
||||
$(XSLTPROC) -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
||||
|
||||
MAINTAINERCLEANFILES= \
|
||||
$(dist_man_MANS)
|
||||
|
||||
|
@ -1,66 +0,0 @@
|
||||
vol_id - probe filesystem and read label and uuid
|
||||
|
||||
vol_id will only return with a non-zero exit code if the string asked for,
|
||||
is not empty. All trailing whitespace will be removed, spaces replaced by
|
||||
underscore and slashes ignored.
|
||||
Unmangled values are available in the --export mode as hex-encoded strings
|
||||
in *_ENC= keys.
|
||||
|
||||
$ extras/volume_id/vol_id --export /dev/sda6
|
||||
ID_FS_USAGE=filesystem
|
||||
ID_FS_TYPE=ext3
|
||||
ID_FS_VERSION=1.0
|
||||
ID_FS_UUID=3e999973-00c9-4917-9442-b7633bd95b9e
|
||||
ID_FS_UUID_ENC=3e999973-00c9-4917-9442-b7633bd95b9e
|
||||
ID_FS_LABEL=devel
|
||||
ID_FS_LABEL_ENC=devel
|
||||
|
||||
$ extras/volume_id/vol_id --label /dev/sda6
|
||||
devel
|
||||
|
||||
$ extras/volume_id/vol_id --type /dev/sda6
|
||||
ext3
|
||||
|
||||
|
||||
fstype probe label uuid version
|
||||
--------------------------------------------------
|
||||
linux swap * * * *
|
||||
btrfs * * * -
|
||||
ext * * * *
|
||||
reiserfs jr/3.5/3.6/4 * * * *
|
||||
fat (12, 16, 32) * * * *
|
||||
ntfs * * * *
|
||||
jfs * * * -
|
||||
xfs * * * -
|
||||
hfs (plus, wrapped) * * * -
|
||||
udf * * - -
|
||||
iso9660 * * - -
|
||||
ufs * - - -
|
||||
cramfs * * - -
|
||||
sysv * * - *
|
||||
luks * - * -
|
||||
hpfs * * - -
|
||||
romfs * * - -
|
||||
squashfs * - - -
|
||||
minix * - - *
|
||||
ocfs (1, 2) * * * *
|
||||
vxfs * - - *
|
||||
nss (netware) * - * *
|
||||
gfs, gfs2 * * * -
|
||||
oracleasm * * - -
|
||||
|
||||
Raid members are detected to prevent the probing for a filesystem
|
||||
-----------------------------------------------------------------
|
||||
linux raid (md) * * * *
|
||||
LVM 1 * - - -
|
||||
LVM 2 * - - *
|
||||
ddf * - * *
|
||||
highpoint * - - -
|
||||
isw_raid * - - -
|
||||
lsi_raid * - - -
|
||||
nvidia_raid * - - -
|
||||
promise_raid * - - -
|
||||
silicon_raid * - - -
|
||||
via_raid * - - -
|
||||
jmicron * - - -
|
||||
adaptec * - - -
|
@ -1,328 +0,0 @@
|
||||
/*
|
||||
* vol_id - read filesystem label and uuid
|
||||
*
|
||||
* Copyright (C) 2005-2008 Kay Sievers <kay.sievers@vrfy.org>
|
||||
*
|
||||
* This program 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 program 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <getopt.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <inttypes.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include "../../udev/udev.h"
|
||||
#include "lib/libvolume_id.h"
|
||||
|
||||
#define BLKGETSIZE64 _IOR(0x12,114,size_t)
|
||||
|
||||
static int debug;
|
||||
struct udev *udev_ctx;
|
||||
|
||||
static void log_fn(struct udev *udev, int priority,
|
||||
const char *file, int line, const char *fn,
|
||||
const char *format, va_list args)
|
||||
{
|
||||
if (debug) {
|
||||
fprintf(stderr, "%s: ", fn != NULL ? fn : file);
|
||||
vfprintf(stderr, format, args);
|
||||
} else {
|
||||
vsyslog(priority, format, args);
|
||||
}
|
||||
}
|
||||
|
||||
static void vid_log(int priority, const char *file, int line, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
if (priority > udev_get_log_priority(udev_ctx))
|
||||
return;
|
||||
va_start(args, format);
|
||||
log_fn(udev_ctx, priority, file, line, NULL, format, args);
|
||||
va_end(args);
|
||||
return;
|
||||
}
|
||||
|
||||
static int all_probers(volume_id_probe_fn_t probe_fn,
|
||||
struct volume_id *id, uint64_t off, uint64_t size,
|
||||
void *data)
|
||||
{
|
||||
const char *type;
|
||||
|
||||
if (probe_fn(id, off, size) == 0)
|
||||
if (volume_id_get_type(id, &type))
|
||||
printf("%s\n", type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
static const struct option options[] = {
|
||||
{ "label", no_argument, NULL, 'l' },
|
||||
{ "label-raw", no_argument, NULL, 'L' },
|
||||
{ "uuid", no_argument, NULL, 'u' },
|
||||
{ "type", no_argument, NULL, 't' },
|
||||
{ "export", no_argument, NULL, 'x' },
|
||||
{ "skip-raid", no_argument, NULL, 's' },
|
||||
{ "size", required_argument, NULL, 'S' },
|
||||
{ "probe-all", no_argument, NULL, 'a' },
|
||||
{ "offset", optional_argument, NULL, 'o' },
|
||||
{ "debug", no_argument, NULL, 'd' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
|
||||
enum print_type {
|
||||
PRINT_EXPORT,
|
||||
PRINT_TYPE,
|
||||
PRINT_LABEL,
|
||||
PRINT_UUID,
|
||||
PRINT_LABEL_RAW,
|
||||
} print = PRINT_EXPORT;
|
||||
|
||||
struct volume_id *vid = NULL;
|
||||
char label_safe[256];
|
||||
char label_enc[256];
|
||||
char uuid_safe[256];
|
||||
char uuid_enc[256];
|
||||
char uuid_sub_enc[256];
|
||||
char type_enc[256];
|
||||
char type_version_enc[256];
|
||||
uint64_t size = 0;
|
||||
int skip_raid = 0;
|
||||
int probe_all = 0;
|
||||
uint64_t offset = 0;
|
||||
const char *node;
|
||||
int fd;
|
||||
const char *label, *uuid, *uuid_sub, *type, *type_version, *usage;
|
||||
int retval;
|
||||
int rc = 0;
|
||||
|
||||
udev_ctx = udev_new();
|
||||
if (udev_ctx == NULL)
|
||||
goto exit;
|
||||
logging_init("vol_id");
|
||||
udev_set_log_fn(udev_ctx, log_fn);
|
||||
|
||||
/* hook in our debug into libvolume_id */
|
||||
volume_id_log_fn = vid_log;
|
||||
|
||||
while (1) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "lLutxsS:aodh", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
case 'd':
|
||||
debug = 1;
|
||||
if (udev_get_log_priority(udev_ctx) < LOG_INFO)
|
||||
udev_set_log_priority(udev_ctx, LOG_INFO);
|
||||
break;
|
||||
case 'l':
|
||||
print = PRINT_LABEL;
|
||||
break;
|
||||
case 'L':
|
||||
print = PRINT_LABEL_RAW;
|
||||
break;
|
||||
case 'u':
|
||||
print = PRINT_UUID;
|
||||
break;
|
||||
case 't':
|
||||
print = PRINT_TYPE;
|
||||
break;
|
||||
case 'x':
|
||||
print = PRINT_EXPORT;
|
||||
break;
|
||||
case 's':
|
||||
skip_raid = 1;
|
||||
break;
|
||||
case 'a':
|
||||
probe_all = 1;
|
||||
break;
|
||||
case 'S':
|
||||
if (optarg[0] != '\0')
|
||||
size = strtoull(optarg, NULL, 0);
|
||||
break;
|
||||
case 'o':
|
||||
if (optarg[0] != '\0')
|
||||
offset = strtoull(optarg, NULL, 0);
|
||||
break;
|
||||
case 'h':
|
||||
printf("Usage: vol_id [options] <device>\n"
|
||||
" --export export key/value pairs\n"
|
||||
" --type filesystem type\n"
|
||||
" --label filesystem label\n"
|
||||
" --label-raw raw label\n"
|
||||
" --uuid filesystem uuid\n"
|
||||
" --skip-raid don't probe for raid\n"
|
||||
" --probe-all find possibly conflicting signatures\n"
|
||||
" --offset=<bytes> probe at the given offset\n"
|
||||
" --size=<bytes> overwrite device size\n"
|
||||
" --debug print debug output to stderr\n"
|
||||
" --help\n\n");
|
||||
goto exit;
|
||||
default:
|
||||
retval = 1;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
|
||||
node = argv[optind];
|
||||
if (!node) {
|
||||
err(udev_ctx, "no device\n");
|
||||
fprintf(stderr, "no device\n");
|
||||
rc = 1;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
fd = open(node, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, "%s: error opening volume\n", node);
|
||||
rc = 2;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
vid = volume_id_open_fd(fd);
|
||||
if (vid == NULL) {
|
||||
rc = 2;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (size == 0) {
|
||||
if (ioctl(fd, BLKGETSIZE64, &size) == 0) {
|
||||
info(udev_ctx, "BLKGETSIZE64=%" PRIu64 " (%" PRIu64 "GB)\n", size, size >> 30);
|
||||
} else {
|
||||
struct stat statbuf;
|
||||
|
||||
if (fstat(fd, &statbuf) == 0 && S_ISREG(statbuf.st_mode))
|
||||
size = statbuf.st_size;
|
||||
else
|
||||
size = 0;
|
||||
info(udev_ctx, "stat=%" PRIu64 " (%" PRIu64 "GB)\n", size, size >> 30);
|
||||
}
|
||||
}
|
||||
|
||||
/* try to drop all privileges before reading disk content */
|
||||
if (getuid() == 0) {
|
||||
struct passwd *pw;
|
||||
|
||||
pw = getpwnam("nobody");
|
||||
if (pw != NULL && pw->pw_uid > 0 && pw->pw_gid > 0) {
|
||||
if (setgroups(0, NULL) != 0 ||
|
||||
setgid(pw->pw_gid) != 0 ||
|
||||
setuid(pw->pw_uid) != 0)
|
||||
info(udev_ctx, "unable to drop privileges: %s\n\n", strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
if (probe_all) {
|
||||
volume_id_all_probers(all_probers, vid, offset, size, NULL);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (skip_raid)
|
||||
retval = volume_id_probe_filesystem(vid, offset, size);
|
||||
else
|
||||
retval = volume_id_probe_all(vid, offset, size);
|
||||
if (retval != 0) {
|
||||
fprintf(stderr, "unknown or non-unique volume type "
|
||||
"(--probe-all lists possibly conflicting types)\n");
|
||||
rc = 4;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (!volume_id_get_label(vid, &label) ||
|
||||
!volume_id_get_usage(vid, &usage) ||
|
||||
!volume_id_get_type(vid, &type) ||
|
||||
!volume_id_get_type_version(vid, &type_version) ||
|
||||
!volume_id_get_uuid(vid, &uuid) ||
|
||||
!volume_id_get_uuid_sub(vid, &uuid_sub)) {
|
||||
rc = 4;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
udev_util_replace_whitespace(label, label_safe, sizeof(label_safe));
|
||||
udev_util_replace_chars(label_safe, UDEV_ALLOWED_CHARS_INPUT);
|
||||
volume_id_encode_string(label, label_enc, sizeof(label_enc));
|
||||
|
||||
udev_util_replace_whitespace(uuid, uuid_safe, sizeof(uuid_safe));
|
||||
udev_util_replace_chars(uuid_safe, UDEV_ALLOWED_CHARS_INPUT);
|
||||
volume_id_encode_string(uuid, uuid_enc, sizeof(uuid_enc));
|
||||
|
||||
volume_id_encode_string(uuid_sub, uuid_sub_enc, sizeof(uuid_sub_enc));
|
||||
|
||||
volume_id_encode_string(type, type_enc, sizeof(type_enc));
|
||||
volume_id_encode_string(type_version, type_version_enc, sizeof(type_version_enc));
|
||||
|
||||
switch (print) {
|
||||
case PRINT_EXPORT:
|
||||
printf("ID_FS_USAGE=%s\n", usage);
|
||||
printf("ID_FS_TYPE=%s\n", type_enc);
|
||||
printf("ID_FS_VERSION=%s\n", type_version_enc);
|
||||
printf("ID_FS_UUID=%s\n", uuid_safe);
|
||||
printf("ID_FS_UUID_ENC=%s\n", uuid_enc);
|
||||
if (uuid_sub_enc[0] != '\0')
|
||||
printf("ID_FS_UUID_SUB_ENC=%s\n", uuid_sub_enc);
|
||||
printf("ID_FS_LABEL=%s\n", label_safe);
|
||||
printf("ID_FS_LABEL_ENC=%s\n", label_enc);
|
||||
break;
|
||||
case PRINT_TYPE:
|
||||
printf("%s\n", type);
|
||||
break;
|
||||
case PRINT_LABEL:
|
||||
if (label_safe[0] == '\0' || strcmp(usage, "raid") == 0) {
|
||||
rc = 3;
|
||||
goto exit;
|
||||
}
|
||||
printf("%s\n", label_safe);
|
||||
break;
|
||||
case PRINT_UUID:
|
||||
if (uuid_enc[0] == '\0' || strcmp(usage, "raid") == 0) {
|
||||
rc = 4;
|
||||
goto exit;
|
||||
}
|
||||
printf("%s\n", uuid_enc);
|
||||
break;
|
||||
case PRINT_LABEL_RAW:
|
||||
if (label[0] == '\0' || strcmp(usage, "raid") == 0) {
|
||||
rc = 3;
|
||||
goto exit;
|
||||
}
|
||||
printf("%s\n", label);
|
||||
break;
|
||||
}
|
||||
|
||||
exit:
|
||||
if (vid != NULL)
|
||||
volume_id_close(vid);
|
||||
udev_unref(udev_ctx);
|
||||
logging_close();
|
||||
return rc;
|
||||
}
|
@ -1,151 +0,0 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
|
||||
<article>
|
||||
<section>
|
||||
<title>vol_id</title>
|
||||
<refentry>
|
||||
<refentryinfo>
|
||||
<title>vol_id</title>
|
||||
<date>March 2006</date>
|
||||
<productname>volume_id</productname>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>vol_id</refentrytitle>
|
||||
<manvolnum>8</manvolnum>
|
||||
<refmiscinfo class="version"></refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>vol_id</refname><refpurpose>probe filesystem type and read label and uuid</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>vol_id</command>
|
||||
<arg><option>--export</option></arg>
|
||||
<arg><option>--type</option></arg>
|
||||
<arg><option>--label</option></arg>
|
||||
<arg><option>--label-raw</option></arg>
|
||||
<arg><option>--uuid</option></arg>
|
||||
<arg><option>--skip-raid</option></arg>
|
||||
<arg><option>--probe-all</option></arg>
|
||||
<arg><option>--offset=<replaceable>bytes</replaceable></option></arg>
|
||||
<arg><option>--debug</option></arg>
|
||||
<arg><option>--help</option></arg>
|
||||
<arg><replaceable>device</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1><title>DESCRIPTION</title>
|
||||
<para><command>vol_id</command> is usually called from a udev rule, to
|
||||
provide udev with the filesystem type, the label and the uuid of a
|
||||
volume. It supports most of the common filesystem formats and detects
|
||||
various raid setups to prevent the recognition of raid members
|
||||
as a volume with a filesystem.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1><title>OPTIONS</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>--export</option></term>
|
||||
<listitem>
|
||||
<para>Print all values in key/value format to import them into the
|
||||
environment.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--type</option></term>
|
||||
<listitem>
|
||||
<para>Print the filesystem type.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--label</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print the safe version of volume label suitable for
|
||||
use as filename.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--label-raw</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Print the raw volume label.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--uuid</option></term>
|
||||
<listitem>
|
||||
<para>Print the uuid of a volume.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--skip-raid</option></term>
|
||||
<listitem>
|
||||
<para>Skip detection of raid metadata.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--probe-all</option></term>
|
||||
<listitem>
|
||||
<para>Probe for all types and print all matches.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--offset=<replaceable>bytes</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Start probing at the given offset, instead of the beginning
|
||||
of the volume. The offset value is specified in bytes.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--debug</option></term>
|
||||
<listitem>
|
||||
<para>Print debug messages to stderr.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print usage.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1><title>ENVIRONMENT</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>UDEV_LOG</option></term>
|
||||
<listitem>
|
||||
<para>Set the syslog priority.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1><title>EXIT STATUS</title>
|
||||
<para><command>vol_id</command> will only return successful if the
|
||||
value asked for is not empty. All trailing whitespace will be removed,
|
||||
spaces replaced by underscore and slashes ignored.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1><title>AUTHOR</title>
|
||||
<para>Written by Kay Sievers <email>kay.sievers@vrfy.org</email></para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>SEE ALSO</title>
|
||||
<para><citerefentry>
|
||||
<refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
|
||||
</citerefentry></para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
</section>
|
||||
</article>
|
@ -27,7 +27,7 @@ ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n"
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n"
|
||||
|
||||
IMPORT{program}="vol_id --export $tempnode"
|
||||
IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
OPTIONS+="link_priority=100"
|
||||
OPTIONS+="watch"
|
||||
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
|
||||
|
@ -55,10 +55,10 @@ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PA
|
||||
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
|
||||
|
||||
# probe filesystem metadata of optical drives which have a media inserted
|
||||
KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
|
||||
# probe filesystem metadata of disks
|
||||
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"
|
||||
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
|
||||
# watch for future changes
|
||||
KERNEL!="sr*", OPTIONS+="watch"
|
||||
|
@ -14,7 +14,7 @@ ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}", OPTIONS+="strin
|
||||
ENV{DM_STATE}=="SUSPENDED", GOTO="device_mapper_end"
|
||||
ENV{DM_TARGET_TYPES}=="|*error*", GOTO="device_mapper_end"
|
||||
|
||||
IMPORT{program}="vol_id --export $tempnode"
|
||||
IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
OPTIONS+="link_priority=-100"
|
||||
OPTIONS+="watch"
|
||||
ENV{DM_TARGET_TYPES}=="*snapshot-origin*", OPTIONS+="link_priority=-90"
|
||||
|
Loading…
Reference in New Issue
Block a user