<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.linux.hotplug.devel">
    <title>gmane.linux.hotplug.devel</title>
    <link>http://blog.gmane.org/gmane.linux.hotplug.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13145"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13139"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13129"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13126"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13124"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13123"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13117"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13116"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13114"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13112"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13110"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13108"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13104"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13103"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13095"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13094"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13091"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13087"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13086"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.hotplug.devel/13082"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13145">
    <title>[ANNOUNCE] udev 130 release</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13145</link>
    <description>Here comes a new udev version. Thanks to all who have contributed to
this release.

The tarball can be found here:
 ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/

The development repository can be found here:
 http://www.kernel.org/git/?p=linux/hotplug/udev.git;a=summary

The ChangeLog can be found here:
 http://www.kernel.org/git/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=ChangeLog

udev 130
========
Bugfixes.

Kernel devices and device nodes are connected now by reverse indices in
/sys and /dev. A device number retrieved by a stat() or similar, the
kernel device directory can be found by looking up:
  /sys/dev/{block,char}/&lt;maj&gt;:&lt;min&gt;
and the device node of the same device by looking up:
  /dev/{block,char}/&lt;maj&gt;:&lt;min&gt;
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Kay Sievers</dc:creator>
    <dc:date>2008-10-07T13:11:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13139">
    <title>udev 129 says it supports linux 2.6.19 but prints a warning</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13139</link>
    <description>I just updated udev to 129 and got this,
  udev: deprecated sysfs layout (CONFIG_SYSFS_DEPRECATED) is unsupported
However, I have no such option in my kernel config (2.6.19). I assume this
means 2.6.19 will soon not be supported in udev. It would perhaps be nice
if the message said which kernel version would be required after the
deprecation, and how far in the future this will happen?

</description>
    <dc:creator>Mikael Magnusson</dc:creator>
    <dc:date>2008-10-03T20:33:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13129">
    <title>udev doesn't detect ddf-format raid array</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13129</link>
    <description>Hi!

I have an adaptec hostraid controller (fakeraid) with 2 drives connected in a 
RAID1 array (metadata is in DDF format) which is nicely detected and enabled 
by dmraid, there is no problem with it after it's enabled.

Recently debian's dmraid-booter has switched to use udev. But udev does not 
detect my drives as raid type, ID_FS_USAGE is missing from the drive info (it 
should be "raid"), so the result is that dmraid does not called at boot. Also 
vol_id sees the partitions as normal partitions.

I've recognised that one of my disks has a HPA, the other hasn't. I'm not sure 
if this has any effect, but because of this, the DDF1-headers are not at the 
same position on the 2 drives.

Below are some outputs. The last one is a 'dmraid -n' output, and what is 
strange for me at first sight is that both drives has 2 DDF1-headers. Is this 
normal? Or do you think I should try to rebuild the raid array with the bios 
utility (maybe after some bios upgrade)? Or is this rather an udev problem?

Thanks,
Peter

$ udevinfo --query=all --name=sda
P: /block/sda
N: sda
S: disk/by-id/ata-SAMSUNG_SP2004C_S07GJ1LYB11332
S: disk/by-id/scsi-SATA_SAMSUNG_SP2004CS07GJ1LYB11332
S: disk/by-path/pci-0000:03:00.0-scsi-0:0:0:0
E: ID_VENDOR=ATA
E: ID_MODEL=SAMSUNG_SP2004C
E: ID_REVISION=VM10
E: ID_SERIAL=SATA_SAMSUNG_SP2004CS07GJ1LYB11332
E: ID_SERIAL_SHORT=S07GJ1LYB11332
E: ID_TYPE=disk
E: ID_BUS=scsi
E: ID_ATA_COMPAT=SAMSUNG_SP2004C_S07GJ1LYB11332
E: ID_PATH=pci-0000:03:00.0-scsi-0:0:0:0

$ udevinfo --query=all --name=sdb
P: /block/sdb
N: sdb
S: disk/by-id/ata-SAMSUNG_SP2004C_S07GJ1LYB11326
S: disk/by-id/scsi-SATA_SAMSUNG_SP2004CS07GJ1LYB11326
S: disk/by-path/pci-0000:03:00.0-scsi-1:0:0:0
E: ID_VENDOR=ATA
E: ID_MODEL=SAMSUNG_SP2004C
E: ID_REVISION=VM10
E: ID_SERIAL=SATA_SAMSUNG_SP2004CS07GJ1LYB11326
E: ID_SERIAL_SHORT=S07GJ1LYB11326
E: ID_TYPE=disk
E: ID_BUS=scsi
E: ID_ATA_COMPAT=SAMSUNG_SP2004C_S07GJ1LYB11326
E: ID_PATH=pci-0000:03:00.0-scsi-1:0:0:0

# vol_id /dev/sda
/dev/sda: unknown volume type

# vol_id /dev/sdb
/dev/sdb: unknown volume type

# vol_id /dev/sda2
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=db631065-7ca8-45fc-bf60-a9259a732dec
ID_FS_UUID_ENC=db631065-7ca8-45fc-bf60-a9259a732dec
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=

# vol_id /dev/sdb2
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=db631065-7ca8-45fc-bf60-a9259a732dec
ID_FS_UUID_ENC=db631065-7ca8-45fc-bf60-a9259a732dec
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=

dmesg:
[    3.676575] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 0)
[    3.676504] ata1.00: HPA detected: current 390719855, native 390721968  &lt;==
[    3.676504] ata1.00: ATA-7: SAMSUNG SP2004C, VM100-33, max UDMA7
[    3.676504] ata1.00: 390719855 sectors, multi 0: LBA48 NCQ (depth 31/32)
[    3.683147] ata1.00: configured for UDMA/100
[    6.244512] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 0)
[    6.247775] ata2.00: ATA-7: SAMSUNG SP2004C, VM100-33, max UDMA7
[    6.247817] ata2.00: 390721968 sectors, multi 0: LBA48 NCQ (depth 31/32)
[    6.559336] ata2.00: configured for UDMA/100
[    6.559336] scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG SP2004C  VM10 
PQ: 0 ANSI: 5
[    6.559336] scsi 1:0:0:0: Direct-Access     ATA      SAMSUNG SP2004C  VM10 
PQ: 0 ANSI: 5

# dmraid -r
/dev/sdb: ddf1, ".ddf1_disks", GROUP, ok, 390361088 sectors, data&lt; at &gt; 0
/dev/sda: ddf1, ".ddf1_disks", GROUP, ok, 390361088 sectors, data&lt; at &gt; 0

# dmraid -s
*** Group superset .ddf1_disks
--&gt; Active Subset
name   : ddf1_system
size   : 390361088
stride : 128
type   : mirror
status : ok
subsets: 0
devs   : 2
spares : 0

# dmraid -n
/dev/sdb (ddf1):
DDF1 anchor at 390721967 with tables in little-endian format.
DDF1 Header at 0x875e760
0x000 signature:        0xDE11DE11
0x004 crc:              0xD1DB18B7
0x008 guid:             ".. L..B... L8.!L(.!L...." [a8 fd 20 4c 95 10 42 02 a8 
fd 20 4c 38 09 21 4c 28 15 21 4c ff ff ff ff]
0x020 rev:              "02.00.00" [30 32 2e 30 30 2e 30 30]
0x028 seqnum:           -1
0x02c timestamp:        0xFFFFFFFF
0x030 open:             0xFF
0x031 foreign:          0xFF
0x032 grouping:         0xFF
0x060 primary header:   390721956
0x068 secondary header: 4294967295
0x070 header type:      0x0
0x074 workspace len:    32768
0x078 workspace lba:    390689188
0x080 max pd:           15
0x082 max vd:           4
0x084 max part:         1
0x086 vd_config len:    2
0x088 max_primary_elts: 65535
0x0c0 adapter_offset:   1
0x0c4 adapter_len:      1
0x0c8 pd_offset:        2
0x0cc pd_len:           2
0x0d0 vd_offset:        4
0x0d4 vd_len:           1
0x0d8 config_offset:    5
0x0dc config_len:       4
0x0e0 disk_data_offset: 9
0x0e4 disk_data_len:    1
0x0e8 badblock_offset:  -1
0x0ec badblock_len:     0
0x0f0 diag_offset:      -1
0x0f4 diag_len:         0
0x0f8 vendor_offset:    10
0x0fc vendor_len:       1
DDF1 Header at 0x875e9a0
0x000 signature:        0xDE11DE11
0x004 crc:              0x5A569EF2
0x008 guid:             ".. L..B... L8.!L(.!L...." [a8 fd 20 4c 95 10 42 02 a8 
fd 20 4c 38 09 21 4c 28 15 21 4c ff ff ff ff]
0x020 rev:              "02.00.00" [30 32 2e 30 30 2e 30 30]
0x028 seqnum:           -1
0x02c timestamp:        0xFFFFFFFF
0x030 open:             0xFF
0x031 foreign:          0xFF
0x032 grouping:         0xFF
0x060 primary header:   390721956
0x068 secondary header: 4294967295
0x070 header type:      0x1
0x074 workspace len:    32768
0x078 workspace lba:    390689188
0x080 max pd:           15
0x082 max vd:           4
0x084 max part:         1
0x086 vd_config len:    2
0x088 max_primary_elts: 65535
0x0c0 adapter_offset:   1
0x0c4 adapter_len:      1
0x0c8 pd_offset:        2
0x0cc pd_len:           2
0x0d0 vd_offset:        4
0x0d4 vd_len:           1
0x0d8 config_offset:    5
0x0dc config_len:       4
0x0e0 disk_data_offset: 9
0x0e4 disk_data_len:    1
0x0e8 badblock_offset:  -1
0x0ec badblock_len:     0
0x0f0 diag_offset:      -1
0x0f4 diag_len:         0
0x0f8 vendor_offset:    10
0x0fc vendor_len:       1
Adapter Data at 0x875eba8
0x000 signature:        0xAD111111
0x004 crc:              0x28004959
0x008 guid:             ".. L8.!L(.!L. !LADPT...." [a8 fd 20 4c 38 09 21 4c 28 
15 21 4c a8 20 21 4c 41 44 50 54 ff ff ff ff]
0x020 pci vendor:       0x1095
0x022 pci device:       0x242
0x024 pci subvendor:    0x9005
0x026 pci subdevice:    0x242
Disk Data at 0x875edb0
0x000 signature:        0x33333333
0x004 crc:              0x5F4EA96C
0x008 guid:             "S07GJ1LYB11326  ..1Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 32 36 20 20 c8 ac 31 5a ff ff ff ff]
0x020 reference:                0x38BC1348
0x024 forced_ref_flag:  255
0x025 forced_guid_flag: 0
Physical Drive Header at 0x875efb8
0x000 signature:        0x22222222
0x004 crc:              0x504EF65
0x008 num drives:       2
0x00a max drives:       15
Physical Drive at 0x875eff8
0x000 guid:             "S07GJ1LYB11326  ...Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 32 36 20 20 08 db dd 5a ff ff ff ff]
0x018 reference #:      0x38BC1348
0x01c type:             0x2
0x01e state:            0x1
0x020 size:             390361088
0x028 path info:        ".................." [01 00 00 00 ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff]
Physical Drive at 0x875f038
0x000 guid:             "S07GJ1LYB11332  &lt; at &gt;..Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 33 32 20 20 40 9d de 5a ff ff ff ff]
0x018 reference #:      0x38BCBED8
0x01c type:             0x2
0x01e state:            0x1
0x020 size:             390361088
0x028 path info:        ".................." [00 00 00 00 ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff]
Virtual Drive Header at 0x875f3c0
0x000 signature:        0xDDDDDDDD
0x004 crc:              0xAF8547DB
0x008 num drives:       1
0x00a max drives:       4
Virtual Drive at 0x875f400
0x000 guid:             "&lt; at &gt;50Z..B.        .#.8:5JE" [40 35 30 5a 95 10 42 02 20 
20 20 20 20 20 20 20 f8 23 bb 38 3a 35 4a 45]
0x018 vd #:             0x0
0x01c type:             0xFFFFFFFF
0x020 state:            0x0
0x021 init state:       0x2
0x030 name:             "system.........." [73 79 73 74 65 6d 00 00 00 00 00 
00 00 00 00 00]
Virtual Drive Config Record at 0x875f7c8
0x000 signature:        0xEEEEEEEE
0x004 crc:              0xC8A3CACF
0x008 guid:             "&lt; at &gt;50Z..B.        .#.8:5JE" [40 35 30 5a 95 10 42 02 20 
20 20 20 20 20 20 20 f8 23 bb 38 3a 35 4a 45]
0x020 timestamp:        0x4C8
0x024 seqnum:           1224
0x040 primary count:    2
0x042 stripe size:      7KiB
0x043 raid level:       1
0x044 raid qualifier:   0
0x045 secondary count:  1
0x046 secondary number: 0
0x047 secondary level:  255
0x060 spare 0:          0xFFFFFFFF
0x064 spare 1:          0xFFFFFFFF
0x068 spare 2:          0xFFFFFFFF
0x06c spare 3:          0xFFFFFFFF
0x070 spare 4:          0xFFFFFFFF
0x074 spare 5:          0xFFFFFFFF
0x078 spare 6:          0xFFFFFFFF
0x07c spare 7:          0xFFFFFFFF
0x080 cache policy:     0x20
0x088 bg task rate:     16
0x048 sector count:     390361088
0x050 size:             390361088
Drive map:
0: 38BC1348 &lt; at &gt; 0
1: 38BCBED8 &lt; at &gt; 0

/dev/sda (ddf1):
DDF1 anchor at 390719854 with tables in little-endian format.
DDF1 Header at 0x875ffd0
0x000 signature:        0xDE11DE11
0x004 crc:              0x6087F66D
0x008 guid:             ".. L..B... L8.!L(.!L...." [a8 fd 20 4c 95 10 42 02 a8 
fd 20 4c 38 09 21 4c 28 15 21 4c ff ff ff ff]
0x020 rev:              "02.00.00" [30 32 2e 30 30 2e 30 30]
0x028 seqnum:           -1
0x02c timestamp:        0xFFFFFFFF
0x030 open:             0xFF
0x031 foreign:          0xFF
0x032 grouping:         0xFF
0x060 primary header:   390719843
0x068 secondary header: 4294967295
0x070 header type:      0x0
0x074 workspace len:    32768
0x078 workspace lba:    390687075
0x080 max pd:           15
0x082 max vd:           4
0x084 max part:         1
0x086 vd_config len:    2
0x088 max_primary_elts: 65535
0x0c0 adapter_offset:   1
0x0c4 adapter_len:      1
0x0c8 pd_offset:        2
0x0cc pd_len:           2
0x0d0 vd_offset:        4
0x0d4 vd_len:           1
0x0d8 config_offset:    5
0x0dc config_len:       4
0x0e0 disk_data_offset: 9
0x0e4 disk_data_len:    1
0x0e8 badblock_offset:  -1
0x0ec badblock_len:     0
0x0f0 diag_offset:      -1
0x0f4 diag_len:         0
0x0f8 vendor_offset:    10
0x0fc vendor_len:       1
DDF1 Header at 0x8760210
0x000 signature:        0xDE11DE11
0x004 crc:              0xEB0A7028
0x008 guid:             ".. L..B... L8.!L(.!L...." [a8 fd 20 4c 95 10 42 02 a8 
fd 20 4c 38 09 21 4c 28 15 21 4c ff ff ff ff]
0x020 rev:              "02.00.00" [30 32 2e 30 30 2e 30 30]
0x028 seqnum:           -1
0x02c timestamp:        0xFFFFFFFF
0x030 open:             0xFF
0x031 foreign:          0xFF
0x032 grouping:         0xFF
0x060 primary header:   390719843
0x068 secondary header: 4294967295
0x070 header type:      0x1
0x074 workspace len:    32768
0x078 workspace lba:    390687075
0x080 max pd:           15
0x082 max vd:           4
0x084 max part:         1
0x086 vd_config len:    2
0x088 max_primary_elts: 65535
0x0c0 adapter_offset:   1
0x0c4 adapter_len:      1
0x0c8 pd_offset:        2
0x0cc pd_len:           2
0x0d0 vd_offset:        4
0x0d4 vd_len:           1
0x0d8 config_offset:    5
0x0dc config_len:       4
0x0e0 disk_data_offset: 9
0x0e4 disk_data_len:    1
0x0e8 badblock_offset:  -1
0x0ec badblock_len:     0
0x0f0 diag_offset:      -1
0x0f4 diag_len:         0
0x0f8 vendor_offset:    10
0x0fc vendor_len:       1
Adapter Data at 0x8760418
0x000 signature:        0xAD111111
0x004 crc:              0x28004959
0x008 guid:             ".. L8.!L(.!L. !LADPT...." [a8 fd 20 4c 38 09 21 4c 28 
15 21 4c a8 20 21 4c 41 44 50 54 ff ff ff ff]
0x020 pci vendor:       0x1095
0x022 pci device:       0x242
0x024 pci subvendor:    0x9005
0x026 pci subdevice:    0x242
Disk Data at 0x8760620
0x000 signature:        0x33333333
0x004 crc:              0xB6F20A59
0x008 guid:             "S07GJ1LYB11332  ...Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 33 32 20 20 f0 da eb 5a ff ff ff ff]
0x020 reference:                0x38BCBED8
0x024 forced_ref_flag:  255
0x025 forced_guid_flag: 0
Physical Drive Header at 0x8760828
0x000 signature:        0x22222222
0x004 crc:              0x5D01040B
0x008 num drives:       2
0x00a max drives:       15
Physical Drive at 0x8760868
0x000 guid:             "S07GJ1LYB11326  0..Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 32 36 20 20 30 ad 98 5a ff ff ff ff]
0x018 reference #:      0x38BC1348
0x01c type:             0x2
0x01e state:            0x1
0x020 size:             390361088
0x028 path info:        ".................." [01 00 00 00 ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff]
Physical Drive at 0x87608a8
0x000 guid:             "S07GJ1LYB11332  .h.Z...." [53 30 37 47 4a 31 4c 59 42 
31 31 33 33 32 20 20 98 68 99 5a ff ff ff ff]
0x018 reference #:      0x38BCBED8
0x01c type:             0x2
0x01e state:            0x1
0x020 size:             390361088
0x028 path info:        ".................." [00 00 00 00 ff ff ff ff ff ff ff 
ff ff ff ff ff ff ff]
Virtual Drive Header at 0x8760c30
0x000 signature:        0xDDDDDDDD
0x004 crc:              0xAF8547DB
0x008 num drives:       1
0x00a max drives:       4
Virtual Drive at 0x8760c70
0x000 guid:             "&lt; at &gt;50Z..B.        .#.8:5JE" [40 35 30 5a 95 10 42 02 20 
20 20 20 20 20 20 20 f8 23 bb 38 3a 35 4a 45]
0x018 vd #:             0x0
0x01c type:             0xFFFFFFFF
0x020 state:            0x0
0x021 init state:       0x2
0x030 name:             "system.........." [73 79 73 74 65 6d 00 00 00 00 00 
00 00 00 00 00]
Virtual Drive Config Record at 0x8761038
0x000 signature:        0xEEEEEEEE
0x004 crc:              0xC8A3CACF
0x008 guid:             "&lt; at &gt;50Z..B.        .#.8:5JE" [40 35 30 5a 95 10 42 02 20 
20 20 20 20 20 20 20 f8 23 bb 38 3a 35 4a 45]
0x020 timestamp:        0x4C8
0x024 seqnum:           1224
0x040 primary count:    2
0x042 stripe size:      7KiB
0x043 raid level:       1
0x044 raid qualifier:   0
0x045 secondary count:  1
0x046 secondary number: 0
0x047 secondary level:  255
0x060 spare 0:          0xFFFFFFFF
0x064 spare 1:          0xFFFFFFFF
0x068 spare 2:          0xFFFFFFFF
0x06c spare 3:          0xFFFFFFFF
0x070 spare 4:          0xFFFFFFFF
0x074 spare 5:          0xFFFFFFFF
0x078 spare 6:          0xFFFFFFFF
0x07c spare 7:          0xFFFFFFFF
0x080 cache policy:     0x20
0x088 bg task rate:     16
0x048 sector count:     390361088
0x050 size:             390361088
Drive map:
0: 38BC1348 &lt; at &gt; 0
1: 38BCBED8 &lt; at &gt; 0
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Peter</dc:creator>
    <dc:date>2008-10-02T21:09:49</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13126">
    <title>[PATCH] selinux: fix 'defined but not used' warning</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13126</link>
    <description>selinux is initialized lazily, so if selinux is disabled then selinux_init will never be called.

This lets udev compile with -Werror again.

Signed-off-by: Alan Jenkins &lt;alan-jenkins&lt; at &gt;tuffmail.co.uk&gt;

diff --git a/udev/lib/libudev.c b/udev/lib/libudev.c
index c2c5025..16cf860 100644
--- a/udev/lib/libudev.c
+++ b/udev/lib/libudev.c
&lt; at &gt;&lt; at &gt; -72,9 +72,9 &lt; at &gt;&lt; at &gt; static void log_stderr(struct udev *udev,
 vfprintf(stderr, format, args);
 }
 
+#ifdef USE_SELINUX
 static void selinux_init(struct udev *udev)
 {
-#ifdef USE_SELINUX
 /*
  * record the present security context, for file-creation
  * restoration creation purposes.
&lt; at &gt;&lt; at &gt; -89,8 +89,8 &lt; at &gt;&lt; at &gt; static void selinux_init(struct udev *udev)
 }
 }
 udev-&gt;selinux_initialized = 1;
-#endif
 }
+#endif
 
 void *udev_get_userdata(struct udev *udev)
 {

--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-10-02T16:29:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13124">
    <title>udev-129 compile error with --disable-logging</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13124</link>
    <description>Hi there!

It seems udev-129 has some log-related name conflicts when compiling udev 
configured with --disable-logging

libudev-ctrl.c: In function 'udev_ctrl_enable_receiving':
libudev-ctrl.c:104: error: called object 'log_null' is not a function
libudev-ctrl.c: In function 'ctrl_send':
libudev-ctrl.c:161: error: called object 'log_null' is not a function


The original source is this:
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
{
        int err;
        const int feature_on = 1;

        err= bind(uctrl-&gt;sock, (struct sockaddr *)&amp;uctrl-&gt;saddr, 
uctrl-&gt;addrlen);
        if (err &lt; 0) {
                err(uctrl-&gt;udev, "bind failed: %m\n");
                return err;
        }

        /* enable receiving of the sender credentials */
        setsockopt(uctrl-&gt;sock, SOL_SOCKET, SO_PASSCRED, &amp;feature_on, 
sizeof(feature_on));
        return 0;
}
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

the pre-processor does change it to:

&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
{
 int log_null;
 const int feature_on = 1;

 log_null= bind(uctrl-&gt;sock, (struct sockaddr *)&amp;uctrl-&gt;saddr, 
uctrl-&gt;addrlen);
 if (log_null &lt; 0) {
  log_null(uctrl-&gt;udev, "bind failed: %m\n");
  return log_null;
 }


 setsockopt(uctrl-&gt;sock, 1, 16, &amp;feature_on, sizeof(feature_on));
 return 0;
}
&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

So I think it will help to rename the err variable to any other name.

Regards
Matthias
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Matthias Schwarzott</dc:creator>
    <dc:date>2008-10-01T21:16:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13123">
    <title>[ANNOUNCE] udev 129 release</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13123</link>
    <description>Here comes a new udev version. Thanks to all who have contributed to
this release.

The tarball can be found here:
  ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/

The development repository can be found here:
  http://www.kernel.org/git/?p=linux/hotplug/udev.git;a=summary

The ChangeLog can be found here:
  http://www.kernel.org/git/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=ChangeLog


udev 129
========
Fix recently introduced bug, which caused a compilation without large
file support, where vol_id does not recognize raid signatures at the end
of a volume.

Firewire disks now create both, by-id/scsi-* and by-id/ieee-* links.
Seems some kernel versions prevent the creation of the ieee-* links,
so people used the scsi-* link which disappeared now.

More libudev work. Almost all udevadm functionality comes from libudev
now.

udevadm trigger has a new option --type, which allows to trigger events
for "devices", for "subsystems", or "failed" devices. The old option
--retry-failed" still works, but is no longer mentioned in the man page.

--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Kay Sievers</dc:creator>
    <dc:date>2008-10-01T20:47:11</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13117">
    <title>[PATCH] Fix Linux RAID detection</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13117</link>
    <description>After upgrading to udev 128, the devices of my RAID array stopped being
detected as such by vol_id.  The reason is that libvolume_id lacks large
file support, so it couldn't seek to the end of my 500GB devices to find
the RAID magic.  This patch simply #includes config.h in util.c so that
the proper macros are defined, bringing in a 64-bit lseek().  If any
other backends apart from Linux RAID require a volume_id_get_buffer()
that has 64-bit support, they will obviously be fixed by this as well.

diff -ru udev-128/extras/volume_id/lib/util.c udev-128.new/extras/volume_id/lib/util.c
--- udev-128/extras/volume_id/lib/util.c2008-09-09 17:37:38.000000000 -0700
+++ udev-128.new/extras/volume_id/lib/util.c2008-09-30 15:55:19.402775372 -0700
&lt; at &gt;&lt; at &gt; -21,6 +21,7 &lt; at &gt;&lt; at &gt;
 #define _GNU_SOURCE 1
 #endif
 
+#include &lt;config.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;stdlib.h&gt;
 #include &lt;unistd.h&gt;
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Chris Spiegel</dc:creator>
    <dc:date>2008-10-01T00:24:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13116">
    <title>ide dvd burner detected as ide-tape</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13116</link>
    <description>Hi,

I found in the syslog:
Sep 30 13:44:44 localhost kernel: ide-tape: hda &lt;-&gt; ht0: HH-&lt; at &gt;T)SPȴ/�����1*00 
DRD)RAM GH22LP20P�{�����л�����HH-&lt; at &gt;T)SPȴ/�����1*00 rev 1*00
Sep 30 13:44:44 localhost kernel: ide-tape: ht0: I/O error, pc = 1a, key =  5, 
asc = 64, ascq =  0
Sep 30 13:44:44 localhost kernel: ide-tape: hda: invalid tape speed (assuming 
650KB/sec)
Sep 30 13:44:44 localhost kernel: ide-tape: hda: invalid max_speed (assuming 
650KB/sec)
Sep 30 13:44:44 localhost kernel: ide-tape: ht0: I/O error, pc = 1a, key =  5, 
asc = 64, ascq =  0
Sep 30 13:47:17 localhost kernel: ide-tape: hda &lt;-&gt; ht0: HH-&lt; at &gt;T)SPȴ/�����1*00 
DRD)RAM GH22LP20P�{�����������HH-&lt; at &gt;T)SPȴ/�����1*00 rev 1*00
Sep 30 13:47:17 localhost kernel: ide-tape: ht0: I/O error, pc = 1a, key =  5, 
asc = 64, ascq =  0
Sep 30 13:47:17 localhost kernel: ide-tape: hda: invalid tape speed (assuming 
650KB/sec)
Sep 30 13:47:17 localhost kernel: ide-tape: hda: invalid max_speed (assuming 
650KB/sec)
Sep 30 13:47:17 localhost kernel: ide-tape: ht0: I/O error, pc = 1a, key =  5, 
asc = 64, ascq =  0
</description>
    <dc:creator>Thomas Drillich</dc:creator>
    <dc:date>2008-09-30T23:00:06</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13114">
    <title>Debug build fails</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13114</link>
    <description>udevadm-info.c: In function ‘print_all_attributes’:
udevadm-info.c:65: error: ‘udev’ undeclared (first use in this function)
udevadm-info.c:65: error: (Each undeclared identifier is reported only once
udevadm-info.c:65: error: for each function it appears in.)
udevadm-info.c:72: error: ‘info’ undeclared (first use in this function)


The dbg() macro sucks.  The disabled version should be an inline
function, so it catches these errors on normal builds. 

Obviously the callers need to be fixed before this can be applied.

------------&gt;

Allow compiler to check dbg() arguments on non-debug builds

Signed-off-by: Alan Jenkins &lt;alan-jenkins&lt; at &gt;tuffmail.co.uk&gt;

diff --git a/udev/lib/libudev-private.h b/udev/lib/libudev-private.h
index 162b33a..8f84715 100644
--- a/udev/lib/libudev-private.h
+++ b/udev/lib/libudev-private.h
&lt; at &gt;&lt; at &gt; -23,12 +23,17 &lt; at &gt;&lt; at &gt;
 #include &lt;syslog.h&gt;
 #include "libudev.h"
 
+static inline void __attribute__ ((format(printf, 2, 3)))
+log_null(struct udev *udev, const char *format, ...)
+{
+}
+
 #ifdef USE_LOG
 #ifdef USE_DEBUG
 #define dbg(udev, arg...) \
 udev_log(udev, LOG_DEBUG, __FILE__, __LINE__, __FUNCTION__, ## arg)
 #else
-#define dbg(format, arg...) do { } while (0)
+#define dbg log_null
 #endif /* USE_DEBUG */
 
 #define info(udev, arg...) \
&lt; at &gt;&lt; at &gt; -37,9 +42,9 &lt; at &gt;&lt; at &gt;
 #define err(udev, arg...) \
 udev_log(udev, LOG_ERR, __FILE__, __LINE__, __FUNCTION__, ## arg)
 #else
-#define dbg(format, arg...) do { } while (0)
-#define info(format, arg...) do { } while (0)
-#define err(format, arg...) do { } while (0)
+#define dbg log_null
+#define info log_null
+#define err log_null
 #endif
 
 /* libudev */




--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-29T16:50:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13112">
    <title>[PATCH] Fix messages (inc. debug compile failure) introduced when optimizing "goto"</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13112</link>
    <description>My bad.

Signed-off-by: &lt;alan-jenkins&lt; at &gt;tuffmail.co.uk&gt;

diff --git a/udev/udev_rules_parse.c b/udev/udev_rules_parse.c
index 81ba51f..b7ae06a 100644
--- a/udev/udev_rules_parse.c
+++ b/udev/udev_rules_parse.c
&lt; at &gt;&lt; at &gt; -63,7 +63,7 &lt; at &gt;&lt; at &gt; struct udev_rule *udev_rules_iter_goto(struct udev_rules_iter *iter, size_t rule
 struct udev_rules *rules = iter-&gt;rules;
 struct udev_rule *rule;
 
-dbg(rules-&gt;udev "current=%zi\n", iter-&gt;current);
+dbg(rules-&gt;udev, "current=%zi\n", iter-&gt;current);
 iter-&gt;current = rule_off;
 rule = (struct udev_rule *) (rules-&gt;buf + iter-&gt;current);
 
&lt; at &gt;&lt; at &gt; -745,10 +745,10 &lt; at &gt;&lt; at &gt; static int parse_file(struct udev_rules *rules, const char *filename)
 if (rule-&gt;goto_label.operation != KEY_OP_UNSET) {
 char *goto_label = &amp;rule-&gt;buf[rule-&gt;goto_label.val_off];
 
-dbg(rules-&gt;udev, "resolving goto label '%s'", goto_label);
+dbg(rules-&gt;udev, "resolving goto label '%s'\n", goto_label);
 rule-&gt;goto_rule_off = find_label(&amp;iter, goto_label);
 if (rule-&gt;goto_rule_off == iter.current) {
-err(rules-&gt;udev, "goto nonexistent label '%s' in '%s'",
+err(rules-&gt;udev, "goto nonexistent label '%s' in '%s'\n",
     goto_label, filename);
 }
 }


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-29T16:37:44</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13110">
    <title>[PATCH] replace strerror() usage with threadsafe "%m" format string</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13110</link>
    <description>strerror() is not threadsafe.  It uses a buffer to build messages of the form
"Unknown error 387689".

syslog() provides a %m format which is equivalent to strerror(errno).
As a GNU extension, this is also accepted by printf and friends.
At least in the current implementation, it is correctly threadsafe.

Signed-off-by: Alan Jenkins &lt;alan-jenkins&lt; at &gt;tuffmail.co.uk&gt;

diff --git a/udev/lib/libudev-ctrl.c b/udev/lib/libudev-ctrl.c
index 7d37074..268ce2d 100644
--- a/udev/lib/libudev-ctrl.c
+++ b/udev/lib/libudev-ctrl.c
&lt; at &gt;&lt; at &gt; -79,7 +79,7 &lt; at &gt;&lt; at &gt; struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socke
 
 uctrl-&gt;sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
 if (uctrl-&gt;sock &lt; 0) {
-err(udev, "error getting socket: %s\n", strerror(errno));
+err(udev, "error getting socket: %m\n");
 udev_ctrl_unref(uctrl);
 return NULL;
 }
&lt; at &gt;&lt; at &gt; -101,7 +101,7 &lt; at &gt;&lt; at &gt; int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
 
 err= bind(uctrl-&gt;sock, (struct sockaddr *)&amp;uctrl-&gt;saddr, uctrl-&gt;addrlen);
 if (err &lt; 0) {
-err(uctrl-&gt;udev, "bind failed: %s\n", strerror(errno));
+err(uctrl-&gt;udev, "bind failed: %m\n");
 return err;
 }
 
&lt; at &gt;&lt; at &gt; -158,7 +158,7 &lt; at &gt;&lt; at &gt; static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int
 
 err = sendto(uctrl-&gt;sock, &amp;ctrl_msg_wire, sizeof(ctrl_msg_wire), 0, (struct sockaddr *)&amp;uctrl-&gt;saddr, uctrl-&gt;addrlen);
 if (err == -1) {
-err(uctrl-&gt;udev, "error sending message: %s\n", strerror(errno));
+err(uctrl-&gt;udev, "error sending message: %m\n");
 }
 return err;
 }
&lt; at &gt;&lt; at &gt; -227,7 +227,7 &lt; at &gt;&lt; at &gt; struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl *uctrl)
 
 size = recvmsg(uctrl-&gt;sock, &amp;smsg, 0);
 if (size &lt;  0) {
-err(uctrl-&gt;udev, "unable to receive user udevd message: %s\n", strerror(errno));
+err(uctrl-&gt;udev, "unable to receive user udevd message: %m\n");
 goto err;
 }
 cmsg = CMSG_FIRSTHDR(&amp;smsg);
diff --git a/udev/lib/libudev-device.c b/udev/lib/libudev-device.c
index 4d00029..4cdc957 100644
--- a/udev/lib/libudev-device.c
+++ b/udev/lib/libudev-device.c
&lt; at &gt;&lt; at &gt; -77,7 +77,7 &lt; at &gt;&lt; at &gt; static int device_read_db(struct udev_device *udev_device)
 syspath_to_db_path(udev_device, filename, sizeof(filename));
 
 if (lstat(filename, &amp;stats) != 0) {
-info(udev_device-&gt;udev, "no db file to read %s: %s\n", filename, strerror(errno));
+info(udev_device-&gt;udev, "no db file to read %s: %m\n", filename);
 return -1;
 }
 if ((stats.st_mode &amp; S_IFMT) == S_IFLNK) {
&lt; at &gt;&lt; at &gt; -88,7 +88,7 &lt; at &gt;&lt; at &gt; static int device_read_db(struct udev_device *udev_device)
 if (target_len &gt; 0)
 target[target_len] = '\0';
 else {
-info(udev_device-&gt;udev, "error reading db link %s: %s\n", filename, strerror(errno));
+info(udev_device-&gt;udev, "error reading db link %s: %m\n", filename);
 return -1;
 }
 if (asprintf(&amp;udev_device-&gt;devnode, "%s/%s", udev_get_dev_path(udev_device-&gt;udev), target) &lt; 0)
&lt; at &gt;&lt; at &gt; -99,7 +99,7 &lt; at &gt;&lt; at &gt; static int device_read_db(struct udev_device *udev_device)
 
 f = fopen(filename, "r");
 if (f == NULL) {
-info(udev_device-&gt;udev, "error reading db file %s: %s\n", filename, strerror(errno));
+info(udev_device-&gt;udev, "error reading db file %s: %m\n", filename);
 return -1;
 }
 while (fgets(line, sizeof(line), f)) {
&lt; at &gt;&lt; at &gt; -653,7 +653,7 &lt; at &gt;&lt; at &gt; const char *udev_device_get_attr_value(struct udev_device *udev_device, const ch
 util_strlcat(path, attr, sizeof(path));
 
 if (lstat(path, &amp;statbuf) != 0) {
-info(udev_device-&gt;udev, "stat '%s' failed: %s\n", path, strerror(errno));
+info(udev_device-&gt;udev, "stat '%s' failed: %m\n", path);
 goto out;
 }
 
diff --git a/udev/lib/libudev-monitor.c b/udev/lib/libudev-monitor.c
index 8a1bdae..e72b206 100644
--- a/udev/lib/libudev-monitor.c
+++ b/udev/lib/libudev-monitor.c
&lt; at &gt;&lt; at &gt; -83,7 +83,7 &lt; at &gt;&lt; at &gt; struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char
 
 udev_monitor-&gt;sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
 if (udev_monitor-&gt;sock == -1) {
-err(udev, "error getting socket: %s\n", strerror(errno));
+err(udev, "error getting socket: %m\n");
 free(udev_monitor);
 return NULL;
 }
&lt; at &gt;&lt; at &gt; -106,7 +106,7 &lt; at &gt;&lt; at &gt; struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev)
 
 udev_monitor-&gt;sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
 if (udev_monitor-&gt;sock == -1) {
-err(udev, "error getting socket: %s\n", strerror(errno));
+err(udev, "error getting socket: %m\n");
 free(udev_monitor);
 return NULL;
 }
&lt; at &gt;&lt; at &gt; -127,14 +127,14 &lt; at &gt;&lt; at &gt; int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
 if (udev_monitor-&gt;snl.nl_family != 0) {
 err = bind(udev_monitor-&gt;sock, (struct sockaddr *)&amp;udev_monitor-&gt;snl, sizeof(struct sockaddr_nl));
 if (err &lt; 0) {
-err(udev_monitor-&gt;udev, "bind failed: %s\n", strerror(errno));
+err(udev_monitor-&gt;udev, "bind failed: %m\n");
 return err;
 }
 info(udev_monitor-&gt;udev, "monitor %p listening on netlink\n", udev_monitor);
 } else if (udev_monitor-&gt;sun.sun_family != 0) {
 err = bind(udev_monitor-&gt;sock, (struct sockaddr *)&amp;udev_monitor-&gt;sun, udev_monitor-&gt;addrlen);
 if (err &lt; 0) {
-err(udev_monitor-&gt;udev, "bind failed: %s\n", strerror(errno));
+err(udev_monitor-&gt;udev, "bind failed: %m\n");
 return err;
 }
 /* enable receiving of the sender credentials */
diff --git a/udev/lib/libudev.c b/udev/lib/libudev.c
index 4fd8196..12220e7 100644
--- a/udev/lib/libudev.c
+++ b/udev/lib/libudev.c
&lt; at &gt;&lt; at &gt; -131,7 +131,7 &lt; at &gt;&lt; at &gt; void udev_selinux_lsetfilecon(struct udev *udev, const char *file, unsigned int
 return;
 } 
 if (lsetfilecon(file, scontext) &lt; 0)
-err(udev, "setfilecon %s failed: %s\n", file, strerror(errno));
+err(udev, "setfilecon %s failed: %m\n", file);
 freecon(scontext);
 }
 #endif
&lt; at &gt;&lt; at &gt; -150,7 +150,7 &lt; at &gt;&lt; at &gt; void udev_selinux_setfscreatecon(struct udev *udev, const char *file, unsigned i
 return;
 }
 if (setfscreatecon(scontext) &lt; 0)
-err(udev, "setfscreatecon %s failed: %s\n", file, strerror(errno));
+err(udev, "setfscreatecon %s failed: %m\n", file);
 freecon(scontext);
 }
 #endif
&lt; at &gt;&lt; at &gt; -163,7 +163,7 &lt; at &gt;&lt; at &gt; void udev_selinux_resetfscreatecon(struct udev *udev)
 selinux_init(udev);
 if (udev-&gt;selinux_enabled) {
 if (setfscreatecon(udev-&gt;selinux_prev_scontext) &lt; 0)
-err(udev, "setfscreatecon failed: %s\n", strerror(errno));
+err(udev, "setfscreatecon failed: %m\n");
 }
 #endif
 }
diff --git a/udev/udev_db.c b/udev/udev_db.c
index 4f3dc60..34bdef3 100644
--- a/udev/udev_db.c
+++ b/udev/udev_db.c
&lt; at &gt;&lt; at &gt; -88,7 +88,7 &lt; at &gt;&lt; at &gt; int udev_db_get_devices_by_name(struct udev *udev, const char *name, struct list
 
 dir = opendir(dirname);
 if (dir == NULL) {
-info(udev, "no index directory '%s': %s\n", dirname, strerror(errno));
+info(udev, "no index directory '%s': %m\n", dirname);
 rc = -1;
 goto out;
 }
&lt; at &gt;&lt; at &gt; -147,7 +147,7 &lt; at &gt;&lt; at &gt; int udev_db_add_device(struct udevice *udevice)
 ret = symlink(udevice-&gt;name, filename);
 udev_selinux_resetfscreatecon(udevice-&gt;udev);
 if (ret != 0) {
-err(udevice-&gt;udev, "unable to create db link '%s': %s\n", filename, strerror(errno));
+err(udevice-&gt;udev, "unable to create db link '%s': %m\n", filename);
 return -1;
 }
 } else {
&lt; at &gt;&lt; at &gt; -156,7 +156,7 &lt; at &gt;&lt; at &gt; int udev_db_add_device(struct udevice *udevice)
 
 f = fopen(filename, "w");
 if (f == NULL) {
-err(udevice-&gt;udev, "unable to create db file '%s': %s\n", filename, strerror(errno));
+err(udevice-&gt;udev, "unable to create db file '%s': %m\n", filename);
 return -1;
 }
 dbg(udevice-&gt;udev, "storing data for device '%s' in '%s'\n", udevice-&gt;dev-&gt;devpath, filename);
&lt; at &gt;&lt; at &gt; -203,7 +203,7 &lt; at &gt;&lt; at &gt; int udev_db_get_device(struct udevice *udevice, const char *devpath)
 devpath_to_db_path(udevice-&gt;udev, devpath, filename, sizeof(filename));
 
 if (lstat(filename, &amp;stats) != 0) {
-info(udevice-&gt;udev, "no db file to read %s: %s\n", filename, strerror(errno));
+info(udevice-&gt;udev, "no db file to read %s: %m\n", filename);
 return -1;
 }
 if ((stats.st_mode &amp; S_IFMT) == S_IFLNK) {
&lt; at &gt;&lt; at &gt; -215,7 +215,7 &lt; at &gt;&lt; at &gt; int udev_db_get_device(struct udevice *udevice, const char *devpath)
 if (target_len &gt; 0)
 target[target_len] = '\0';
 else {
-info(udevice-&gt;udev, "error reading db link %s: %s\n", filename, strerror(errno));
+info(udevice-&gt;udev, "error reading db link %s: %m\n", filename);
 return -1;
 }
 dbg(udevice-&gt;udev, "db link points to '%s'\n", target);
&lt; at &gt;&lt; at &gt; -224,7 +224,7 &lt; at &gt;&lt; at &gt; int udev_db_get_device(struct udevice *udevice, const char *devpath)
 }
 
 if (file_map(filename, &amp;buf, &amp;bufsize) != 0) {
-info(udevice-&gt;udev, "error reading db file %s: %s\n", filename, strerror(errno));
+info(udevice-&gt;udev, "error reading db file %s: %m\n", filename);
 return -1;
 }
 
diff --git a/udev/udev_device_event.c b/udev/udev_device_event.c
index aacd1d2..4408400 100644
--- a/udev/udev_device_event.c
+++ b/udev/udev_device_event.c
&lt; at &gt;&lt; at &gt; -63,7 +63,7 &lt; at &gt;&lt; at &gt; static int rename_netif(struct udevice *udevice)
 
 sk = socket(PF_INET, SOCK_DGRAM, 0);
 if (sk &lt; 0) {
-err(udevice-&gt;udev, "error opening socket: %s\n", strerror(errno));
+err(udevice-&gt;udev, "error opening socket: %m\n");
 return -1;
 }
 
&lt; at &gt;&lt; at &gt; -78,8 +78,8 &lt; at &gt;&lt; at &gt; static int rename_netif(struct udevice *udevice)
 
 /* see if the destination interface name already exists */
 if (errno != EEXIST) {
-err(udevice-&gt;udev, "error changing netif name %s to %s: %s\n",
-    ifr.ifr_name, ifr.ifr_newname, strerror(errno));
+err(udevice-&gt;udev, "error changing netif name %s to %s: %m\n",
+    ifr.ifr_name, ifr.ifr_newname);
 goto exit;
 }
 
&lt; at &gt;&lt; at &gt; -88,8 +88,8 &lt; at &gt;&lt; at &gt; static int rename_netif(struct udevice *udevice)
 util_strlcat(ifr.ifr_newname, "_rename", IFNAMSIZ);
 retval = ioctl(sk, SIOCSIFNAME, &amp;ifr);
 if (retval != 0) {
-err(udevice-&gt;udev, "error changing netif name %s to %s: %s\n",
-    ifr.ifr_name, ifr.ifr_newname, strerror(errno));
+err(udevice-&gt;udev, "error changing netif name %s to %s: %m\n",
+    ifr.ifr_name, ifr.ifr_newname);
 goto exit;
 }
 
&lt; at &gt;&lt; at &gt; -105,8 +105,8 &lt; at &gt;&lt; at &gt; static int rename_netif(struct udevice *udevice)
 }
 
 if (errno != EEXIST) {
-err(udevice-&gt;udev, "error changing net interface name %s to %s: %s\n",
-    ifr.ifr_name, ifr.ifr_newname, strerror(errno));
+err(udevice-&gt;udev, "error changing net interface name %s to %s: %m\n",
+    ifr.ifr_name, ifr.ifr_newname);
 break;
 }
 dbg(udevice-&gt;udev, "wait for netif '%s' to become free, loop=%i\n",
diff --git a/udev/udev_node.c b/udev/udev_node.c
index 8971f9f..a43e5bd 100644
--- a/udev/udev_node.c
+++ b/udev/udev_node.c
&lt; at &gt;&lt; at &gt; -58,13 +58,13 &lt; at &gt;&lt; at &gt; int udev_node_mknod(struct udevice *udevice, const char *file, dev_t devt, mode_
 err = mknod(file_tmp, mode, devt);
 udev_selinux_resetfscreatecon(udevice-&gt;udev);
 if (err != 0) {
-err(udevice-&gt;udev, "mknod(%s, %#o, %u, %u) failed: %s\n",
-    file_tmp, mode, major(devt), minor(devt), strerror(errno));
+err(udevice-&gt;udev, "mknod(%s, %#o, %u, %u) failed: %m\n",
+    file_tmp, mode, major(devt), minor(devt));
 goto exit;
 }
 err = rename(file_tmp, file);
 if (err != 0) {
-err(udevice-&gt;udev, "rename(%s, %s) failed: %s\n", file_tmp, file, strerror(errno));
+err(udevice-&gt;udev, "rename(%s, %s) failed: %m\n", file_tmp, file);
 unlink(file_tmp);
 }
 }
&lt; at &gt;&lt; at &gt; -74,8 +74,8 &lt; at &gt;&lt; at &gt; int udev_node_mknod(struct udevice *udevice, const char *file, dev_t devt, mode_
 err = mknod(file, mode, devt);
 udev_selinux_resetfscreatecon(udevice-&gt;udev);
 if (err != 0) {
-err(udevice-&gt;udev, "mknod(%s, %#o, (%u,%u) failed: %s\n",
-    file, mode, major(devt), minor(devt), strerror(errno));
+err(udevice-&gt;udev, "mknod(%s, %#o, (%u,%u) failed: %m\n",
+    file, mode, major(devt), minor(devt));
 goto exit;
 }
 }
&lt; at &gt;&lt; at &gt; -84,7 +84,7 &lt; at &gt;&lt; at &gt; int udev_node_mknod(struct udevice *udevice, const char *file, dev_t devt, mode_
 info(udevice-&gt;udev, "chmod(%s, %#o)\n", file, mode);
 err = chmod(file, mode);
 if (err != 0) {
-err(udevice-&gt;udev, "chmod(%s, %#o) failed: %s\n", file, mode, strerror(errno));
+err(udevice-&gt;udev, "chmod(%s, %#o) failed: %m\n", file, mode);
 goto exit;
 }
 }
&lt; at &gt;&lt; at &gt; -93,7 +93,7 &lt; at &gt;&lt; at &gt; int udev_node_mknod(struct udevice *udevice, const char *file, dev_t devt, mode_
 info(udevice-&gt;udev, "chown(%s, %u, %u)\n", file, uid, gid);
 err = chown(file, uid, gid);
 if (err != 0) {
-err(udevice-&gt;udev, "chown(%s, %u, %u) failed: %s\n", file, uid, gid, strerror(errno));
+err(udevice-&gt;udev, "chown(%s, %u, %u) failed: %m\n", file, uid, gid);
 goto exit;
 }
 }
&lt; at &gt;&lt; at &gt; -170,12 +170,12 &lt; at &gt;&lt; at &gt; static int node_symlink(struct udevice *udevice, const char *node, const char *s
 retval = symlink(target, slink_tmp);
 udev_selinux_resetfscreatecon(udevice-&gt;udev);
 if (retval != 0) {
-err(udevice-&gt;udev, "symlink(%s, %s) failed: %s\n", target, slink_tmp, strerror(errno));
+err(udevice-&gt;udev, "symlink(%s, %s) failed: %m\n", target, slink_tmp);
 goto exit;
 }
 retval = rename(slink_tmp, slink);
 if (retval != 0) {
-err(udevice-&gt;udev, "rename(%s, %s) failed: %s\n", slink_tmp, slink, strerror(errno));
+err(udevice-&gt;udev, "rename(%s, %s) failed: %m\n", slink_tmp, slink);
 unlink(slink_tmp);
 goto exit;
 }
diff --git a/udev/udev_rules.c b/udev/udev_rules.c
index 9c37571..9527f46 100644
--- a/udev/udev_rules.c
+++ b/udev/udev_rules.c
&lt; at &gt;&lt; at &gt; -159,13 +159,13 &lt; at &gt;&lt; at &gt; static int run_program(struct udev *udev, const char *command, const char *subsy
 /* prepare pipes from child to parent */
 if (result != NULL || udev_get_log_priority(udev) &gt;= LOG_INFO) {
 if (pipe(outpipe) != 0) {
-err(udev, "pipe failed: %s\n", strerror(errno));
+err(udev, "pipe failed: %m\n");
 return -1;
 }
 }
 if (udev_get_log_priority(udev) &gt;= LOG_INFO) {
 if (pipe(errpipe) != 0) {
-err(udev, "pipe failed: %s\n", strerror(errno));
+err(udev, "pipe failed: %m\n");
 return -1;
 }
 }
&lt; at &gt;&lt; at &gt; -196,7 +196,7 &lt; at &gt;&lt; at &gt; static int run_program(struct udev *udev, const char *command, const char *subsy
 dup2(devnull, STDERR_FILENO);
 close(devnull);
 } else
-err(udev, "open /dev/null failed: %s\n", strerror(errno));
+err(udev, "open /dev/null failed: %m\n");
 if (outpipe[WRITE_END] &gt; 0) {
 dup2(outpipe[WRITE_END], STDOUT_FILENO);
 close(outpipe[WRITE_END]);
&lt; at &gt;&lt; at &gt; -215,7 +215,7 &lt; at &gt;&lt; at &gt; static int run_program(struct udev *udev, const char *command, const char *subsy
 }
 _exit(1);
 case -1:
-err(udev, "fork of '%s' failed: %s\n", argv[0], strerror(errno));
+err(udev, "fork of '%s' failed: %m\n", argv[0]);
 return -1;
 default:
 /* read from child if requested */
&lt; at &gt;&lt; at &gt; -258,7 +258,7 &lt; at &gt;&lt; at &gt; static int run_program(struct udev *udev, const char *command, const char *subsy
 close(outpipe[READ_END]);
 outpipe[READ_END] = -1;
 if (count &lt; 0) {
-err(udev, "stdin read failed: %s\n", strerror(errno));
+err(udev, "stdin read failed: %m\n");
 retval = -1;
 }
 continue;
&lt; at &gt;&lt; at &gt; -292,7 +292,7 &lt; at &gt;&lt; at &gt; static int run_program(struct udev *udev, const char *command, const char *subsy
 close(errpipe[READ_END]);
 errpipe[READ_END] = -1;
 if (count &lt; 0)
-err(udev, "stderr read failed: %s\n", strerror(errno));
+err(udev, "stderr read failed: %m\n");
 continue;
 }
 errbuf[count] = '\0';
&lt; at &gt;&lt; at &gt; -392,7 +392,7 &lt; at &gt;&lt; at &gt; static int import_file_into_env(struct udevice *udevice, const char *filename)
 size_t bufsize;
 
 if (file_map(filename, &amp;buf, &amp;bufsize) != 0) {
-err(udevice-&gt;udev, "can't open '%s': %s\n", filename, strerror(errno));
+err(udevice-&gt;udev, "can't open '%s': %m\n", filename);
 return -1;
 }
 import_keys_into_env(udevice, buf, bufsize);
&lt; at &gt;&lt; at &gt; -1352,10 +1352,10 &lt; at &gt;&lt; at &gt; try_parent:
 if (f != NULL) {
 if (!udevice-&gt;test_run)
 if (fprintf(f, "%s", value) &lt;= 0)
-err(udevice-&gt;udev, "error writing ATTR{%s}: %s\n", attr, strerror(errno));
+err(udevice-&gt;udev, "error writing ATTR{%s}: %m\n", attr);
 fclose(f);
 } else
-err(udevice-&gt;udev, "error opening ATTR{%s} for writing: %s\n", attr, strerror(errno));
+err(udevice-&gt;udev, "error opening ATTR{%s} for writing: %m\n", attr);
 }
 }
 return 0;
diff --git a/udev/udev_rules_parse.c b/udev/udev_rules_parse.c
index 5a76889..81ba51f 100644
--- a/udev/udev_rules_parse.c
+++ b/udev/udev_rules_parse.c
&lt; at &gt;&lt; at &gt; -692,7 +692,7 &lt; at &gt;&lt; at &gt; static int parse_file(struct udev_rules *rules, const char *filename)
 start = rules-&gt;bufsize;
 
 if (file_map(filename, &amp;buf, &amp;bufsize) != 0) {
-err(rules-&gt;udev, "can't open '%s' as rules file: %s\n", filename, strerror(errno));
+err(rules-&gt;udev, "can't open '%s' as rules file: %m\n", filename);
 return -1;
 }
 info(rules-&gt;udev, "reading '%s' as rules file\n", filename);
&lt; at &gt;&lt; at &gt; -831,7 +831,7 &lt; at &gt;&lt; at &gt; int udev_rules_init(struct udev *udev, struct udev_rules *rules, int resolve_nam
 else
 dbg(udev, "empty rules file '%s'\n", name_loop-&gt;name);
 } else
-err(udev, "could not read '%s': %s\n", name_loop-&gt;name, strerror(errno));
+err(udev, "could not read '%s': %m\n", name_loop-&gt;name);
 list_del(&amp;name_loop-&gt;node);
 free(name_loop);
 }
diff --git a/udev/udev_sysfs.c b/udev/udev_sysfs.c
index 3e395a2..2ea724a 100644
--- a/udev/udev_sysfs.c
+++ b/udev/udev_sysfs.c
&lt; at &gt;&lt; at &gt; -173,7 +173,7 &lt; at &gt;&lt; at &gt; struct sysfs_device *sysfs_device_get(struct udev *udev, const char *devpath)
 util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
 util_strlcat(path, devpath_real, sizeof(path));
 if (lstat(path, &amp;statbuf) != 0) {
-dbg(udev, "stat '%s' failed: %s\n", path, strerror(errno));
+dbg(udev, "stat '%s' failed: %m\n", path);
 return NULL;
 }
 if (S_ISLNK(statbuf.st_mode)) {
&lt; at &gt;&lt; at &gt; -352,7 +352,7 &lt; at &gt;&lt; at &gt; char *sysfs_attr_get_value(struct udev *udev, const char *devpath, const char *a
 list_add(&amp;attr-&gt;node, &amp;attr_list);
 
 if (lstat(path_full, &amp;statbuf) != 0) {
-dbg(udev, "stat '%s' failed: %s\n", path_full, strerror(errno));
+dbg(udev, "stat '%s' failed: %m\n", path_full);
 goto out;
 }
 
diff --git a/udev/udev_utils.c b/udev/udev_utils.c
index 09b965e..4623c30 100644
--- a/udev/udev_utils.c
+++ b/udev/udev_utils.c
&lt; at &gt;&lt; at &gt; -132,7 +132,7 &lt; at &gt;&lt; at &gt; int add_matching_files(struct udev *udev, struct list_head *name_list, const cha
 dbg(udev, "open directory '%s'\n", dirname);
 dir = opendir(dirname);
 if (dir == NULL) {
-err(udev, "unable to open '%s': %s\n", dirname, strerror(errno));
+err(udev, "unable to open '%s': %m\n", dirname);
 return -1;
 }
 
&lt; at &gt;&lt; at &gt; -176,7 +176,7 &lt; at &gt;&lt; at &gt; uid_t lookup_user(struct udev *udev, const char *user)
 if (errno == 0 || errno == ENOENT || errno == ESRCH)
 err(udev, "specified user '%s' unknown\n", user);
 else
-err(udev, "error resolving user '%s': %s\n", user, strerror(errno));
+err(udev, "error resolving user '%s': %m\n", user);
 } else
 uid = pw-&gt;pw_uid;
 
&lt; at &gt;&lt; at &gt; -194,7 +194,7 &lt; at &gt;&lt; at &gt; extern gid_t lookup_group(struct udev *udev, const char *group)
 if (errno == 0 || errno == ENOENT || errno == ESRCH)
 err(udev, "specified group '%s' unknown\n", group);
 else
-err(udev, "error resolving group '%s': %s\n", group, strerror(errno));
+err(udev, "error resolving group '%s': %m\n", group);
 } else
 gid = gr-&gt;gr_gid;
 
diff --git a/udev/udev_utils_file.c b/udev/udev_utils_file.c
index 1c7b073..84ff09e 100644
--- a/udev/udev_utils_file.c
+++ b/udev/udev_utils_file.c
&lt; at &gt;&lt; at &gt; -91,7 +91,7 &lt; at &gt;&lt; at &gt; int delete_path(struct udev *udev, const char *path)
 if (retval) {
 if (errno == ENOTEMPTY)
 return 0;
-err(udev, "rmdir(%s) failed: %s\n", p, strerror(errno));
+err(udev, "rmdir(%s) failed: %m\n", p);
 break;
 }
 dbg(udev, "removed '%s'\n", p);
&lt; at &gt;&lt; at &gt; -108,18 +108,18 &lt; at &gt;&lt; at &gt; int unlink_secure(struct udev *udev, const char *filename)
 
 retval = chown(filename, 0, 0);
 if (retval)
-err(udev, "chown(%s, 0, 0) failed: %s\n", filename, strerror(errno));
+err(udev, "chown(%s, 0, 0) failed: %m\n", filename);
 
 retval = chmod(filename, 0000);
 if (retval)
-err(udev, "chmod(%s, 0000) failed: %s\n", filename, strerror(errno));
+err(udev, "chmod(%s, 0000) failed: %m\n", filename);
 
 retval = unlink(filename);
 if (errno == ENOENT)
 retval = 0;
 
 if (retval)
-err(udev, "unlink(%s) failed: %s\n", filename, strerror(errno));
+err(udev, "unlink(%s) failed: %m\n", filename);
 
 return retval;
 }
diff --git a/udev/udevadm-monitor.c b/udev/udevadm-monitor.c
index 01126c9..d5992ce 100644
--- a/udev/udevadm-monitor.c
+++ b/udev/udevadm-monitor.c
&lt; at &gt;&lt; at &gt; -168,7 +168,7 &lt; at &gt;&lt; at &gt; int udevadm_monitor(struct udev *udev, int argc, char *argv[])
  &amp;readfds, NULL, NULL, NULL);
 if (fdcount &lt; 0) {
 if (errno != EINTR)
-fprintf(stderr, "error receiving uevent message: %s\n", strerror(errno));
+fprintf(stderr, "error receiving uevent message: %m\n");
 continue;
 }
 
diff --git a/udev/udevadm-trigger.c b/udev/udevadm-trigger.c
index e7940ef..a0f10da 100644
--- a/udev/udevadm-trigger.c
+++ b/udev/udevadm-trigger.c
&lt; at &gt;&lt; at &gt; -105,12 +105,12 &lt; at &gt;&lt; at &gt; static void trigger_uevent(struct udev *udev, const char *syspath, const char *a
 
 fd = open(filename, O_WRONLY);
 if (fd &lt; 0) {
-dbg(udev, "error on opening %s: %s\n", filename, strerror(errno));
+dbg(udev, "error on opening %s: %m\n", filename);
 return;
 }
 
 if (write(fd, action, strlen(action)) &lt; 0)
-info(udev, "error writing '%s' to '%s': %s\n", action, filename, strerror(errno));
+info(udev, "error writing '%s' to '%s': %m\n", action, filename);
 
 close(fd);
 }
diff --git a/udev/udevd.c b/udev/udevd.c
index e1ae7ea..1f8483c 100644
--- a/udev/udevd.c
+++ b/udev/udevd.c
&lt; at &gt;&lt; at &gt; -264,7 +264,7 &lt; at &gt;&lt; at &gt; static void udev_event_run(struct udevd_uevent_msg *msg)
 exit(1);
 exit(0);
 case -1:
-err(msg-&gt;udev, "fork of child failed: %s\n", strerror(errno));
+err(msg-&gt;udev, "fork of child failed: %m\n");
 msg_queue_delete(msg);
 break;
 default:
&lt; at &gt;&lt; at &gt; -619,7 +619,7 &lt; at &gt;&lt; at &gt; static struct udevd_uevent_msg *get_netlink_msg(struct udev *udev)
 size = recv(uevent_netlink_sock, &amp;buffer, sizeof(buffer), 0);
 if (size &lt;  0) {
 if (errno != EINTR)
-err(udev, "unable to receive kernel netlink message: %s\n", strerror(errno));
+err(udev, "unable to receive kernel netlink message: %m\n");
 return NULL;
 }
 
&lt; at &gt;&lt; at &gt; -729,7 +729,7 &lt; at &gt;&lt; at &gt; static int init_uevent_netlink_sock(struct udev *udev)
 
 uevent_netlink_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
 if (uevent_netlink_sock == -1) {
-err(udev, "error getting socket: %s\n", strerror(errno));
+err(udev, "error getting socket: %m\n");
 return -1;
 }
 
&lt; at &gt;&lt; at &gt; -738,7 +738,7 &lt; at &gt;&lt; at &gt; static int init_uevent_netlink_sock(struct udev *udev)
 
 retval = bind(uevent_netlink_sock, (struct sockaddr *) &amp;snl, sizeof(struct sockaddr_nl));
 if (retval &lt; 0) {
-err(udev, "bind failed: %s\n", strerror(errno));
+err(udev, "bind failed: %m\n");
 close(uevent_netlink_sock);
 uevent_netlink_sock = -1;
 return -1;
&lt; at &gt;&lt; at &gt; -876,29 +876,29 &lt; at &gt;&lt; at &gt; int main(int argc, char *argv[])
 
 retval = pipe(signal_pipe);
 if (retval &lt; 0) {
-err(udev, "error getting pipes: %s\n", strerror(errno));
+err(udev, "error getting pipes: %m\n");
 goto exit;
 }
 
 retval = fcntl(signal_pipe[READ_END], F_GETFL, 0);
 if (retval &lt; 0) {
-err(udev, "error fcntl on read pipe: %s\n", strerror(errno));
+err(udev, "error fcntl on read pipe: %m\n");
 goto exit;
 }
 retval = fcntl(signal_pipe[READ_END], F_SETFL, retval | O_NONBLOCK);
 if (retval &lt; 0) {
-err(udev, "error fcntl on read pipe: %s\n", strerror(errno));
+err(udev, "error fcntl on read pipe: %m\n");
 goto exit;
 }
 
 retval = fcntl(signal_pipe[WRITE_END], F_GETFL, 0);
 if (retval &lt; 0) {
-err(udev, "error fcntl on write pipe: %s\n", strerror(errno));
+err(udev, "error fcntl on write pipe: %m\n");
 goto exit;
 }
 retval = fcntl(signal_pipe[WRITE_END], F_SETFL, retval | O_NONBLOCK);
 if (retval &lt; 0) {
-err(udev, "error fcntl on write pipe: %s\n", strerror(errno));
+err(udev, "error fcntl on write pipe: %m\n");
 goto exit;
 }
 
&lt; at &gt;&lt; at &gt; -917,7 +917,7 &lt; at &gt;&lt; at &gt; int main(int argc, char *argv[])
 dbg(udev, "daemonized fork running\n");
 break;
 case -1:
-err(udev, "fork of daemon failed: %s\n", strerror(errno));
+err(udev, "fork of daemon failed: %m\n");
 rc = 4;
 goto exit;
 default:
&lt; at &gt;&lt; at &gt; -945,7 +945,7 &lt; at &gt;&lt; at &gt; int main(int argc, char *argv[])
 /* OOM_DISABLE == -17 */
 fd = open("/proc/self/oom_adj", O_RDWR);
 if (fd &lt; 0)
-err(udev, "error disabling OOM: %s\n", strerror(errno));
+err(udev, "error disabling OOM: %m\n");
 else {
 write(fd, "-17", 3);
 close(fd);
&lt; at &gt;&lt; at &gt; -992,7 +992,7 &lt; at &gt;&lt; at &gt; int main(int argc, char *argv[])
 } else if (errno == ENOSYS)
 err(udev, "the kernel does not support inotify, udevd can't monitor rules file changes\n");
 else
-err(udev, "inotify_init failed: %s\n", strerror(errno));
+err(udev, "inotify_init failed: %m\n");
 
 /* maximum limit of forked childs */
 value = getenv("UDEVD_MAX_CHILDS");
&lt; at &gt;&lt; at &gt; -1035,7 +1035,7 &lt; at &gt;&lt; at &gt; int main(int argc, char *argv[])
 fdcount = select(maxfd+1, &amp;readfds, NULL, NULL, NULL);
 if (fdcount &lt; 0) {
 if (errno != EINTR)
-err(udev, "error in select: %s\n", strerror(errno));
+err(udev, "error in select: %m\n");
 continue;
 }
 


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-29T15:01:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13108">
    <title>udev: bug in /lib/udev/path_id -- wrong assumptions about ieee1394 devices?</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13108</link>
    <description>Hi,

the path_id script was apparently written with the assumption that the 
hierarchy of IEEE1394 device representation begins with fw-host devices 
and ends with children (node entry devices) or grandchildren (unit 
directory devices) of them.

If there are more levels of descendant devices than that, i.e. if there 
are children of unit directory devices, then path_id may get stuck with 
100% CPU utilization.

This is not a problem with current mainline drivers.  But there is a new 
driver to be added soon which adds input devices which would naturally 
be children of unit directory devices.  (It's the firedtv driver for 
FireDTV DVB devices which feature a remote control.  See 
http://ieee1394.wiki.kernel.org/index.php/Out-of-tree_Kernel_Drivers and 
http://user.in-berlin.de/~s5r6/linux1394/firedtv/.)

I will work around this path_id bug by making the input devices children 
of the fw-host devices.  The drawback is that some useful information 
from the unit directory device and node entry device (like model, 
vendor, and unique ID) will be unavailable that way.

Strangely, path_id does not hang due to the dvb child and dvb/* 
grandchildren of the node entry device.

(I tested with Gentoo's udev-124-r1.)

I hope that I won't need that workaround when I port firedtv from the 
ieee1394 stack to the firewire stack.  The firewire stack does not have
fw-host devices (only node entry devices and unit directory devices, 
with different names and attributes than in the ieee1394 stack), hence
path_id's ieee1394 heuristics will not be triggered if the firewire 
stack is running.

Just FYI.
</description>
    <dc:creator>Stefan Richter</dc:creator>
    <dc:date>2008-09-28T22:54:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13104">
    <title>[PATCH 0/2] udevd: Optimize "goto"</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13104</link>
    <description>I seem to remember you mentioned this as a longer-term goal.  This was
in the context of the TODO item "rework rules to a match-action list,
instead of a rules array".

The idea was to move the scan for the label targeted by a goto rule
(udev_rules_iter_label), from run-time to parse-time.  It avoids
repeating the scan for every event.

I already had a patch for this specific idea.  I think it can be
implemented now without causing problems.  It's no big win - cachegrind
suggests it takes 5% off user cpu time - but it is progress.
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-28T11:00:29</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13103">
    <title>udev and udevadm - Polish translation of user manual</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13103</link>
    <description>I append man udevadm Polish translation with corrected troff version. I also have translated man udev - see attachment.

Regards
TN</description>
    <dc:creator>spamgrinder</dc:creator>
    <dc:date>2008-09-27T01:23:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13095">
    <title>Differend udev names with different kernels</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13095</link>
    <description>Hi,

what's the intention of /dev/disk/by-id/?

My firewire hard disk seems to have different names with different
kernels.

With 2.6.26.3, it's name is
/dev/disk/by-id/ieee1394-0030e001e0006585:00043c:0000.

With someting after 2.6.27-rc7, merged with Arjan's fastboot branch,
the disk has the same name.

With 2.6.27-rc7, it is called
/dev/disk/by-id/scsi-1WDC_WD10EACS-00D6B0_WD-WCAU41668315.

One major config difference is that 2.6.26.3 has CONFIG_FIREWIRE and
CONFIG_FIREWIRE_SBP2 set to "m", whereas the 2.6.27 kernels have set
them to "y". But that doesn't explain the difference between both
2.6.27-rc kernels.

Shouldn't these names be somewhat constant? Otherwise they would be
totally useless.

Regards,
Tino
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Tino Keitel</dc:creator>
    <dc:date>2008-09-24T20:01:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13094">
    <title>Polish manual translation for udevadm</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13094</link>
    <description>Hi,

are you interested in appending to udev package the Polish translation 
of man udevadm?

I attached *roff and docbook versions of man for udev-128, both in 
UTF-8, but I can't give command for proper encoding (manpage from 
docbook version have missing Polish chars like "ł" or ó"), see diferent 
both manpages.

Regards and sorry for my poor English
T.N.</description>
    <dc:creator>spamgrinder</dc:creator>
    <dc:date>2008-09-23T00:54:49</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13091">
    <title>[RFC PATCH] compiler warning on 32-bit</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13091</link>
    <description>The sg_io_v4 interface passes pointers as u64s.  It turns out GCC
disapproves of us casting a u64 straight to a 32 bit pointer.

cc1: warnings being treated as errors
scsi_serial.c: In function ‘sg_err_category4’:
scsi_serial.c:159: warning: cast to pointer from integer of different size
scsi_serial.c: In function ‘scsi_dump_v4’:
scsi_serial.c:303: warning: cast to pointer from integer of different size

We could either suppress this with -Wno-int-to-pointer-cast or work around it.

diff --git a/extras/scsi_id/scsi_serial.c b/extras/scsi_id/scsi_serial.c
index 757f41d..20d30cf 100644
--- a/extras/scsi_id/scsi_serial.c
+++ b/extras/scsi_id/scsi_serial.c
&lt; at &gt;&lt; at &gt; -156,7 +156,7 &lt; at &gt;&lt; at &gt; static int sg_err_category4(struct udev *udev, struct sg_io_v4 *hp)
 {
 return sg_err_category_new(udev, hp-&gt;device_status, 0,
    hp-&gt;transport_status, hp-&gt;driver_status,
-   (unsigned char *)hp-&gt;response,
+   (unsigned char *)(uintptr_t)hp-&gt;response,
    hp-&gt;response_len);
 }
 
&lt; at &gt;&lt; at &gt; -300,7 +300,7 &lt; at &gt;&lt; at &gt; static int scsi_dump_v4(struct udev *udev,
     dev_scsi-&gt;kernel, io-&gt;driver_status, io-&gt;transport_status,
      io-&gt;device_status);
 if (io-&gt;device_status == SCSI_CHECK_CONDITION)
-return scsi_dump_sense(udev, dev_scsi, (unsigned char *)io-&gt;response,
+return scsi_dump_sense(udev, dev_scsi, (unsigned char *)(uintptr_t)io-&gt;response,
        io-&gt;response_len);
 else
 return -1;


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-19T14:53:25</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13087">
    <title>ntfs.c failure in udev128</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13087</link>
    <description>I am having problems with udev recognizing an ntfs filesystem under udev128.
Strangly, another ntfs partition is being recognized. (One formatted
using mkfs.ntfs.)

(I have added extra info() lines to ntfs.c and util.c as my syslog
config is not picking up debug statements.)
Under udev-127:
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:134
sectorsize  0x200
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:135
clustersize 0x1000
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:136
mftcluster  786432
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:137
mftoffset  0xc0000000
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:138
cluster per mft_record  -10
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: ntfs.c:139
mft record size  1024
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: util.c:356
disk: 5
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: util.c:357
get buffer off 0xc0000c00(3221228544), len 0x400
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: util.c:406
read seekbuf off:0xc0000c00 len:0x400
Sep 18 11:06:54 coota hald-probe-volume: 5310: 11:06:54.657: util.c:407
lseek(5, 0xc0000c00, 0)
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [I]
probe-volume.c:623: volume_id_probe_all returned 0
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [D]
probe-volume.c:107: volume.fsusage = 'filesystem'
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [D]
probe-volume.c:113: volume.fstype = 'ntfs'
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [D]
probe-volume.c:118: volume.fsversion = '3.1'
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [D]
probe-volume.c:123: volume.uuid = '5A20835C20833E4F'
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [D]
probe-volume.c:135: volume.label = 'mytest'
Sep 18 11:06:54 coota hald-probe-volume: [5310]: 11:06:54.658 [I]
probe-volume.c:695: Loading part table

Under udev-128:
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:138
sectorsize  0x200
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:139
clustersize 0x1000
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:140
mftcluster  786432
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:141
mftoffset  0xc0000000
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:142
cluster per mft_record  -10
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: ntfs.c:143
mft record size  1024
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: util.c:354
disk: 5
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: util.c:355
get buffer off 0xc0000c00(3221228544), len 0x400
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: util.c:404
read seekbuf off:0xc0000c00 len:0x400
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: util.c:405
lseek(5, 0xc0000c00, 0)
Sep 18 10:24:06 coota hald-probe-volume: 4728: 10:24:06.793: util.c:407
lseek failed (Invalid argument)

I can run with udev127 till future ones work.

Is there a bug manager for udev?
</description>
    <dc:creator>Scott Tester</dc:creator>
    <dc:date>2008-09-18T01:34:59</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13086">
    <title>lvm+dmsetup device mapper rules</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13086</link>
    <description>This is an attempt at generic device mapper rules file. Both lvm and
manually (dmsetup) created devices are supported. The rules file depends
only on lvm and dmsetup binaries.

Standard /dev/disk/* symlinks are created at the end, with additional
/dev/disk/by-id/dm-uuid-* symlinks (by device's uuid, not filesystem's one).

KERNEL=="device-mapper", NAME="mapper/control", GOTO="dm_end"

ACTION!="add|change", GOTO="dm_end"
SUBSYSTEM!="block", GOTO="dm_end"
KERNEL!="dm*", GOTO="dm_end"

# First get the name from dmsetup - it can be fed to lvs for parsing

PROGRAM="/sbin/dmsetup info -c --noheadings -o name -j%M -m%m", ENV{DM_NAME}="%c"
ENV{DM_NAME}!="?*", GOTO="dm_end"

ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}"

# Try to get volume group name
# - lvs always indents first field with 2 spaces (thus %c{2})
# - note, that node doesn't have to exist, and it would fail if $tempnode was used

PROGRAM="/sbin/lvm lvs --ignorelockingfailure --noheadings -o vg_name /dev/mapper/$env{DM_NAME}", ENV{LVM_VGN}="%c{2}"
ENV{LVM_VGN}!="?*", GOTO="dm_finalize"
PROGRAM="/sbin/lvm lvs --ignorelockingfailure --noheadings -o lv_name /dev/mapper/$env{DM_NAME}", ENV{LVM_LVN}="%c{2}"
ENV{LVM_LVN}!="?*", GOTO="dm_finalize"

SYMLINK+="$env{LVM_VGN}/$env{LVM_LVN}"

LABEL="dm_finalize"

# /disk/* symlinks

PROGRAM="/sbin/dmsetup info -c --noheadings -o uuid -j%M -m%m", SYMLINK+="disk/by-id/dm-uuid-%c"
IMPORT{program}="vol_id --export $tempnode"
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

LABEL="dm_end"



</description>
    <dc:creator>Michal Soltys</dc:creator>
    <dc:date>2008-09-17T12:35:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13082">
    <title>udev-test.pl failures</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13082</link>
    <description>commit 8753fadf2a6ecead372e71b8bf9336cf29f9c958
Author: Kay Sievers &lt;kay.sievers&lt; at &gt;vrfy.org&gt;
Date:   Mon Sep 15 17:12:47 2008 -0700

    libudev: switch API from devpath to syspath


Lots of the udev tests fail here.  udev_sysfs.c broke when
util_resolve_sys_link() switched API.  I'll leave this up to you - maybe
your next commit is going to do away with udev_sysfs.c altogether :-).

Regards
Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-16T10:09:13</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.hotplug.devel/13081">
    <title>[PATCH] udev-test.pl: set non-zero exitcode if tests fail</title>
    <link>http://comments.gmane.org/gmane.linux.hotplug.devel/13081</link>
    <description>This will allow for automated testing e.g. git-bisect run:

git bisect run sudo sh -c "cd test; ./udev-test.pl"

Signed-off-by: Alan Jenkins &lt;alan-jenkins&lt; at &gt;tuffmail.co.uk&gt;

diff --git a/test/udev-test.pl b/test/udev-test.pl
index a83b156..27ff2a7 100755
--- a/test/udev-test.pl
+++ b/test/udev-test.pl
&lt; at &gt;&lt; at &gt; -1896,3 +1896,7 &lt; at &gt;&lt; at &gt; system("rm -rf $udev_root");
 unlink($udev_rules);
 unlink($udev_conf);
 
+if ($error &gt; 0) {
+    exit(1);
+}
+exit(0);


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo&lt; at &gt;vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

</description>
    <dc:creator>Alan Jenkins</dc:creator>
    <dc:date>2008-09-16T08:38:33</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.linux.hotplug.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.hotplug.devel</link>
  </textinput>
</rdf:RDF>
