Summary of changes from v181 to v182
============================================

Kay Sievers (22):
      build-sys: unpack test sysfs only for 'make check'
      build-sys: add --disable-manpages
      update sd-daemon files
      test: remove outdated key attributes
      update TOO
      builtin: path_id - remove dead cciss code
      rules: do not create by-id/scsi-* links for ATA devices
      remove udev-acl
      udev.conf - do not set any value by default
      move src/extras subdirectories to src/
      rules: delete outdated 30-kernel-compat.rules
      rules: move 42-qemu-usb.rules to rules/ dir
      remove edd_id extra
      build-sys: remove empty directory
      rules: delete s390 rules, they will move to s390utils
      update TODO
      rules: move all rules to top level rules/ dir
      extras: path_id - skip ATA transport class devices
      extras: path_id - add comment about readdir() rebase logic
      extras: ata_id - do not log error if HDIO_GET_IDENTITY fails
      rules sort order: /lib, /run, /etc
      build-sys: place build binaries in the root

Matthew Garrett (1):
      rules: Enable USB autosuspend on more USB HID devices


Summary of changes from v180 to v181
============================================

Andreas Schwab (1):
      ata_id: fix identify string fixup

Bruno Redondi (1):
      keymap: Add Fujitsu Siemens Amilo Li 2732

James M. Leddy (1):
      keymap: Fix touchpad toggle button on Lenovo Ideapad

Kay Sievers (4):
      configure: show ROOTPREFIX in firmware path option help text
      extras: cdrom_id -  create /dev/cdrom and conditionally /dev/dvd for sr0
      extras: cdrom_id -  create only /dev/cdrom
      ata_id: whitespace fixes

Lucas De Marchi (1):
      builtin: kmod - depend on libkmod >= 5


Summary of changes from v179 to v180
============================================

Kay Sievers (4):
      Makefile: update kernel.org hooks
      build-sys: we need to install shipped man pages without xsltproc installed
      builtin: blkid - add missing ID_ prefix for PART_ENTRY_* keys
      do not stop rule processing when device node is no longer around


Summary of changes from v178 to v179
============================================

Kay Sievers (8):
      fix some fallout from tab removal
      use devnode() for $name not sysname(), device nodes might be in a subdirectory
      print warning when rules try to rename kernel device nodes
      move variable inside condition
      update TODO
      build-sys: enable everything for 'make distcheck'
      use sysname() for devices without a device node
      fix path to extras


Summary of changes from v177 to v178
============================================

Evan Nemerson (1):
      gudev: several minor introspection fixes

Kay Sievers (7):
      Makefile: update kernel.org doc hooks for kup
      builtin: blkid - add missing ID_ prefix
      udevd: kill hanging event processes after 30 seconds
      Makefile: switch from .asc to .sign
      rules: rtc - point /dev/rtc symlink to 'hctosys' device
      warn about deprecated RUN+="socket:" use
      libudev: do not set DEVNAME= twice

Martin Pitt (4):
      keymap: Fix rfkill button on Hewlett-Packard HP ProBook
      keymap: Fix eject button on Samsung 700Z series
      keymap: Fix keyboard brightness keys on Samsung 700Z series
      keymap: Add Alienware M14xR1


Summary of changes from v176 to v177
============================================

Kay Sievers (3):
      Makefile: update kernel.org sign and upload hook
      rule_generator: fix to install rules in rules.d/
      rule_generator: use += for dist_udevhome_DATA


Summary of changes from v175 to v176
============================================

Alan Stern (1):
      [PATCH[ udev: ata_id: Fix length of INQUIRY command

Kay Sievers (61):
      libudev: print log_fn address instead of ctx when setting logging function
      do not ship autogen.sh in the tarball
      man: clarify 'config file stack'
      rename 'init' directory to 'systemd'
      systemd: use PassCred=yes
      use libexecdir, bindir, sbindir, switch to /usr/lib/udev in documentation
      configure: fix typo
      make: do not (mis-)use the config file generator, create .xz tarball
      prepare builtins for blkid and kmod
      add builtin load/unload initializers
      build argv[] for builtin commands
      update blkid builtin
      rules: switch to built-in blkid
      rules: do not preprocess 60-persistent-storage.rules
      buildsys: disable tar.gz
      builtin: blkid - add missing newline
      builtin: blkid - add missing ID_FS_USAGE
      builtin: kmod - switch modprobe to builtin
      rules: do not preprocess 80-drivers.rules + 75-probe_mtd.rules
      builtin: apply format string
      remove last sbindir use
      update NEWS
      autogen.sh: moce CFLAGS from to configure.ac; print common ./configure options
      builtin: kmod - link against libkmod
      add copyright
      builtin: kmod - reload index when rules are reloaded
      builtin: rename load()/unload() to init()/exit()
      invalidate rules and kmod index with 'udevadm control --reload'
      update NEWS
      builtin: firmware - move 'firmware' tool to builtins
      builtin: firmware - add missing file
      builtin: kmod - hook up udev main logging to libkmod
      make: introduce --with-rootprefix=
      update NEWS
      move rules dirs to udev context; replace inotify with time-controlled stat()
      udevd: always create runtime dir
      builtin: move usb-db, pci-db to builtins
      builtin: kmod - switch to kmod_module_probe_insert_module()
      udevd: remove TIMEOUT= handling
      update README
      systemd: rename PassCred= to PsssCredentials=
      remove mknod() logic and rely on 'devtmpfs'
      builtin: kmod - hook up kmod_validate_resources()
      build-sys: use use ${ac_default_prefix}
      require kmod >= 3
      build-sys: use --libexecdir=/usr/lib instead of /usr/lib/udev
      autogen.sh: enable git pre-commit
      merge udev/, libudev/, systemd/ files in src/; move extras/ to src/
      replace unpacked sysfs test tree 'test/sys/' with packed tarball
      rules: delete arch specific rules
      doc: fix out of tree build (copy from libkmod)
      autogen.sh: add CFLAGS and print entire line, so that mouse copy/paste works
      build-sys: try to build without installed xsltproc
      add test/src to .gitignore
      tabs are as useful as a hole in the head
      autogen.sh: makedev() misteriously breaks with -O0 here, use -O1 for now
      fix debug message
      add .vimrc
      cdrom_id: int -> bool
      fix compiler warning
      man: mention that no daemons should be started by udev

Lucas De Marchi (1):
      builtin: kmod - log if modules are blacklisted

Luis Felipe Strano Moraes (1):
      Switch spawn_read to void and remove useless stores there.

Martin Pitt (1):
      75-persistent-net-generator.rules: Add Xen

Mike Frysinger (1):
      hwdb: drop useless line freeing

Sjoerd Simons (1):
      keymap: Add Lenovo Thinkpad X220 Tablet

Ville Skyttä (1):
      man: spelling fix


Summary of changes from v174 to v175
============================================

David Zeuthen (2):
      gudev: Use strtoul to parse unsigned 64-bit integers
      gudev: Use g_ascii_strtoull() instead of strtoul()

Harald Hoyer (1):
      extras/keymap/findkeyboards: beautify shell code and get rid of grep

Jerone Young (1):
      keymap: Fix micmute remap for Lenovo Thinkpads

Kay Sievers (7):
      make: add gpg signing bits
      ignore entire rules line if unknown keys are used
      do not skip /dev/{disk,char}/M:m removal when the device node is already gone
      replace AC_DISABLE_STATIC with LT_INIT([disable-static])
      make: tweak some autofoo according to Flameeyes' recommendations for libabc
      rules: restore rule to set cdrom group for optical drives
      rules: fix typo

Martin Pitt (8):
      check-keymaps.sh: Allow running separately
      extras/keymap/findkeyboards: Filter out non-event devices
      findkeyboards: Consistently use spaces instead of tabs
      keymap: Fix stuck keys on GIGABYTE i1520M
      keymap: More Asus module variants
      keymap: Fix "internet" key on HP G62
      keymap: Fix bluetooth key on Acer TravelMate 7720
      keymap: Fix stuck keys on BenQ nScreen


Summary of changes from v173 to v174
============================================

David Zeuthen (1):
      ata_id: Check for Compact Flash card

Jerone Young (1):
      Add mic mute keycode support for Lenovo Thinkpad USB keyboard

Kay Sievers (34):
      gtk-doc: delete empty files
      libudev: list - use binary search for list lookup
      rules: move input_id to default rules
      implement path_id, usb_id, input_id as built-in command
      do not remove static nodes on module unload
      rules: remove legacy rules for cdrom and usb printer
      update TODO
      preserve 'sticky bit' on 'add/change' events
      libudev: util_get_sys_(subsystem,driver}() -> util_get_sys_core_link_value()
      export USEC_INITIALIZED= and take timestamp on message receive time
      libudev: udev_device_get_sysattr_value() return syspath of custom links
      libudev: list - properly sort linked list not only the index
      mknod: do not complain about existing node
      update README
      libudev: fix typo in documentation
      rules: fuse: do not mount fusectl from udev rules
      keymap: add genius keymap to Makefile
      update NEWS
      usb_id: can't use global variables when used as built-in
      remove 'udevadm trigger --type=failed' and SYSFS, ID, BUS keys
      libudev: export udev_util_encode_string()
      update TODO
      systemd: no not start udev in a container
      systemd: no not start udev in a container
      delete left-over files in extras/
      systemd: update drop-in sd-daemon files
      udevadm: control - use /run/udev/control socket instead of abstract namespace one
      udevd: control - no not delete socket file when --daemon is used
      udev_ctrl_cleanup()- accept NULL as argument
      update NEWS
      udevd: install into /lib/udev instead of /sbin
      udevd: add missing braces
      systemd: use ConditionCapability=CAP_MKNOD instead of ConditionVirtualization=!container
      rules: do not load sg module

Kir Kolyshkin (1):
      keymap: add Genius SlimStar 320

Martin Pitt (1):
      keymap: Update Acer Aspire 5920g

Matthias Clasen (1):
      make: allow to pass ${ACLOCAL_FLAGS}

Paul Fox (1):
      keymap: update the OLPC keymap for correct function key behavior

Petr Uzel (1):
      udevadm: settle - return failure if unknown option is given

Steve Langasek (1):
      udevd: exit - process events before signals in worker

Thomas Hood (2):
      keymap: Support keymap overrides in /etc/udev/keymaps
      keymap: Support for microphone mute button on ThinkPad X220 et al


Summary of changes from v172 to v173
============================================

Allin Cottrell (1):
      configure: allow to disable mtd_probe

Kay Sievers (15):
      make: fix 'make tar-sync'
      udevd: use 'uptime' in debug timestamp
      udevd: fix (recently) broken static node permission setting
      rules: mount fuse filesystem only 'add'
      udevadm: move udevadm command descriptions into their files
      udev-acl: skip ACLs when systemd is running, disable by default
      do not delete database when renaming netif, the db name does not change anymore
      do not allow kernel properties to be set by udev rules
      configure: reorder options
      rules: input - do not create (broken) links for bluetooth devices
      rules: serial - do not export ID_PORT, use ID_USB_INTERFACE_NUM
      rules: sound - instead of ID_IFACE use standard ID_USB_INTERFACE_NUM
      keymap: do not run usb_id for bluetooth devices
      udevadm: trigger --type=failed - log deprecation warning
      udevd: debug - put timestamp in []

Martin Pitt (4):
      gudev: Ship JavaScript examples
      scsi_id: Ship README
      Remove obsolete extras/scsi_id/scsi_id.config
      keymap: Only run on key devices


Summary of changes from v171 to v172
============================================

Bastien Nocera (3):
      accelerometer: add orientation property
      udev-acl: fix memleak
      accelerometer: add documentation

Harald Hoyer (2):
      udevadm-*.c: return != 0, if unknown option given
      udev/udevadm-monitor.c: fixed misplaced brace

Kay Sievers (33):
      rules: apply 'audio' group of the static snd/{seq,timer} nodes
      Makefile: add tar-sync
      rules: static_node - use 0660 if group is given to get the cigar
      rule-syntax-check.py: use print()
      make: use 'git tag'
      rules: run input_id for main input devices too
      update TODO
      configure: add AC_CONFIG_AUX_DIR, AC_CONFIG_SRCDIR
      cdrom_id: add tray lock and eject handling
      rules: enable in-kernel media-presence polling
      update TODO
      delete mobile-action-modeswitch which has moved to usb_modeswitch
      libudev: enumerate - scan /sys/module
      rules: move polling rule above 'block' match
      libudev: monitor - update doc
      rules: set polling value only if it is disabled
      libudev: device - fix udev_device_get_tags_list_entry() to always load database
      rules: remove redundant MODE="0664" from lp rules
      rules: fix wrong wildcard match, we always need a ':*' at the end
      libudev: device - export udev_device_has_tag()
      path_id: add missing '-' to tape suffix
      path_id: add ID_PATH_TAG= to be used in udev tags
      enforce valid TAG+= names
      update TODO
      libudev: device - add udev_device_has_tag() to libudev.h and gtk-doc
      libudev: enumerate - add udev_enumerate_add_match_parent()
      libudev: enumerate - include parent device itself with match_parent()
      libudev: enumerate - clarify documentation
      path_id: recognize ACPI parent devices
      rules: input - call path_id for ACPI devices
      udevadm: monitor - use uptime to match the kernel's timestamp
      libudev: ctrl - move code to udev directory
      update sd-daemon.[ch]

Keshav P.R (1):
      rules: support for gpt partition uuid/label

Lee, Chun-Yi (1):
      Support more MSI notebook by using asterisk on dmi vendor name

Marco d'Itri (1):
      Add missing commas to 95-keymap.rules

Martin Pitt (3):
      keymap: Add Microsoft Natural Keyboard
      keymap: Add force-release quirk for Hannspree SN10.
      keymap: Add slight name variations of Toshiba Satellites

Peter Jones (1):
      ata_id: show the error message when HDIO_GET_IDENTITY fails


Summary of changes from v170 to v171
============================================

Kay Sievers (17):
      libudev: export symbols explicitely and individually from C code not from separate file or prefix match
      libudev: device - make a bunch of symbols static
      systemd: Replace Requires= with Wants=, run trigger in parallel
      systemd: sort trigger after socket
      systemd: trigger - run after udev.service (for now)
      systemd: set socket buffer size to 128 MB like udev has
      update TODO
      update TODO
      libudev: monitor - use SOCK_NONBLOCK
      systemd: split socket file
      systemd: add missing socket files
      rules: fix whitespace
      rules: implement TAGS== match
      libudev: enumerate - do not ignore other matches when add_match_tag() is used
      rules: support substitutions in TAG=
      path_id: allow to be asked about usb_devices not only usb_interfaces
      systemd: run udev.service and udev-trigger.service in parallel

Scott James Remnant (1):
      configure: allow usb.ids location to be specified


Summary of changes from v169 to v170
============================================

Kay Sievers (1):
      libudev: ctrl - properly wait for incoming message after connect

Michal Soltys (1):
      configure.ac: fixes for rule_generator and modeswitch


Summary of changes from v168 to v169
============================================

Kay Sievers (26):
      simplify rules file overwrite logic
      libudev: list - use bit flags for 'sort' and 'unique'
      libudev: queue - _unref() should return the object
      remove dead fstab_import files
      hid2hci: prepare move to bluez package
      set event timeout to 60 sec and settle timeout to 120
      udevd: improve error message in case exec() fails
      configure: allow to enable/disable extras individually
      delete hid2hci which moved to the bluez tree
      update TODO/NEWS
      bump requirement to Linux kernel 2.6.32 and ARM 2.6.36
      libudev: ctrl - log accept4() errors
      update NEWS
      update INSTALL, NEWS, configure comment, queue doc
      update TODO
      udevd: create queue file before daemonizing to reliably block 'settle'
      udevd: remove left-over SIGALRM
      gudev: silent gtk-doc warnings
      cdrom_id: remove unused --export switch to silent gcc
      libudev: queue - always rebuild queue file when nothing is queued anymore
      libudev: device - use DEVMODE from kernel as the default mode
      update TODO
      Merge branch 'docs/udev.xml' of git://github.com/mfwitten/udev
      udate TODO, NEWS, INSTALL
      build: use --gc-sections, -fvisibility=hidden
      udevadm: settle: wake up more often if --seq-start= or --exit-if-exists= is used

Koen Kooi (1):
      configure: reintroduce introspection flags to fix crosscompilation

Michael Witten (36):
      Docs: udev.xml: Offset daemon name with commas
      Docs: udev.xml: Remove commas (and unnecessary repetition)
      Docs: udev.xml: `are' -> `is'; the subject is `Access'
      Docs: udev.xml: Use present tense
      Docs: udev.xml: Clarification through proper wording
      Docs: udev.xml: `,' -> `;'
      Docs: udev.xml: `key value' -> `key-value'
      Docs: udev.xml: `,' -> `:'
      Docs: udev.xml: Use `assignment' consistently
      Docs: udev.xml: `comma-separated' is a better description
      Docs: udev.xml: Remove unnecessary repitition
      Docs: udev.xml: Add a few more words for context
      Docs: udev.xml: Use `unless' for clarity
      Docs: udev.xml: Clarify PROGRAM key
      Docs: udev.xml: `a shell style' -> `shell-style'
      Docs: udev.xml: Clean `*' description
      Docs: udev.xml: Clean character range description
      Docs: udev.xml: Clean up description of NAME assignment key
      Docs: udev.xml: Clean up description of SYMLINK assignment key
      Docs: udev.xml: Clean up description of ENV assignment key
      Docs: udev.xml: Clean up description of RUN assignment key
      Docs: udev.xml: Clean up description of LABEL assignment key
      Docs: udev.xml: Add missing `.'
      Docs: udev.xml: `which' -> `content of which'
      Docs: udev.xml: `commandline' -> `command line'
      Docs: udev.xml: Clean up WAIT_FOR description
      Docs: udev.xml: `a' -> `the'
      Docs: udev.xml: Clean up introduction to substitutions.
      Docs: udev.xml: Use normal sentence structure
      Docs: udev.xml: Actually make a separate paragraph
      Docs: udev.xml: Add comma
      Docs: udev.xml: `char' -> `character'
      Docs: udev.xml: `comma-separated' is a better description
      Docs: udev.xml: Clarify through a change in word ordering
      Docs: udev.xml: Improved word order
      Docs: udev.xml: Fix dangling modifier

Nix (1):
      libudev: queue - accept NULL passed into udev_queue_export_cleanup()


Summary of changes from v167 to v168
============================================

David Zeuthen (1):
      Run ata_id on non-removable USB devices

Harald Hoyer (1):
      udevd: clarify worker exit status

Kay Sievers (35):
      version bump
      systemd: let settle depend on trigger, do not block basic with trigger
      selinux: do not label files in runtime dir
      selinux: firmware - do not label files in runtime dir
      udevadm: control - add --exit
      trivial cleanups
      udevd: log warning if /run is not writable
      libudev: ctrl - fix refcounting in connection handling
      udevadm: settle - watch queue file
      libudev: bump revision
      udevadm: info --cleanup-db
      udevd: do not nice processes
      "db_persist=" -> "db_persist"
      udevd: move OOM disable into --daemon option
      systemd: add OOMScoreAdjust=-1000
      require explicit "db_persist" to exclude device info from --db-cleanup
      udevd: get netlink socket from systemd
      fix more warnings
      libudev: ctrl, monitor - use SOCK_NONBLOCK
      systemd: socket -> sockets
      udevadm: monitor - use epoll
      libudev: test - use epoll
      udevadm:  test - use printf() instead of info() for non-debug output
      use 'else if' in epoll event array loop
      libudev: run_program() - select() -> epoll
      udevd: ppoll() -> epoll + signalfd
      Merge branch 'docs/README' of git://github.com/mfwitten/udev
      timeout handling without alarm()
      udevadm: settle - kill alarm()
      udevd: netif rename - use ifindex for temporary name
      udevd: always use udevd[] log prefix
      udevd: rules files - accept empty or /dev/null links
      udevd: log signal number when spawned processes fail
      systemd: Reqires= -> Wants=udev.socket
      udevd, udev-event: sync waitpid() error handling

Lee, Chun-Yi (1):
      Add rule for Acer Aspire One ZG8 to use acer-aspire_5720 keymap

Leonid Antonenkov (1):
      rule-generator: net - ignore Hyper-V virtual interfaces

Martin Pitt (3):
      Revert "Do not build extras with --disable-extras"
      Avoid spinning up CD on pressing eject button
      keymap: Another ID for Logitech Wave keyboard

Michael Reed (1):
      path_id: rework SAS device handling

Michael Witten (12):
      Docs: README: `to replace' -> `replacing'
      Docs: README: `,' -> `;'
      Docs: README: Clean up a sentence
      Docs: README: Use present tense
      Docs: README: Add missing `and'
      Docs: README: Remove commas and use subjective mood
      Docs: README: Clean up `udev extras' requirements
      Docs: README: Clarify configuration of existing devices
      Docs: README: `does never apply' -> `never applies'
      Docs: README: Flip sentence structure to improve wording
      Docs: README: `set up' is the verb; `setup' is a noun
      Docs: README: Add a comma to offset the modifier

Seth Forshee (1):
      keymap: Support Dell Latitude XT2 tablet-mode navigation keys

Thomas Egerer (1):
      udevd: add 'N:' to optstring in getopt_long


Summary of changes from v166 to v167
============================================

Andrey Borzenkov (1):
      udev-acl: add /dev/sgX nodes for CD-ROM

David Zeuthen (1):
      cdrom_id: Don't ignore profiles when there is no media available

Harald Hoyer (2):
      cdrom_id: cd_media_toc() extend toc size to 65536
      udev-acl/70-acl.rules: tag ID_REMOTE_CONTROL with acl

Kay Sievers (29):
      version bump
      Merge branch 'master' of git+ssh://master.kernel.org/pub/scm/linux/hotplug/udev
      v4l_id: kill the v4l1 ioctl
      v4l_id: remove left-over variable
      update some comments
      test-libudev: add short options
      libudev: udev_device_get_sysattr_list_entry() update
      libudev: resolve ifindex in udev_device_new_from_id_filename()
      libudev: bump minor version
      udev-acl: move sg rule to optical drive rule
      move /dev/.udev/ to /dev/.run/udev/ and convert old udev database at udevd startup
      NEWS: clarify /dev/.run/ requirements
      input_id: silent gcc warnings
      fstab_import: disable build
      systemd: remove deprecated udev-retry.service
      fstab_import: remove from configure
      update sd-daemon.[ch]
      udevd: use facility == LOG_DAEMON when writing to /dev/kmsg
      udevd: initialize fds, for proper close() on exit
      use /run/udev/ if possible and fall back to /dev/.udev/
      rules: run ata_id only on SPC-3 or later optical drives
      systemd: bind udev control socket in systemd and split udev.service
      systemd: use sockets.target not socket.target
      man: remove trigger --type=failed handling
      libudev: export udev_get_run_path()
      libudev: docs - add udev_get_run_path()
      libudev: make valgrind happy
      systemd: do not enable udev-settle.service by default
      systemd: udev.socket - disable implicit dependencies

Kei Tokunaga (1):
      udevadm: enumerate - update prev pointer properly

Lee, Chun-Yi (2):
      Remap Acer WMI touchpad toggle key to F21 used by X
      Remap MSI Laptop touchpad on/off key to F22 and F23

Martin Pitt (12):
      60-persistent-input.rules: Support multiple interfaces
      Only build v4l_id if V4L1 header file is available
      60-persistent-input.rules: Do not create duplicate links
      Fix building with --disable-extras
      Do not build extras with --disable-extras
      v4l_id: Drop videodev.h check again
      keymap: Fix Acer Aspire 5920G media key
      input_id: Consistently use tabs for indentation
      input_id: Add some debugging output
      input_id: Avoid memory overflow with too long capability masks
      input_id: Cover key devices which only have KEY_* > 255
      input_id: Rewrite debug logging to use standard udev info()

Seth Forshee (1):
      keymap: continue reading keymap after invalid scancodes

Thomas Egerer (3):
      libudev: allow to get list of all available sysfs attrs for a device
      libudev: use sysfs attr ilist interface for attribute walk
      udevadm: info - make attribute array static and const


Summary of changes from v165 to v166
============================================

Chris Bagwell (1):
      Remap Eee PC touchpad toggle key to F21 used by X

Gerd Hoffmann (1):
      extras: add rules for qemu guests

Jürgen Kaiser (1):
      keymap: Add Acer Aspire 8930

Kay Sievers (7):
      version bump
      man: generate html pages for www.kernel.org
      man: fix typo
      make: fix qemu rules file name
      extras: qemu - fix typo
      ata_id: do not print empty serial numbers to avoid unwanted trailing '_'
      update gitignore

Martin Pitt (6):
      keymap: Add Acer TravelMate C310
      keymap: Update README.keymap.txt
      keymap: Add Lenovo ThinkPad X201 tablet
      keymap: Move reading of event in separate function
      keymap: More robust state machine
      keymap: Explain how to end the program

Matthew Garrett (1):
      keymap: Remove wlan from Dell


Summary of changes from v164 to v165
============================================

Andy Whitcroft (1):
      keymap: Add release quirks for two Zepto Znote models and AMILO Xi 2428

Bastien Nocera (2):
      keymap: Add force release for HP touchpad off
      extras/keymap: Make touchpad buttons consistent

David Henningsson (1):
      Add ACLs for FFADO supported sound cards

David Zeuthen (6):
      ata_id: Support SG_IO version 4 interface
      Run scsi_id and ata_id on the scsi_device object
      Use ata_id, not scsi_id, on ATAPI devices
      Add GUdevEnumerator type and Device.get_tags() method
      Add g_udev_device_get_is_initialized() method
      gudev: Add Device.get_usec_since_initialized

Harald Hoyer (2):
      udev-rules.c: change import property buffer to 16384 bytes
      70-acl.rules: add ACLs for ID_PDA devices

Jakub Wilk (1):
      man: udev - workaraound -> workaround

Jan Drzewiecki (1):
      cdrom_id: Fix media state for unreadable DVDs

Kay Sievers (19):
      version bump
      rules: 78-sound-card - remove specific hardware matches, they do not belong here
      rules: drop OSS audio rule
      rules: drop alsa jack-plug input devices
      rules: revert bsg use until the event ordering problem is sorted out
      libudev: do not overwrite path with readlink() call
      udevadm: info - honor --export and --export-prefix for property query
      udevadm: info - honor --export, --export-prefix=
      udevd: use dev_t or netif ifindex as database key
      udevd: always create /dev/{char,block}/$major:$minor
      udevd: simplify udev database and fix DEVNAME handling
      udevd: switch to common id_filename functions
      udevd: write full database file for (unsupported) renamed device nodes
      check ifindex > 0 instead of subsystem == "net"
      libudev: enumerate - allow to filter-out not-already-initialized devices
      libudev: fix renamed device nodes detection logic
      libudev: record and export "age" of device record
      gudev: bump minor version
      update NEWS

Martin Pitt (5):
      keymap: Add Sony Vaio VGN71
      keymap: Add some more Sony Vaio VGN-* models
      Add ACL for media player USB devices
      keymap: Fix struck Touchpad key on Dell Latitude E series
      keymap: Fix struck Touchpad key on Dell Precision M series

Michal Soltys (1):
      udevd: create static nodes before /dev/null is needed


Summary of changes from v163 to v164
============================================

David Zeuthen (1):
      Install libgudev-1.0.so in prefix / instead of prefix /usr

Harald Hoyer (1):
      cdrom_id: request the drive profile features with a dynamic length

Kay Sievers (4):
      version bump
      udevd: do not wrongly delay events for devices with swapped names
      return proper error code in rename_netif()
      libudev: return kernel provided devnode when asked before we handled any rules

Martin Pitt (2):
      keymap: Apply force-release rules to all Samsung models.
      keymap: Add Toshiba Satellite U500


Summary of changes from v162 to v163
============================================

David Zeuthen (2):
      gudev: Deliver ::uevent signal in the thread-default main loop
      Bump required GLib version to 2.22

Hannes Reinecke (1):
      scsi_id: export target port group

Kay Sievers (5):
      version bump
      scsi_id: fix compiler warnings
      systemd: hook into basic.target instead of sysinit.target
      systemd: sort before basic.target
      udevd: add sd-daemon.c

Lee, Chun-Yi (1):
      keymap: Add alternate MSI vendor name

Martin Pitt (8):
      keymap: Add Lenovo Y550
      Clarify WAIT_FOR documentation
      fix various syntax errors in rules
      Add automatic rules syntax check
      cdrom_id: Try reading the medium if all MMC commands fail
      Revert "cdrom_id: Try reading the medium if all MMC commands fail"
      cdrom_id: Fall back to CDROM_DRIVE_STATUS if all MMC commands fail
      cdrom_id: Don't read beyond "last track" in TOC

Torsten Schoenfeld (1):
      gudev: add a few annotations that newer gobject-introspection versions demand


Summary of changes from v161 to v162
============================================

David Woodhouse (1):
      Add keymap for Lenovo IdeaPad S10-3

Jan Drzewiecki (2):
      cdrom_id: Drop MEDIA_SESSION_NEXT for DVD-RW-RO
      cdrom_id: Fix DVD blank detection for sloppy firmware

Kay Sievers (10):
      init: update systemd service files
      init: update systemd service files
      init: add 'udev -' to description in systemd service files
      udevd: add pid to kmsg logs
      init: edit systemd service descriptions
      version bump
      udevd: remove unneeded credential passing from init_notify()
      set SELinux context on 'add' but not on 'change' events
      systemd: enable all udev services unconditionally
      Revert "Add alternative KVM MAC address blacklist"

Luca Tettamanti (1):
      Add support for oom_score_adj

Marco d'Itri (2):
      udev-acl: do not mistake all SCSI "processor" devices for scanner
      do not create persistent name rules for KVM network interfaces

Martin Pitt (12):
      cdrom_id: Add media status debugging
      udev(7): Point out required extension, and remove some confusion
      keymap: Add Onkyo PC
      keymap: Add HP G60
      keymap: Fix Sony VAIO VGN-SZ2HP/B
      udev(7) manpage: Fix description of $attr
      gudev: fix crash if netlink is not available
      keymap: Fix Acer TravelMate 4720
      cdrom_id: Fix DVD-RW media detection
      Fix KVM MAC address range
      do not create persistent name rules for VMWare network interfaces
      Add alternative KVM MAC address blacklist

Michael Forney (1):
      Don't install systemd scripts with --without-systemdsystemunitdir

Michal Soltys (1):
      ChangeLog fix


Summary of changes from v160 to v161
============================================

Fortunato Ventre (1):
      keymap: Add force-release quirks for a lot more Samsung models

Harald Hoyer (3):
      udev-event.c: rename interface to <src>-<dest>, if <dest> taken
      rule_generator/write_net_rules: prevent interface to be named "eth"
      cdrom_id: READ TOC before READ DISC INFORMATION fixes qemu

Jan Drzewiecki (5):
      cdrom_id: Fix detection of reblanked DVD+RW and DVD-RAM
      cdrom_id: Handle pre-MMC2 drives
      cdrom_id: Also apply format check to DVD-RW
      cdrom_id: No "next session" for "other" media state
      cdrom_id: Fix state for fresh DVD-RW

Jerone Young (1):
      Fix volume keys not releasing on Mivvy G310

Kay Sievers (12):
      version bump
      rules: remove firewire rules for deprecated drivers
      udev-acl: update firewire matches to recent rule changes
      libudev: bump minor so version after adding symbols
      call util_delete_path() only when we actually deleted stuff
      udev-acl: properly handle CK change events for root user
      udev-acl: remove specific device matches from the rules file
      fix broken "compile warning fix"
      always log error when renaming a network interface fails
      do not rename the database on device rename
      cdrom_id: whitespace fix
      cdrom_id: do not bail out when we can not read the TOC like for empty CDRW

Marco d'Itri (3):
      hid2hci: fix Logitech diNovo, MX5500 and other keyboards
      log an error when a message from the wrong version of udevadm is ignored
      hid2hci: fix for Logitech diNovo Edge keyboard

Martin Pitt (1):
      keymap: Generalize Samsung keymaps

Michal Schmidt (1):
      udev-acl: really fix ACL assignment in CK events

Richard Hughes (1):
      udev-acl: add DDC_DEVICE to the types that are managed

Stefan Richter (1):
      rules: add more FireWire IDs: Point Grey IIDC; AV/C + vendor unique

Yin Kangkai (7):
      udevadm: fix short options in getopt()
      udevd: fix some memory leaks in error path
      malloc()+memset() -> calloc()
      udevd: fix short options in getopt()
      udevd: fix unref'ing of device in error path
      udevd: create static device links only when the target exists
      udev: fix compile warning


Summary of changes from v159 to v160
============================================

Harald Hoyer (2):
      60-persistent-storage-tape: s/path_id.sh/path_id/
      60-persistent-storage-tape.rules: make own by-path symlink for nst tapes

Kay Sievers (4):
      version bump
      rules: tape - remove WAIT_FOR instruction and don't export BSG_DEV
      allow final assignment for OPTIONS:="nowatch"
      udevd: init_notify() fix abstract namespace name handling

Lennart Poettering (1):
      systemd: make service files readable by GKeyFile

Martin Pitt (2):
      keymap: Find alternate Lenovo module
      keymap: Add Lenovo ThinkPad SL Series extra buttons


Summary of changes from v158 to v159
============================================

Jerone Young (1):
      Fix stuck volume key presses for Toshiba Satellite U300 & U305models

Kay Sievers (5):
      version bump
      add systemd service files
      make: pre-process and install systemd service files when needed
      make: fix 'make distcheck'
      switch a few left-over from GPLv2 to GPLv2 or later

Lennart Poettering (1):
      systemd: update service files for newly introduced DefaultDependencies= option

Martin Pitt (1):
      keymap: Add Logitech Cordless Wave Pro

Matthew Garrett (1):
      keymap: Add support for IBM-branded USB devices

Michael Meeks (1):
      gudev: respect possibly given LD_LIBRARY_PATH

Ryan Harper (2):
      Add virtio-blk support to path_id
      Add virtio-blk by-id rules based on 'serial' attribute


Summary of changes from v157 to v158
============================================

Harald Hoyer (1):
      extras/keymap: add Samsung N210 to keymap rules

Kay Sievers (7):
      version bump
      libudev: fix fd leak in udev_enumerate_scan_devices() when tags are searched
      udevd: in case we don't daemonize, send READY message to /sbin/init
      delete last distro specific rules
      remove a few comments in file headers
      mtd_probe: add needed include, modprobe blacklist flag, and change some whitespace
      rules: remove unused subdir

Martin Pitt (4):
      Fix hid2hci rules harder
      add Vala vapi for gudev-1.0
      Revert "add Vala vapi for gudev-1.0"
      Fix usb printer rule for multiple USB interfaces

Maxim Levitsky (1):
      mtd_probe: add autodetection for xD cards

Paul Bender (1):
      configure.ac: fix cross compilation


Summary of changes from v156 to v157
============================================

Harald Hoyer (1):
      40-redhat.rules: removed file

Jerone Young (3):
      Fix wlan key on Inspirion 1210
      Fix wlan key on Inspiron 910
      Fix wlan key on Inspiron 1010 & 1110

Kay Sievers (25):
      configure.ac: version bump
      Makefile.am: silent build mkdir
      rules: mount fuse control filesystem
      fix compilation with --enable-debug
      while (1) -> for (;;)
      childs -> children
      udevd: replace --debug-trace with --children-max
      udevd: fix comments
      rules: add -v to modprobe calls to be able see what will be loaded
      udevd:  read debug settings from kernel commandline
      update NEWS
      rules: delete pilot rules and remove redhat directory
      man: add static device nodes and udevd debug options
      man: add kernel command line parameters
      man: udevd - update intro
      rules: rename packages -> arch
      rules: SUSE - move last distro rule to package
      rules: add misc/30-kernel-compat.rules
      make: mkdir /lib/udev/devices/
      make: fix rules/ subdir names
      udevd: set umask before creating files/directories
      add IMPORT{cmdline}
      IMPORT{cmdline}: start at first char after '='
      libudev: doc - fix typo
      update NEWS


Summary of changes from v155 to v156
============================================

Bryan Kadzban (1):
      udevd: fix typo /proc/fd -> /proc/self/fd

Kay Sievers (4):
      configure.ac: version bump
      cdrom_id: do not export ID_CDROM_MEDIA_SESSION_LAST_OFFSET= for single session media
      rules: optical drives - use ID_CDROM_MEDIA_TRACK_COUNT_DATA
      libudev: fix udev_queue_get_seqnum_sequence_is_finished() with empty queue file


Summary of changes from v154 to v155
============================================

Kay Sievers (11):
      reset process priority before executing RUN+=
      configure.ac: version bump
      rules: SUSE - delete device-mapper rules
      libudev: add O_CLOEXEC
      use default mode of 0600 for nodes if gid == 0
      udevd: create standard symlinks and handle /lib/udev/devices
      update NEWS README
      fix tests and allow MODE=000
      create static nodes provided by kernel modules to allow module autoloading
      update NEWS
      man: directly use 'refentry'


Summary of changes from v153 to v154
============================================

Harald Hoyer (2):
      Makefile.am: add LGPL COPYING file to EXTRA_DIST
      cdrom_id: only mark sr[0-9]* as ID_CDROM

Jerone Young (1):
      Fix volume keys not releasing for Pegatron platform

Kay Sievers (23):
      configure.ac: version bump
      more readlink buffer size handling
      remove left-over from ignore_remove and all_partitions
      fix previous commit
      udevadm: info --export-db -- remove watch handle export
      add TAG= to improve event filtering and device enumeration
      all to match against a given TAG==
      udev-acl: use a tag instead of a property to mark devices
      fix logic on-demand loading logic for db and uevent
      use the usual TAG+=, TAG= logic
      delete old tags when configuration changes
      libudev: accept NULL in udev_device_get_tags_list_entry()
      export tag functions
      export udev_device_get_tags_list_entry()
      udevd: always try to find an idle worker instead of forking a new one
      remove unused parameter from udev_node_mknod()
      remove debug output during rules parsing
      warn when renaming kernel-provided nodes instead of adding symlinks
      man: udevadm trigger - the default is "change" not "add"
      update README regarding kernel version and default rules
      add info message when empty NAME is given
      libudev: add documentation for recently added functions
      udevd: reload config only for *.rules files

Martin Pitt (1):
      keymap: Fix Bluetooth key on Acer TravelMate 4720

Mathias Nyman (1):
      remove buffer-overrun risk in readlink call

Matthias Schwarzott (1):
      rules: Gentoo - remove old devfs compat rules

Michael Thayer (1):
      fix device node deletion

Robby Workman (1):
      configure.ac: move firmware-path setting out of extras section

Yin Kangkai (2):
      keymap: Add keymap and force-release quirk for Samsung N128
      keymap: Add keymap quirk of WebCam key for MSI netbooks.


Summary of changes from v152 to v153
============================================

Kay Sievers (1):
      configure.ac: version bump

Robby Workman (1):
      configure.ac: fix broken firmware search path in configure.ac


Summary of changes from v151 to v152
============================================

Adrian Bunk (1):
      udev needs automake 1.10

Amit Shah (2):
      Fix virtio-ports rule to use $attr instead of $ATTR
      rules: virtio - fix is to check if the 'name' attribute is present

Andy Whitcroft (2):
      keymap: Add Samsung Q210/P210 force-release quirk
      keymap: Add Fujitsu Amilo 1848+u  force-release quirk

Dan Williams (1):
      modeswitch: morph into tool that only switches Mobile Action cables

David Zeuthen (3):
      Decrease buffer size when advancing past NUL byte
      Use UTIL_LINE_SIZE, not UTIL_PATH_SIZE to truncate properties
      Increase UTIL_LINE_SIZE from 2048 to 16384

Harald Hoyer (1):
      cdrom_id: remove debugging code

Jerone Young (6):
      Force key release for volume keys on Dell Studio 1557
      Fix Keymapping for upcoming Dell Laptops
      Add new Dell touchpad keycode
      Revert special casing 0xD8 to latitude XT only
      Fix Dell Studio 1558 volume keys not releasing
      Add support for another Dell touchpad toggle key

Kamal Mostafa (3):
      keymap: Unite laptop models needing common volume-key release quirk
      keymap: Add force-release quirk for Coolbox QBook 270-02
      keymap: Add force-release quirk for Mitac 8050QDA

Kay Sievers (43):
      libudev: bump minor version
      udevadm: fix untested and broken commit to set buffer size
      configure.ac: version bump
      udev-acl: no not encourage use of ACL_MANAGE outside of rules file
      replace utimes() with utimensat()
      libbudev-private: rename udev_list_entry_get_flag()
      udevadm: monitor - use / as separator in --subsystem-match=subsystem[/devtype]
      use major:minor as entries in symlink stack instead of devpath
      use major:minor as entries in watch directory
      libudev: docs - .gitignore backup files
      firmware: fix possible segfault when firmware device goes away while loading
      do not reset SELinux context when the node was not touched
      libudev: add udev_device_new_from_environment()
      add LGPL COPYING to libudev and GUdev
      cdrom_id: open non-mounted optical media with O_EXCL
      libudev: update documentation
      extras: mobile-action-modeswitch - update gitignore
      scsi_id: add rand() in retry loop
      cdrom_id: retry to open the device, if EBUSY
      cdrom_id: check mount state in retry loop
      cdrom_id: always set ID_CDROM regardless if we can run cdrom_id
      rules: delete outdated packagees rules
      rules: we do not have static devices which are renamed
      unify/cleanup event handling
      allow IMPORT{db}="KEY"
      usb-db: remove double '/'
      replace "add|change" with "!remove"
      update NEWS
      log info only if we actually delete the node
      udevadm: trigger - switch default action from "add" to "change"
      remove "all_partitions" option
      rules: call modprobe on all events but "remove"
      remove "ignore_remove" option
      update NEWS
      cdrom_id: rework feature/profiles buffer parsing
      cdrom_id: print more debug messages
      cdrom_id: debug - print feature values in hex
      cdrom_id: debug - print feature values in hex
      cdrom_id: set ID_CDROM_MEDIA=1 only for known media
      Revert "Fix switching Logitech bluetooth adapters into hci mode."
      add O_NOFOLLOW when creating files in link stack
      delete only device nodes, not symlinks when deleting a devtmpfs node
      doc: add section about how *not* to rename device nodes

Marco d'Itri (3):
      rules: input - create by-path/ links for pci devices
      Fix switching Logitech bluetooth adapters into hci mode.
      doc: document the WAIT_FOR timeout

Martin Pitt (12):
      keymap: Add Dell Inspiron 1011 (Mini 10)
      Fix brightness keys on MSI Wind U-100
      keymap: Fix LG X110
      keymap: Add Toshiba Satellite M30X
      udev-acl: Correctly handle ENV{ACL_MANAGE}==0
      input_id: Fix linking
      keymap: Add Acer TravelMate 6593G and Acer Aspire 1640
      keymap: Fix another key for Acer TravelMate 6593
      cdrom_id: Fix uninitialized variables
      cdrom_id: Fix uninitialized buffers
      cdrom_id: Do not ignore errors from scsi_cmd_run()
      cdrom_id: Swap media state and TOC info probing

Mike Brudevold (1):
      cdrom_id: add missing profiles to feature_profiles

Robert Hooker (1):
      keymap: Add support for Gateway AOA110/AOA150 clones.

Scott James Remnant (2):
      libudev: export udev_monitor_set_receive_buffer_size()
      udevadm monitor: increase netlink buffer size

Thomas Bächler (1):
      firmware: fix error reporting on missing firmware files

Yury G. Kudryashov (3):
      configure.ac - fix typo in --with-pci-ids-path option
      hid2hci: include linux/types.h for __u32
      configure.ac: ddd --with-firmware-path option


Summary of changes from v150 to v151
============================================

Amit Shah (1):
      rules: Add symlink rule for virtio ports

Bryan Kadzban (1):
      Fix reverted floppy-device permissions

Egbert Eich (1):
      rulews: suse - add do-not-load-KMS-modules rules

Frederic Crozat (1):
      rules: acl - add COLOR_MEASUREMENT_DEVICE match

Kay Sievers (11):
      configure.ac: version bump
      udevd: inotify - do not parse rules at create but at close
      do not remove device nodes of active kernel devices
      libudev: device - create db file atomically
      clarify message about not removed device node
      input_id: include limits.h
      keymap: include linux/limits.h
      keymap: linux/input.h - get absolute include path from gcc
      delete outdated and unmaintained writing_udev_rules
      update README and NEWS
      update tests

Marco d'Itri (2):
      writing_udev_rules: update rules files names
      keymap: support for the Samsung N140 keyboard

Martin Pitt (4):
      add ACL rule for Garmin GPSMap 60
      keymap: move force-release directory
      extras/keymap/check-keymaps.sh: Ignore comment-only lines
      keymap: Fix invalid map line


Summary of changes from v149 to v150
============================================

Clemens Buchacher (2):
      add Samsung R70/R71 keymap
      keymap: Samsung R70/R71 force-release quirk

Daniel Drake (2):
      keymap: Add OLPC XO key mappings
      keymap: Fix typo in compal rules

Daniel Elstner (1):
      libudev: wrap in extern "C" block for C++

David Zeuthen (1):
      Export ID_WWN_VENDOR_EXTENSION and ID_WWN_WITH_EXTENSION

Jerone Young (1):
      keymap: Lenovo Thinkpad USB Keyboard with Tracepoint

Johannes Stezenbach (2):
      keymap: add Samsung N130
      keymap: handle atkbd force_release quirk

Kay Sievers (15):
      util_unlink_secure(): chmod() before chown()
      floppy: fix rule to create additional floppy device nodes
      configure.ac: version bump
      remove remaining support for CONFIG_SYSFS_DEPRECATED
      cdrom_id: remove deprecated device matches
      rules: add "block" match to floppy rule
      update mtime of nodes and links when we re-use them
      udevadm: info - fix info --root --query=name --path= for device without a device node
      remove remaining support for CONFIG_SYSFS_DEPRECATED
      fix typo in log message priority handling
      remove UDEV_RUN environment variable
      udevadm: logging - copy va_list and do not use it twice
      libudev: doc - add symbols to sections.txt
      work around gtk-doc which breaks distcheck
      gobject-introspection: use $datadir instead of $prefix

Marco d'Itri (2):
      build: keymap - create subdir
      rules: udev-acl - add firewire video devices

Martin Pitt (12):
      keymap: Add Acer Aspire 1810T
      95-keymap.rules: Run on change events, too
      keymap: fix findkeyboards
      Speed up udev_enumerate_scan_*
      keymap: Add hotkey quirk for Acer Aspire One (AO531h/AO751h)
      Clarify RUN/IMPORT documentation
      keymap: Add Logitech S510 USB keyboard
      keymap: add Acer TravelMate 8471
      keymap: Add Acer Aspire 1810TZ
      keymap: Add LG X110
      keymap: Add Fujitsu Amilo Li 1718
      keymap: Document force-release

Piter PUNK (1):
      firmware: convert shell script to C

Scott James Remnant (1):
      70-acl.rules: ACL manage Android G1 dev phones

Thomas de Grenier de Latour (1):
      libudev: enumerate - fix move_later logic


Summary of changes from v148 to v149
============================================

Daniel Elstner (1):
      really fix both in-tree and out-of-tree builds

Dmitry Torokhov (1):
      input-id: identify touchscreens

Kay Sievers (4):
      libudev: doc - use #NULL
      configure.ac: version bump
      really really fix both in-tree and out-of-tree builds
      fix both in-tree and out-of-tree builds

Martin Pitt (6):
      input_id: Fix endless loop for non-input devices
      input_id: Do not tag non-input devices with ID_INPUT
      input_id: small optimization
      input_id: check event mask
      input_id: Check mouse button for ID_INPUT_MOUSE
      udev_device_get_parent_with_subsystem_devtype(): Clarify documentation


Summary of changes from v147 to v148
============================================

Dan Williams (3):
      Revert "modem-modeswitch: add a device"
      Revert "extras/modem-modeswitch: Add Huawei E1550 GSM modem"
      modem-modeswitch: 61-option-modem-modeswitch.rules is only for Option NV devices

Daniel Mierswa (1):
      Fix typo in NEWS, ConsoleKit-0.4.11 -> 0.4.1

David Zeuthen (4):
      cdrom_id: Still check profiles even if there is no media
      scsi_id: Export WWN and Unit Serial Number
      Create /dev/disk/by-id/wwn-0x... symlinks
      Also create /dev/disk/by-id/wwn-0x..-part%n symlinks for partitions

Dmitry Torokhov (1):
      extras/input_id: Correctly identify touchpads

Harald Hoyer (1):
      modem-modeswitch: add a device

Kay Sievers (8):
      rules: set mode of floppy device nodes to 0660
      remove "ignore_device"
      print warning for BUS=, SYSFS{}=, ID=
      test-udev: remove "ignore_device" code
      udev-test.pl: catch-up with recent changes
      rules: remove support for IDE (hd*) devices
      ata_id: skip ATA commands if we find an optical drive
      Revert "Fix out-of-tree builds"

Martin Pitt (5):
      README.keymap.txt: small clarification
      extras: Add input_id
      70-acl.rules: Use new-style input properties
      input: Deprecate ENV{ID_CLASS}
      input_id: code cleanup

Scott James Remnant (1):
      Fix out-of-tree builds


Summary of changes from v146 to v147
============================================

Alan Jenkins (1):
      udevd: queue-export - remove retry loop

Andrew Church (1):
      fix wrong parameter size on ioctl FIONREAD

Daniel Mierswa (2):
      don't compare a non-existing function with NULL
      use nanosleep() instead of usleep()

David Zeuthen (4):
      gudev: remove G_UDEV_API_IS_SUBJECT_TO_CHANGE since API is now stable
      ata_id: export more advanced ATA features
      gudev: Fix up GUdevDeviceNumber
      gudev: Remove LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE from priv header

Florian Zumbiehl (10):
      util_delete_path(): use util_strscpy()
      util_lookup_group(): fix memory leak if realloc() fails
      util_delete_path(): handle multiple leading slashes
      util_create_path(): fix possible out of bounds array access
      ude_rules.c: fix possible NULL pointer dereference in get_key()
      util_resolve_sys_link(): fix possible buffer overflow
      udev_util_encode_string(): fix possible buffer overflow
      udev-rules.c: parse_file() - fix possible buffer overflow
      udev_queue_get_seqnum_sequence_is_finished(): fix possible file handle leak
      util_run_program(): fix possible buffer overflow #2

Harald Hoyer (2):
      scsi_id: prevent buffer overflow in check_fill_0x83_prespc3()
      rename interfaces to <iface>_rename if rename fails

Jeremy Kerr (1):
      util_run_program: restore signal mask before executing event RUN commands

Kay Sievers (45):
      make: sort Makefile.am per target/extra
      configure.ac: version bump
      udev-acl: allow to skip ACL handling
      rules: rfkill has no group, so use 0644
      rule_generator: net - fix MATCHDEVID
      make: add comment
      update NEWS
      print warning for NAME="%k" - it breaks the kernel supplied DEVNAME
      warn about non-readable or empty rules file
      change database file names
      assign errno for getgrnam_r()/getpwnam_r()
      doc: udevadm test *does* create nodes and links these days
      util_unlink_secure(): chmod() before chown()
      util_create_path(): fix errno usage
      inotify_add_watch(): do not store watch, if it failed
      update TODO
      update README
      rules: suse - use NAME for mapper/control
      libudev-util.c: get_sys_link() - return error for empty link target
      udev-rules.c: remove 'first_token' variable
      Revert "udev-rules.c: remove 'first_token' variable"
      test: catch possible bug in GOTO resolving
      udevadm: remove symlink support for old commands
      util_run_program(): skip multiple spaces in argv creation
      fix whitespace
      require 2.6.27 for proper signalfd handling
      fix randonm findings from llvm-clang-analyzer
      simplify "symlink name stack"
      reorder create_path() and node/link creation to be called in a direct sequence
      put util_create_path() and file creastion in a retry loop
      udevadm: control - remove compat code
      scsi_id: delete copy of bsg.h
      fix SYMLINK{} option parsing
      rules: remove remaining NAME="%k"
      rules: drop almost all NAME= keys
      update TODO, NEWS
      udevd: serialize events for with the same major/minor
      break loops if util_create_path() returns error
      remove "last_rule" option
      use CLOEXEC flags instead of fcntl()
      unblock signals we might want to handle
      udevd: create /dev/.udev/rules.d/ before watching it wit inotify
      gudev: fix pkg-config call to work with "make distcheck"
      update NEWS
      Revert "gudev: fix out-of-tree build"

Lennart Poettering (5):
      pci-db: make sure we actually read the pci.ids file instead of usb.ids
      sound: recognize saa7134 TV card sound devices as TV cards
      sound: include ALSA sound card id in ID_ID property
      sound: include ALSA sound card id in /dev/snd/by-id/ links
      Revert "sound: include ALSA sound card id in /dev/snd/by-id/ links"

Marco d'Itri (6):
      doc: writing_udev_rules updated for the new command names
      rules: sound - do not use /usr/bin/env
      udevadm: print all messages to stderr with priority higher or equal than LOG_ERR
      udevadmi: control = exit with rc=2 if there is some system error
      gudev: gir-scanner workaround for out of tree builds
      gudev: fix out-of-tree build

Mario Limonciello (1):
      hid2hci: remove superfluous bmAttributes match

Martin Pitt (24):
      extras/keymap: Add Acer Aspire 6920
      extras/modem-modeswitch: eject ZTE MF6xx fake CD-ROMs
      extras/keymap: Fix hold key on Acer Aspire 6920
      extras/keymap: Fix case matching for Micro-Star
      Revert "extras/keymap: Fix case matching for Micro-Star"
      make raw USB printer devices accessible for lp
      modem-modeswitch rules: Match more devices
      extras/keymap: fix hash table collisions
      extras/keymap: Rename KEY_COFFEE to KEY_SCREENLOCK
      fix single-session CD detection
      fix previous commit for CD detection
      make raw USB printer devices world-readable again
      50-udev-default.rules: fix printer MODE
      keymap: Add Logitech Wave USB
      keymap: add missing map file
      keymap: fix usb_id invocation
      keymap: make USB keyboards really work
      keymap: Add Logitech Wave cordless
      keymap: add HP Pavillion dv6315ea
      keymap: add HP 2230s
      Makefile.am: fix build with mawk
      extras/keymap/README.keymap.txt: Fix bug report link
      fix major fd leak in link handling
      modem-modeswitch: fix ZTE MF6xx rule

Matthias Schwarzott (2):
      rules: Gentoo update
      rules: Gentoo update

Maxim Levitsky (1):
      keymap for Acer Aspire 5720

Peter Rajnoha (1):
      libudev: allow to store negative values in the udev database

Scott James Remnant (1):
      util_run_program: *really* restore signal mask before executing event RUN commands

William Jon McCann (1):
      udev-acl: catch up with ConsoleKit 0.4.1


Summary of changes from v145 to v146
============================================

Alan Jenkins (3):
      man: fix unused, inaccurate metadata
      man: SYMLINK can be matched as well as assigned
      fix spelling

Anssi Hannula (2):
      rules: exclude digitizers from joystick class
      udev-acl: add joystick devices

Diego Elio 'Flameeyes' Pettenò (21):
      Merge libudev, udev, and the unconditional extras in a single Makefile.am.
      Replace the custom test-run target with the standard make check.
      Also merge into the top-level Makefile.am the simpler extras.
      Change hook handling to be more portable.
      Merge keymap building in the top-level Makefile.am.
      Make keymap generation rules be silent (backward-compatible).
      Move pkg-config docs and man pages before conditionals.
      Finally, also merge gudev into the top-level Makefile.am.
      Make sure to clean up all the built sources.
      Make sure to use dependency/target variables.
      Add silent-rule support for the gudev rules.
      Fix building of introspection library on top-level Makefile.am.
      Fix another relative path for the new working directory.
      Include the correct directory for out-of-source builds.
      Add tests to the distribution; this fixes "make distcheck".
      Ask gperf to use ANSI-C for generation.
      Merge in Makefile.am.inc into Makefile.am
      Use the keymap check during “make distcheck” rather than “check”.
      Fix building of documentation when doing out-of-source builds.
      Fix “make distcheck” run outside of the source directory.
      Use LT_INIT to explicit that udev needs libtool series 2.

Eric W. Biederman (1):
      fix util_lookup_group to handle large groups

Erik Forsberg (1):
      extras/modem-modeswitch: Add Huawei E1550 GSM modem

Kay Sievers (18):
      udevd: add timestamp to --debug output
      v4l_id: exit with 0 when --help is given
      configure.ac: version bump
      hid2hci: remove hid structures and include kernel header
      path_id: make global variable static
      udevadm: trigger - add --sysname-match=
      rules: serial - fix path_id call
      path_id: fix typo in comment
      format names are not case insensitive
      hid2hci: rewrite (and break) rules and device handling
      make: build internal tools against libudev-private.la
      update a few years of copyright
      libudev: silent gcc warning: may be used uninitialized in this function
      make: suppress enter/leaving directory messages
      re-enable failed event tracking
      "record_failed" -> "fail_event_on_error"
      udevd: block for 15 seconds after error when too old kernel is detected
      make: fix issues from non-recursive conversion

Lennart Poettering (1):
      enumeration: move ALSA control devices to the end of the enumerated devices of each card

Mario Limonciello (2):
      hid2hci: support to hid2hci for recovering Dell BT devices after S3
      hid2hci: install re-trigger for hid device when recovering from S3

Martin Pitt (17):
      add keymap for Clevo D410J laptop
      extras/keymap: add Zepto ZNote
      extras/keymap: add Everex Stepnote XT5000T
      extras/keymap: add Compal Hel80i
      keymap tool: improve help
      keymap tool: support scancode/keycode pair arguments
      keymap: inline one-line key maps
      extras/keymap: fix check-keymaps.sh for inline mappings
      extras/keymap: add recently added keymap files to Makefile.am
      extras/keymap: Add HP Presario 2100
      extras/keymap: cover more Compaq Evo models
      extras/keymap: Add Fujitsu Amilo M
      extras/keymap: teach findkeyboards about USB keyboards
      extras/keymap: Add Samsung SX22S
      extras/keymap: Fix crash for unknown keys
      extras/keymap: Add Samsung NC20
      extras/keymap: Fix Bluetooth key on Acer Aspire 6920


Summary of changes from v144 to v145
============================================

Ian Campbell (1):
      scsi_id: correct error handling in prepend_vendor_model

Kay Sievers (10):
      README: add CONFIG_BLK_DEV_BSG
      use MIN() MAX() from param.h
      configure.ac: version bump
      libudev: device - free values before updating them
      libudev: enumerate - sort with qsort()
      udevd: detach event from worker if we kill a worker
      udevadm: info - add space after R:, A:, W: on database export
      udevd: make sure a worker finishes event handling before exiting
      udevd: handle SIGCHLD before the worker event message
      udevd: use bool


Summary of changes from v143 to v144
============================================

Jon Masters (1):
      firmware: search for third party or sysadmin supplied firmware updates

Kay Sievers (19):
      configure.ac: add AM_SILENT_RULES
      configure.ac: version bump
      TODO: add cleanup of ATA_COMPAT
      libudev: queue - add comments for queue format
      udev/.gitignore: add udev.pc
      configure.ac: version bump
      do not exports properties starting with a '.'
      scsi_id: --reformat_serial - use udev_util_replace_whitespace()
      ata_id: sync ID_SERIAL(_SHORT) with other *_id tools
      rules: make ata_id properties the default for all ATA block devices
      scsi_id: delete no longer needed config file
      update NEWS
      man: udev - add private properties like ENV{.FOO}="bar"
      Merge branch 'firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/jcm/udev-jcm
      udevadm: test - print list of properties
      build: do not delete .la files
      libudev: monitor - handle kernel supplied DEVNAME properly
      update NEWS
      build: add *exec* to the internal rootlibdir name

Martin Pitt (2):
      hid2hci: narrow matches to real HCI devices
      extras/udev-acl: add smartcard readers

Stefan Richter (1):
      rules: set group ownership of new firewire driver device files


Summary of changes from v142 to v143
============================================

Alan Jenkins (5):
      udevadm: settle - fix timeout
      udevd: remove tiny bit of dead code
      udevd: implement a more efficient queue file format
      udev-selinux.c: remove libudev header
      udevd: queue-export - fix crash

Benjamin Gilbert (1):
      test: check string substitutions in OWNER and GROUP

Dan Williams (2):
      rules: tty/net - move from udev-extras
      extras/modem-modeswitch: move from udev-extras

David Zeuthen (1):
      gudev: move from udev-extras

Kay Sievers (95):
      version bump
      rules: v4l do not mix vbi and video nodes
      fix possible endless loop for GOTO to non-existent LABEL
      Revert "rules: v4l do not mix vbi and video nodes"
      rule-generator: cd - skip by-path links if we create by-id links
      remove format char string truncation syntax
      use more efficient string copying
      edd_id: use openat()
      use openat(), unlinkat(), fstatat()
      update TODO
      remove unused GL_FORMAT from rules parser
      require key names in uppercase
      keep the ifdef'd udevd testing/profiling hack
      fix location of database files
      udevadm: settle - make --timeout=0 working
      update NEWS
      rules: add SUBSYSTEM match to scsi rules
      cdrom_id: suppress ID_CDROM_MEDIA_STATE=blank for plain non-writable CDROM media
      udevadm: control - add comment to man page about --reload-rules
      cdrom_id: add error message if open() fails
      udevadm: settle - add --exit-if-exists=<file>
      udevd: remove check for dev_t, DEVPATH_OLD takes care of that
      str[sp]cpyl: add __attribute__ ((sentinel))
      udevd: convert to event worker processes
      udevd: close netlink socket in worker and set cloexec
      rules: do not call path_id for virtual devices
      udevd: use enum instead of char in struct declaration
      allow format substitution in path of ATTR{<path>}=="<value>"
      cleanup $attr{} substitution
      path_id: implement in C using libudev
      path_id: update SCSI handling
      path_id: add comments
      fix signed/unsigned warning
      libudev: enumerate - allow multiple keys with the same name
      udevadm: trigger - add --property-match=<key>:<value>
      udevadm: info - accept --query without a value and print properties
      udevadm: control - --env -> --property
      udevadm: monitor --environment -> --property
      path_id: handle fibre channel
      path_id: add iscsi support
      path_id: delete old shell script
      udevd: print error if worker dies unexpectedly
      path_id: rename scsi sub-fuctions
      libudev: add comments to libudev.h
      libudev: move to top-level directory
      fix libudev include in Makefile.am.in
      libudev: device_new() -> udev_device_new()
      udevd: log info for created/killed workers
      libudev: call log functions conditionally
      move syslog wrapper to libudev
      move common stuff from udev/ to private parts of libudev/
      libudev: rename private files to *-private.c
      rules: remove scsi ch module loading rule
      update NEWS
      udevadm: info -revert "accept --query without argument"
      README: add kernel options
      README: add INOTIFY and SIGNALFD
      USE_LOG -> ENABLE_LOGGING, DEBUG -> ENABLE_DEBUG, USE_SELINUX -> WITH_SELINUX
      libudev: add gtk-doc
      libudev: update documentation
      libudev: doc - add section headers
      libudev: doc - add enumerate
      libudev: doc - add queue
      update TODO
      libudev: doc - add namespace for index
      libudev: move .so version to libudev Makefile
      autogen.sh: simplify
      TODO: update
      libudev: remove prefix from .so version variables
      libudev: doc - add empty libudev.types
      udev-acl: move from udev-extras
      INSTALL: add --enable-extras
      udev-acl: handle missing action when called in CK mode
      v4l_id: move from udev-extras
      libudev: doc - libudev-docs.sgml -> libudev-doc.xml
      gudev: fix typo in configure option
      v4l_id: 70-v4l.rules -> 60-persistent-v4l.rules
      configure: enable all extras by default, provide --disable-extras
      autogen.sh: make "CFLAGS=-O0 ./autogen.sh" working
      NEWS: add --disable-extras
      cleanup ./configure installation directory options
      rules: remove MMC rule, 2.6.30 has the modalias
      configure.ac: print error if gperf is missing
      libudev: install in $libdir and move later to $rootlibdir
      extras/keymap: use LIBEXECDIR instead /lib/udev
      README: add /lib/udev/ is private
      rules: do not install usb-id/pci-id rules when --disable-extras is used
      extras: delete man pages for private udev tools
      README: update
      extras/keymap: install findkeyboards in /lib/udev
      INSTALL: use /sbin instead of %{sbindir}
      NEWS: update
      udev.pc: add
      Merge branch 'master' of git+ssh://master.kernel.org/pub/scm/linux/hotplug/udev
      docs: install writing_udev_rules

Lennart Poettering (2):
      rules: sound - move from udev-extra
      usb-db: move from udev-extras

Marcel Holtmann (1):
      rules: make RFKILL control device world readable

Mario Limonciello (1):
      hid2hci: move from udev-extras

Martin Pitt (5):
      keymap: move from udev-extras
      extras/keymap: Fix WLAN button on ThinkPads
      keymap: Update findkeyboard path in docs
      udev-acl: Manage hplip device permissions
      extras/keymap: Update findkeyboards location

Matthias Schwarzott (3):
      rules: Gentoo update
      rules: Gentoo update
      rules: Gentoo update

Scott James Remnant (1):
      OWNER/GROUP: fix if logic


Summary of changes from v141 to v142
============================================

Andre Przywara (1):
      rules: create /dev/cpu/<n>/cpuid world readable

Ian Campbell (1):
      path_id: support identification of Xen virtual block devices

John Wright (1):
      edd_id: add cciss devices

Kay Sievers (46):
      version bump
      libudev: path_encode - always return 0 if encoded string does not fit into size
      libudev: monitor - clarify socket handling documentation
      udevd: log error for too old kernels or CONFIG_SYSFS_DEPRECATED
      rules: remove DVB shell script
      update NEWS
      cdrom_id: add Xen cdrom support
      test-libudev: update monitor source
      TODO: add packet filter
      update NEWS
      cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
      libudev: monitor - add client socket filter for subsystem value
      udevadm: monitor - print error if we can not bind to socket
      update TODO
      udevadm monitor - add --subsystem-match=
      libudev: monitor - use simpler hash
      libudev: monitor - switch to filter_add_match_subsystem_devtype()
      libudev: monitor - do not filter messages with wrong magic
      udevadm: monitor - add <subsytem>:<devtype> support
      libudev: monitor - add udev_monitor_filter_remove
      libudev: queue - fix get_seqnum_is_finished()
      cdrom_id: skip media tests if CDROM_DRIVE_STATUS != CDS_DISC_OK
      libudev: queue - clarify comments
      libudev: monitor - export filter_update()
      update NEWS
      drop "extern" keyword from non-static function
      rule_generator: net - fix usb comment generation
      rules: input - add links for USB/platform non-kbd/mouse devices
      rules: input - fix comments
      rules: add rfcomm* to group dialout
      accept DEVNAME from the kernel as a hint for the node name
      update TODO
      build: use AC_MSG_RESULT
      rules: add "event*" match
      udevd: revert initial device node creation
      rules: remove initramfs comment
      handle devtmpfs nodes
      oops, removed ppp entry from rules got committed
      remove all PHYSDEVPATH handling and warning about
      remove asmlinkage
      rules: fix ieee1394 rules
      add "static" back to the inline functions
      update TODO
      delete vol_id and require util-linux-ng's blkid
      delete libvolume_id

Lubomir Rintel (1):
      rule-generator: net - whitelist NICs that violate MAC local scheme


Summary of changes from v140 to v141
============================================

Adam Buchbinder (4):
      usb_id: add manpage
      cdrom_id: update manpage
      create_floppy_devices: expand manpage
      vol_id: fix language in manpage

Alan Jenkins (1):
      avoid leaking netlink socket fd to external programs

Borislav Petkov (1):
      rules: rename ide-floppy to ide-gd

David Brownell (1):
      rules: exclude mtd* from persistent disk links

Kay Sievers (15):
      rules: fix extra quote in 50-udev-default.rules
      version bump
      udevadm: test - handling trailing '/' in devpath
      udevadm: monitor - clarify printed header
      rules: remove ram* from persisten disk links blacklist
      rules: serial - support ttyACM devices
      rules: replace IDE driver with media match
      usb_id: add ID_VENDOR_ID, ID_MODEL_ID, ID_USB_INTERFACE_NUM, ID_USB_DRIVER
      libudev: GPL -> LGPL
      usb_id: remove unused variable
      send monitor events back to netlink socket
      "UDEV_MONITOR_KERNEL/UDEV" -> "kernel/udev"
      IMPORT: 2048 -> 4096 bytes buffer
      path_encode: fix max length calculation
      libudev: monitor - unify socket message handling

Michal Soltys (1):
      rules: md-raid.rules fix

Robby Workman (1):
      udevadm: trigger - add "--action" to --help

Scott James Remnant (1):
      libudev: monitor - ignore messages from unusual sources


Summary of changes from v139 to v140
============================================

Harald Hoyer (1):
      libvolume_id: bump age

Kay Sievers (12):
      version bump
      update TODO
      volume_id: ntfs - fix uuid setting
      update TODO
      rules: Fedora update
      libudev: queue - use lstat() to check existence of symlink
      udevadm: settle - add --seq-start= --seq-end=
      udevd: switch watch symlinks to devpath
      udevadm: add text for new options to command and man page
      update TODO
      libudev: ctrl - return error after sending ctrl message
      udevadm: settle - use timeout signal, instead of loop counter

Michael Prokop (1):
      fix compile error in debug mode

Scott James Remnant (1):
      udevadm: settle - synchronise with the udev daemon


Summary of changes from v138 to v139
============================================

Kay Sievers (11):
      version bump
      remove static local variable
      use the event udev_device to disable the watch on "remove"
      add "nowatch" to disable a default installed watch with a later rule
      add m4/ subdir
      use AC_USE_SYSTEM_EXTENSIONS instead of AC_GNU_SOURCE
      usb_id: add ID_USB_INTERFACES=:0e0100:0e0200:010100:010200:
      usb_id: return values if called directly for an usb_device
      usb_id: fix NULL string usage
      usb_id: fix comment
      udevadm: info - export all devices with --export-db

Scott James Remnant (10):
      Don't add inotify watch until RUN rules processed.
      Clear existing inotify watch before processing.
      Cleanup a little.
      Allow watch handle to be stored in the udevdb.
      Store watch handle in db.
      Use the udevdb to speed up watch clearing.
      Put a log message in a more sensible place.
      Output watch handle in udevadm info.
      lookup the old watch handle; reload only if has a path
      Look at more inotify events in the buffer than just the first.


Summary of changes from v137 to v138
============================================

David Zeuthen (1):
      *_id: add model/vendor enc strings

Karel Zak (2):
      vol_id: fix ddf version string
      vol_id: add missing id->type to swap0

Kay Sievers (13):
      man: fix grammar
      version bump
      fix NAME="" logic
      rules: dm - add escape for uuid links with whitespace
      test: add test for empty and non-existent ATTR
      rules: fix md "change"/"remove" handling
      autogen.sh: add more warnings
      fix NAME= and OPTION+="string_escape=..." logic
      rules: move OPTIONS to separate rule
      use global "reload_config" flag
      rules: add "watch" option to dm and md rules
      rules: include loop block devices in persistent links
      release 138

Matthias Schwarzott (1):
      rules: Gentoo update

Miklos Vajna (1):
      doc: writing udev rules - refer to 'udevadm info' instead of 'udevinfo'

Scott James Remnant (2):
      udevd: optionally watch device nodes with inotify
      rules: update persistent storage rules to use inotify watches


Summary of changes from v136 to v137
============================================

Alan Jenkins (2):
      man: typo fixes
      remove stray initializer

Kay Sievers (17):
      version bump
      rules: fix typo in ide cd rule
      libudev: use 4096 bytes buffer for attribute reading
      rules: add drm devices to group "video"
      do not complain about a missing /etc/udev/rules.d/
      udevadm: test - remove --force option
      update NEWS
      remove name from index if the node name has changed
      cleanup old names before creating the new names
      open-code pollfd setup
      increase netif renaming timeout from 30 to 90 seconds
      Merge commit '5f03ed8a56d308af72db8a48ab66ed68667af2c6'
      Merge commit '9032f119f07ad3b5116b3d4858816d851d4127de'
      split up long line
      udevd: add back SA_RESTART
      usb_id: handle ATAPI devices like SCSI devices
      udevadm: settle - fix typo

Lennart Poettering (1):
      fix naming for tape nst devices in /dev/tape/by-path/

Olaf Kirch (2):
      udevd: use ppoll instead of signal pipes
      reap children faster

Scott James Remnant (2):
      Allow user and group lookup to be disabled.
      Expose delayed name resolution

Sven Jost (1):
      volume_id: support via raid version 2


Summary of changes from v135 to v136
============================================

Adam Buchbinder (1):
      extras: fix mis-spelling of "environment"

Harald Hoyer (1):
      rule_generator: fix enumeration for write_cd_rules

Jeremy Higdon (1):
      path_id: rework SAS persistent names

Karel Zak (1):
      volume_id: HPFS code clean up

Kay Sievers (54):
      rules: ATA_COMPAT do not try to match on sr*, it will never have vendor ATA
      scsi_id: do not fail if no serial is found like for optical drives
      update configure and NEWS
      rules: fix isdn rules
      rules: add persistent /dev/serial/{by-id,by-path} rules
      make: install serial rules file
      make: do not delete autotools generated file with distclean
      udevadm: settle - allow --timeout=0 and --quiet
      rules: move aoe rules to default rules file
      volume_id: btrfs - update format
      rules: add "do not edit header"
      volume_id: support sub-uuid's and plug in btrfs device uuid
      libudev: include <sys/types.h>
      build: add -lsepol
      build: just use autoreconf -i
      rules: remove ide-scsi
      rules: first simple step merging with Ubuntu rules
      "'/sbin/modprobe abnormal' exit" - also print program options
      rules: more changes toward Ubuntu rules merge
      rules: more changes toward Ubuntu rules merge
      rules: remove /dev/raw/raxctl symlink, it's a devfs leftover
      rules: rtc - create rtc compat link only for cmos type rtc
      rules: remove legacy symlinks
      rules: do not put raw1394 in "video" group
      rules: second round merging with Ubuntu rules
      rules: remove /dev/dsp /dev/audio
      rules: put alsa in group "audio"
      rules: isdn - remove /dev/isdn/capi20 symlink
      rules: provide /dev/raw/rawctl
      if needed, store database entries also for devices which do not have a device node
      build: use autoreconf --symlink
      usb_id: add "image" class
      require non-SYSFS_DEPRECATED 2.6.20+ kernel
      build: default to --prefix=/usr --exec-prefix=""
      libudev: enumerate - add lookup by property
      rules: input - make sure needed variables are set
      libudev: device - read "uevent" only if info is not already loaded
      libudev: subsytem -> subsystem
      libudev: bump revision
      usb_id: use devtype lookup
      require 2.6.22+ kernel
      rules: Ubuntu merge - use group "cdrom"
      rules: Ubuntu merge - use group "tape"
      rules: replace DVB shell script rule
      rules: Ubuntu merge - s/uucp/dialout/
      update NEWS
      update NEWS
      enable skipping of "naming-only" rules
      usb_id: s/image/media/
      udevadm: s/udevinfo/udevadm info/
      rules: reorder block rules
      rules: zaptel - add "dialout" group
      libudev: device - add udev_device_get_property_value()
      libudev: test - add udev_device_get_property_value()

Marcel Holtmann (3):
      libudev: device - add devtype support
      libudev: device - lookup subsystem and devtype together
      libudev: device - remove udev_device_get_parent_with_subsystem

Michal Soltys (1):
      man: udev - update NAME assignment

Ryan Thomas (1):
      rules: add rules for AoE devices


Summary of changes from v134 to v135
============================================

Kay Sievers (6):
      usb_id: add "break" to currently unused case labels
      rules: fix cciss disk/by-id/ links
      rules: add infiniband rules
      rules: infiniband.rules -> 40-infiniband.rules
      fix network interface name swapping
      update configure and NEWS

Marcel Holtmann (1):
      usb_id: fix switch statement for video type

Piter PUNK (2):
      rules: /dev/null -> X0R
      rules: add usb device nodes


Summary of changes from v133 to v134
============================================

Gabor Z. Papp (1):
      include errno.h in sysdeps.h

Harald Hoyer (1):
      rules: add persistent rules for memory stick block devices

Kay Sievers (19):
      autogen.sh: fix -print-multi-os-directory usage
      volume_id: update btrfs magic
      bump version
      rules: merge group "video" into default rules
      rules: v4l - add by-id/ links for USB devices
      libudev: accept NULL whitelist in util_replace_chars()
      usb_id: replace chars in returned strings
      ata_id: make sure, we do not have slashes in values
      scsi_id: make sure, we do not have slashes in values
      volume_id: remove unused usage types
      vol_id: if regular files are probed, use stat() for the size value
      volume_id: update btrfs
      volume_id: clear probing result before probing and do not probe a second time, if not needed
      path_id: fix fibre channel handling
      update NEWS TODO
      floppy: use ARRAY_SIZE()
      fix handling of swapping node name with symlink name
      silence PHYSDEV* warning for WAIT_FOR* rules
      rules: exclude "btibm" devices from vol_id calls

Matthias Schwarzott (1):
      rules: Gentoo update

Peter Breitenlohner (2):
      man: fix typos
      floppy: fix array bounds check and minor calculation


Summary of changes from v132 to v133
============================================

Alan Jenkins (2):
      udevd: de-duplicate strings in rules
      scsi_id: we don't use DEVPATH env var anymore, update man page

Karel Zak (1):
      volume_id: fat - move check for msdos signature (0x55 0xaa)

Kay Sievers (22):
      silence "comparison between signed and unsigned"
      string index - split nodes and childs to allow and unlimited number of childs
      reserve child slot 0
      merge trie nodes, childs and root into a single array
      set errno = ENOSYS in inotify stub
      udevadm: info - unify -V and --version
      rules: remove DEVTYPE disk/partition
      rules: remove pnp shell script, acpi loads these modules properly
      update NEWS
      configure: add linux-hotplug mail address
      remove len == 0 check, the index root is always '\0'
      volume_id: bump revision
      volume_id: always check for all filesystem types and skip conflicting results
      volume_id: fat - accept empty FAT32 fsinfo signature
      fix spelling in comment
      volume_id: ntfs - mark as no other fs must match
      vol_id: clarify error message
      libudev: device - handle disk "device" link for partitions in deprecated sysfs layout
      limit $attr(<symlink>) magic to well-known links only
      udevd: fix cleanup of /dev/.udev/uevent_seqnum
      fix $links substitution for devices without any link
      update NEWS

Sergey Vlasov (1):
      udevadm: fix option parsing breakage with klibc


Summary of changes from v131 to v132
============================================

Kay Sievers (2):
      fix size_t compiler warning on 32 bit platforms
      convert debug string arrays to functions


Summary of changes from v130 to v131
============================================

Alan Jenkins (17):
      libudev: fix sysnum logic for digit-only device names
      udevd: avoid overhead of calling rmdir on non-empty directories
      use more appropriate alternatives to malloc()
      libudev: util - optimize path_encode()
      libudev: allocate udev_device->envp[] dynamically
      replace strncpy() with strlcpy()
      use re-entrant variants of getpwnam and getgrnam
      udevd: fix memory leak
      udevd: fix WAIT_FOR_SYSFS execution order
      fix handling of string_escape option
      udevd: use a tighter loop for compare_devpath()
      udevd: avoid implicit memset in match_attr()
      kerneldoc comment fixes
      udevd: simplify rules execution loop
      udevd: fix termination of rule execution
      udevd: be more careful when matching against parents
      udevd: shrink struct token to 12 bytes

Kay Sievers (113):
      remove outdated docs/README-gcov_for_udev
      libudev: device - add device lookup by subsystem:sysname
      libudev: also prefix non-exported functions with udev_*
      libudev: add udev_monitor_send_device()
      libudev: list - add flag
      libudev: device - generate DEVNAME and DEVLINKS properties
      vol_id: update README
      libudev: handle ! in sysname, add sysnum, return allocated list_entry on add
      delete simple-build-check.sh
      test: move global ENV{ENV_KEY_TEST}="test" to local rule
      libudev: monitor - fix send_device() property copying
      libudev: device - add get_envp() to construct envp from property list
      libudev: do not include ctrl in libudev.so
      libudev: monitor - do not mangle DEVLINKS property
      libudev: update DEVLINKS property when properties are read
      libudev: device - lookup "subsystem" and "driver" only once
      libudev: device - export properties when values are set
      libudev: list - handle update of key with NULL value
      libudev: ctrl - fix typo in set_env()
      libudev: add global property list
      libudev: device - copy global properties, unset empty properties
      volume_id: btrfs - update magic to latest disk format
      udevd: use libudev
      move udev_device_db to libudev
      rename udev source files
      libudev: always add UDEV_LOG
      libudev: monitor - export MAJOR/MINOR only if available
      udev-node: name_list -> udev_list
      udev-rules-parse: name_list -> udev_list
      delete name_list, move common file functions
      fix sorting of rules files
      run_program: prevent empty last argv entry
      update IMPORT= file/stdout property parsing
      update rules file parsing
      delete udev-util-file.c
      libudev: list - prepend udev_* to all functions
      libudev: add sysnum to test program
      test: fix a few unintentially wrongly written rules which cause parse errors
      libudev: monitor - add set_receive_buffer_size()
      libudev: ctrl - change magic to integer
      libudev: make list_node functions available
      udevd: use udev_list_node
      collect: use udev_list
      delete list.h
      merge udev-rules.c and udev-rules-parse.c
      make struct udev_rules opaque
      move run_program to util
      udev_event_run() -> udev_event_execute_rules()
      udev_rules_run() -> udev_event_execute_run();
      move udev_rules_apply_format() to udev-event.c
      udev_list_cleanup() -> udev_list_cleanup_entries()
      selinux_init(udev) -> udev_selinux_init(udev)
      prefix udev-util.c functions with util_*
      pass make distcheck
      libudev: device - get_attr_value() -> get_sysattr_value()
      cdrom_id: remove ARRAY_SIZE() declaration
      replace missing get_attr_value() -> get_sysattr_value()
      add "root" == 0 shortcuts to lookup_user/group()
      do not use the new work-in-progress parser rule matcher
      libudev: device - 128 -> ENVP_SIZE
      add util_resolve_subsys_kernel()
      handle numerical owner/group string in lookup_user/group()
      replace in-memory rules array with match/action token list
      do not create temporary node ($tempnode) if node already exists
      shrink struct udev_event
      shrink struct udev_event
      rule_generator: fix netif NAME= value extraction regex
      skip SYMLINK rules for devices without a device node
      rules: let empty strings added to buffer always return offset 0
      fix uninitialized variable warnings
      cache uid/gid during rule parsing
      distinguish "match" from "assign" by (op < OP_MATCH_MAX)
      determine at rule parse time if we need to call fnmatch()
      special-case "?*" match to skip fnmatch()
      libudev: monitor - replace far too expensive snprintf() with strlcpy()
      libudev: monitor - cache result of monitor send buffer
      fix "unused" warnings
      remove debug printf
      match KEY="A|B" without temporary string copy
      match_attr() - copy attr value only when needed
      do not init string arrays, just clear first byte
      fix $attr{[<subsystem>/<sysname>]<attribute>} substitution
      libudev: device - fill envp array while composing monitor buffer
      test: add RUN+="socket: ..." to a test to run monitor code
      libudev: device - allocate envp array only once
      update NEWS
      udevd: merge exec and run queue to minimize devpath string compares
      ATTR{}== always fails if the attribute does not exist
      rules: remove SCSI timeouts
      rules: remove "add" match from usb device node rule
      edd_id: add "change" event match
      fstab_import: add "change" event match
      write trace log to stderr
      log rules file and line number when NAME, SYMLINK, OWNER, GROUP, MODE, RUN is applied
      skip entire rule containing device naming keys, if no device can be named
      fix udev_node_update_old_links() logic
      move some info() to dbg()
      add "devel" and "install" switches to autogen.sh
      move debugging strings inside #ifdef DEBUG
      firmware.sh: record missing files in /dev/.udev/firmware-missing/
      fix list handling in enumerate and rules file sorting
      volume_id: btrfs update
      info() PROGRAM and IMPORT execution
      fix $links substitution
      fix cleanup of possible left-over symlinks
      do not import the "uevent" file when we only read the db to get old symlinks
      usb_id: MassStorage SubClass 6 is "scsi" not "disk"
      unify string replacement
      $links should be relative
      fix indentation
      rules: md - add mdadm 3 device naming
      cleanup /dev/.udev/queue on startup and exit
      udevadm: settle - exit if udevd exits

Matthias Koenig (1):
      volume_id: swap - larger PAGE_SIZE support

Steven Whitehouse (1):
      volume_id: support for GFS2 UUIDs


Summary of changes from v129 to v130
============================================

Kay Sievers (26):
      fix compile error with --disable-logging
      libudev: enumerate - add_device() -> add_syspath()
      volume_id: hpfs - read label and uuid
      use no_argument, required_argument, optional_argument in longopts
      libudev: get rid of selinux
      libudev: device - add get_parent_with_subsystem()
      usb_id: use libudev
      udevadm: info - fix --query=all for devices without a device node
      vol_id: add size= option
      move selinux noops to udev.h
      volume_id: add dbg() as noop to check for compile errors
      vol_id: fix logging glue
      vol_id: always use the safe string versions for unencoded label and uuid
      volume_id: better DDF raid detection
      volume_id: add btrfs
      volume_id: use PRIu64i, PRIx64 macros
      udevd: clarify deprecated sysfs layout warning
      libudev: fix --enable-debug
      don not print error if GOTO jumps just to next rule
      volume_id: add more vfat debugging information
      libudev: libudev.pc remove selinux
      store node name and symlinks into db symlink target if they are small enough
      volume_id: more fat debugging
      libudev: fix typo in "multiple entries in symlink" handling
      connect /sys and /dev with /sys/dev/{block,char}/<maj>:<min> and /dev/{block,char}/<maj>:<min>
      replace spaces in dm and md name symlinks


Summary of changes from v128 to v129
============================================

Alan Jenkins (7):
      udev-test.pl: set non-zero exitcode if tests fail
      scsi_id: compiler warning on 32-bit
      trivial cleanup in udev_rules_iter
      avoid repeated scans for goto targets (udev_iter_find_label)
      replace strerror() usage with threadsafe "%m" format string
      fix messages (inc. debug compile failure) introduced when optimizing "goto"
      allow compiler to check dbg() arguments on non-debug builds

Kay Sievers (46):
      libudev: switch to "udev_device_get_parent"
      libudev: udev_device - add attribute cache
      libudev: handle "device" link as parent, handle "class" "block" as "subsystem"
      udevadm: info - fix lookup-by-name
      libudev: switch API from devpath to syspath
      libudev: rename ctrl_msg to ctrl_msg_wire
      vol_id: fix lib logging glue
      fix broken symlink resolving
      fix udevadm trigger
      libudev: pass udev_device in enumerate
      libudev: fix "subsystem" value
      always include config.h from Makefile
      libudev: udev_device_get_devname -> udev_device_get_devnode
      libudev: add udev_device_new_from_devnum()
      libudev: also import "uevent" file when reading udev database
      libudev: add userdata pointer
      libudev: replace awkward callback list interfaces with list iterators
      libudev: get devnum from uevent file
      libudev: enumerate_get_devices_list -> enumerate_get_list
      libudev: initialize selinux only when needed
      libudev: device - read database only when needed
      libudev: rework list handling
      libudev: more list rework
      lubudev: accept more sys directories as devices, and parent devices
      libudev: enumerate - accept list of subsystems to scan, or skip
      libudev: enumerate "subsystem"
      libudev: enumerate - scan /sys/block/ if needed
      libudev: enumerate - split new() and scan()
      test: replace ancient sysfs tree with recent one
      test: add missing pci directory because of .gitignore *.7
      gitignore: move *.8 to subdirs
      test: replace last reference of "/class/*" devpath
      fix dbg() callers
      libudev: enumerate - scan devices and subsystems, add subsystem and attribute filter
      udevadm: trigger: use libudev
      fix segfault caused by wrong pointer used in dbg()
      libudev: device_init() -> device_new()
      udevadm: trigger fix long option --type=
      libudev: add queue interface
      udevadm: settle - use libudev queue
      libudev: device - handle /sys/block/<disk-device-link>/<partition>
      libudev: enumerate - ignore regular files while scanning
      udevadm: trigger --type=failed - use libudev queue
      rules: ieee1394 - create both, by-id/scsi-* and by-id/ieee-* links
      build: include Makefile.am.inc in all Makefile.am
      udevd: print warning if CONFIG_SYSFS_DEPRECATED is used


Summary of changes from v127 to v128
============================================

Alan Jenkins (8):
      fix uninitialized name_list error::ignore_error
      do not needlessly declare some local variables in udev_rules_parse.c as static
      remove deprecated envp[] in main()
      fix name compare bug name_list_key_add()
      remove redundant string copy in udev_rules_apply_format()
      remove redundant "remove trailing newlines" in udevadm info
      threadsafe rules iteration
      fix off-by-one in pass_env_to_socket()

Kay Sievers (53):
      libudev: add monitor documentation
      libudev: fix --disable-log
      autogen.sh: add --with-selinux
      volume_id: hfs - calculate proper uuid
      fix dangling pointer returned by attr_get_by_subsys_id()
      udev-test.pl: add --valgrind option
      libudev: libudev.pc add Libs.private
      volume_id: fail on undefined __BYTE_ORDER
      remove FAQ
      libudev: fix monitor documentation
      libudev: add udev_device_get_syspath()
      udev_device_init() remove statically allocated device support
      udevadm: info - fix broken --device-id-of-file=
      udevadm: control - use getopt_long()
      udevadm: print warning to stderr if udevadm is called by symlink
      udev-test.pl: remove left-over comment from --valgrind option
      udevadm: rename source files
      udevadm: rename internal functions to udevadm_*
      udevadm: split out control functions
      udevadm: move init from commands to udevadm
      autogen.sh: add debug
      use libudev code, unify logging, pass udev context around everywhere
      volume_id: linux_raid - fix logic for volumes with size == 0
      vol_id: add --debug option
      udevadm: add --version --help options to man page, hide them as commands
      move udev_ctrl to libudev-private
      udev-test.pl: set udev_log="err"
      test-udev: cleanup libudev context and overridden rules file string
      test-udev: remove unused var
      add a bunch of private device properties to udev_device
      udevadm: monitor - use libudev for udev monitor
      libudev: monitor - add event properties to udev_device
      udevadm: log message if udevadm link is used
      udevd: remove max_childs_running logic
      libudev: monitor- add netlink uevent support
      udevadm: monitor - use libudev code to retrieve device data
      libudev: udev_device - read "driver" value
      libudev: rename enumerate function
      libudev: add selinux
      libudev: initialize selinux after logging
      volume_id: merge util.h in libvolume_id-private.h
      update file headers
      libudev: udev_device - add more properties
      libudev: do not use udev_db.c
      libudev: get rid of udev_sysfs.c
      libudev: get rid of udev_utils.c
      libudev: rename libudev-utils.c libudev-util.c
      libudev: do not use any udev source file
      extras: use libudev code
      convert to libudev and delete udev_utils_string.c
      get rid of udev_sysdeps.c
      use size definitions from libudev
      udevadm: info - use "udev_device"


Summary of changes from v126 to v127
============================================

Karel Zak (2):
      build-sys: don't duplicate file names
      build-sys: remove non-POSIX variable names

Kay Sievers (26):
      add inotify dummy definitions if inotify is not available
      build: remove autopoint check
      udevadm: trigger - add missing attr filter to synthesized "subsystem" register events
      ignore duplicated rules file names
      fix .gitignore
      rules: delete all distro rules which do not use default rules
      rules: add nvram
      rules: add isdn rules
      rules: Gentoo update
      add missing includes
      add some warnings
      update .gitignore
      add missing 'v' for "make changelog"
      build: fix "make dist"
      vol_id: make the --offset= argument optional
      rules: optical drives - probe at last session offset, do not probe for raid
      libudev: add library to access udev information
      libudev: split source files
      update INSTALL
      libudev: add udev event monitor API
      volume_id: remove deprecated functions and bump major version
      volume_id: remove left-over fd close()
      split udev_device.c to leave out rules handling from libudev
      libudev: link against selinux if needed
      firmware.sh: lookup lookup kernel provided firmware directory
      libudev: require LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE

Michal Soltys (1):
      rules: fix md rules for partitioned devices


Summary of changes from v125 to v126
============================================

Kay Sievers (9):
      delete all Makefiles and move udev source to udev/
      use autotools
      rules: mode 0660 for group "disk"
      rules: update Fedora rules
      update ChangeLog
      INSTALL: --enable-selinux not --with-selinux
      volume_id: move static lib to $prefix
      volume_id: create relative links
      rules: run vol_id on opticals only if media is found

Marco d'Itri (1):
      rules: Debian update

Thomas Koeller (1):
      use proper directory lib/lib64 for libvolume_id


Summary of changes from v124 to v125
============================================

John Huttley (1):
      rules: tape rules - add nst to usb and 1394 links

Karl O. Pinc (1):
      man: clarify $attr{} parent searching

Kay Sievers (14):
      collect: fix size_t printf
      path_id: suppress trailing '-' like 'ID_PATH=pci-0000:05:01.0-'
      rules: add v4l persistent links
      docs: update some docs and delete outdated stuff
      scsi_id: fix fallback to sg v3 for sg nodes
      rules: fix cciss rules for partition numbers > 9
      udev.conf: udevcontrol -> udevadm control
      rules: use consistently OPTIONS+=
      scsi_id: the fallback fix broke error handling
      man: rebuild from xml
      do not touch node ownership and permissions, if already correct
      rules: tape rules - add nst to by-path/ links
      udevadm: info - add --export format to --device-id-of-file=
      move default rules from /etc/udev/rules.d/ to /lib/udev/rules.d/

Marco d'Itri (7):
      rules_generator: net rules - do not print error if file is missing and ignore commented rules
      man: add link_priority default value
      scsi_id: man page fix
      udevadm: settle - add verbose output when running into timeout
      rules: Debian update
      rules: Debian update
      ignore rule with GOTO to a non-existent label

Thomas Koeller (1):
      scsi_id: include sys/stat.h

Tobias Klauser (1):
      collect: check realloc return value


Summary of changes from v123 to v124
============================================

Kay Sievers (1):
      cdrom_id: fix recognition of blank media


Summary of changes from v122 to v123
============================================

Erik van Konijnenburg (3):
      add substitution in MODE= field
      Makefile: use udevdir in "make install"
      volume_id: support for oracleasm

Harald Hoyer (1):
      scsi_id: retry open() on -EBUSY

Karel Zak (2):
      volume_id: remove unnecessary global variable
      volume_id: enable GFS probing code, add LABEL support

Kay Sievers (5):
      edd_id: call it only for sd* and hd*
      rename WAIT_FOR_SYSFS to WAIT_FOR and accept an absolute path
      rules: tape rules - use bsg device nodes for SG_IO
      rules: persistent net - handle "locally administered" ibmveth MAC addresses
      cdrom_id: export ID_CDROM_MEDIA_TRACK_COUNT_AUDIO=, ID_CDROM_MEDIA_TRACK_COUNT_DATA=

Michal Soltys (1):
      man: add NAME== match entry

Xinwei Hu (2):
      collect: realloc buffer, if needed
      udevd: export .udev/queue/$seqnum before .udev/uevent_seqnum


Summary of changes from v121 to v122
============================================

Hannes Reinecke (2):
      scsi_id: remove all sysfs dependencies
      scsi_id: add SGv4 support

Karel Zak (1):
      volume_id: clean up linux_raid code

Kay Sievers (8):
      scsi_id:  update man page
      scsi_id: remove bus_id option
      scsi_id: add --sg-version= option
      rules: adapt to new scsi_id
      rules: adapt tape rules to new scsi_id
      scsi_id: add bsg.h
      volume_id: bump version
      Makefile: do not create udevcontrol, udevtrigger symlinks

MUNEDA Takahiro (2):
      man: udevd- fix udev(8) reference
      man: scsi_id

Matthias Schwarzott (1):
      cdrom_id: fix segfault


Summary of changes from v120 to v121
============================================

Damjan Georgievski (1):
      libvolume_id: recognize swap partitions with a tuxonice hibernate image

Daniel Drake (1):
      writing udev rules: fix rule typos

David Woodhouse (1):
      rules_generator: net rules - add "dev_id" value to generated rules

Harald Hoyer (1):
      selinux: more context settings

Kay Sievers (21):
      udevinfo: do not replace chars when printing ATTR== matches
      vol_id: add --offset option
      cdrom_id: replace with version which also exports media properties
      udevd: at startup write message including version number to kernel log
      rules_generator: net rules - always add KERNEL== match to generated rules
      selinux: fix missing includes
      allow setting of MODE="0000"
      path_id: remove subsystem whitelist
      logging: add trailing newline to all strings
      scsi_id: initialize serial strings
      persistent device naming: also read unpartitioned media
      cdrom_id: add more help text
      add $links substitution
      fstab_import: add program to IMPORT matching fstab entry
      add OPTIONS+="event_timeout=<seconds>"
      write "event_timeout" to db
      udevadm: trigger - add --env= option
      udevadm: control - fix --env key to accept --env=<KEY>=<value>
      udevadm: info - do not print ATTR{dev}==
      persistent device naming: update tape rules
      rules: update md rules


Summary of changes from v119 to v120
============================================

Kay Sievers (9):
      test: remove duplicated EXTRA entry
      rules: remove last WAIT_FOR_SYSFS, load ppdev, switch scsi_device
      udevadm: trigger - option to synthesize events and pass them to a socket
      udevadm: info - resolve devpath if symlink is given
      udevadm: remove old man page links and compat links for debugging tools
      udevadm: trigger - fix broken socket option check
      udevadm: trigger - fix --socket== + --verbose
      also accept real socket files for RUN+="socket:<path>"
      persistent device naming: cleanup storage rules

Michael Kralka (1):
      udevd: serialize events if they refer to the same major:minor number


Summary of changes from v118 to v119
============================================

Anthony L. Awtrey (1):
      do not skip RUN execution if device node removal fails

Harald Hoyer (2):
      rules: Fedora update
      rules: do not set GROUP="disk" for scanners

Jiri Slaby (1):
      rules_generator: add missing write_net_rules unlock

Karel Zak (2):
      volume_id: fix UUID raw buffer usage
      volume_id: fix typo in function documentation

Kay Sievers (10):
      switch mailing lists to linux-hotplug@vger.kernel.org
      rules: remove tty rule which can never run because of an earlier "last_rule"
      volume_id: update ext detection
      selinux: set context for real file name not the temp name
      hack to allow ATTR{block/*/uevent}="change"
      rules_generator: add KERNEL=="<netifname>*" to generated rules
      persistent device naming: also run on "change" event
      test: add "subsystem" links to all devices
      sysfs: depend on "subsystem" link
      extend hack to allow TEST=="*/start"

Matthias Schwarzott (1):
      volume_id: respect LDFLAGS

Neil Williams (1):
      volume_id: add prefix=, exec_prefix=

Roy Marples (1):
      Makefile: do not require GNU install


Summary of changes from v117 to v118
============================================

Daniel Drake (1):
      doc: update "writing udev rules"

Hannes Reinecke (1):
      volume_id: LVM - add uuid

Kay Sievers (9):
      remove udevstart
      rules_generator: do not create rules with insufficient matches
      man: udevadm settle - mention 180 seconds default timeout
      libvolume_id: squashfs - add endianess support for LZMA compression
      rules: add AOE rule
      volume_id: md - add metadata minor version
      volume_id: run only once into a timeout for unreadable devices
      create_floppy_devices: fix logic for more than one floppy device
      volume_id: also add readable check to probe_all()

Matthias Schwarzott (1):
      rules: Gentoo update

Michael Prokop (1):
      libvolume_id: squashfs+LZMA compression detection


Summary of changes from v116 to v117
============================================

Dan Nicholson (2):
      extras: ignore built and generated files
      volume_id: create relative symlink when $(libdir) = $(usrlibdir)

Kay Sievers (15):
      usb_id: fail if vendor/product can not be retrieved
      rules: SUSE update
      firmware: do not print error if logger is missing
      volume_id: vfat - allow all possible sector sizes
      volume_id: LUKS - export version
      volume_id: ntfs - rely on valid master file table
      volume_id: bump version
      udevinfo: exclude "uevent" file from --attribute-walk
      udevadm: merge all udev tools into a single binary
      udevadm: accept command as option, like --help, --version
      udevadm: add info option --device-id-of-file=<file>
      Makefile: fix bogus version number than got committed
      udevadm: also return major==0 results for --device-id-of-file
      man: udevd.8 - remove udevcontrol section
      udevadm: control - allow command to be passed as option

MUNEDA Takahiro (1):
      man: fix udevadm.8 typo

Matthias Schwarzott (2):
      firmware: remove hardcoded path to logger
      rules: Gentoo update

VMiklos (1):
      rules: Frugalware update


Summary of changes from v115 to v116
============================================

Bryan Kadzban (1):
      rules: fix typos

Harald Hoyer (3):
      check line length after comment check and whitespace strip
      only install *.rules
      remove extra space from udevinfo symlink output

Kay Sievers (29):
      rules: fix two trivial typos
      rules: random and urandom are 0666
      rules: add REMOVE_CMD rule
      track "move" events to rename database and failed files
      rules: Gentoo update
      rules: add i2o driver rule
      man: recreate man pages
      volume_id: fix linux_raid metadata version 1.0 detection
      add $name substitution
      do not delete the device node with ignore_remove, but handle the event
      print warning for invalid TEST operations
      rules: do not delete /lib/udev/devices/ nodes on "remove"
      rules: remove broken nvram group assignment without any permission
      add /dev/rtc symlink if new rtc drivers are used
      increase WAIT_FOR_SYSFS timeout to 10 seconds
      rules: put bsd nodes in /dev/bsd/ directory
      path_id: fix for stacked class devices
      ignore device node names while restoring symlinks from the stack
      use SEQNUM in /dev/.udev/queue/ instead of devpath
      rules: add memstick module loading
      udevinfo: simplify symlink printing logic
      prevent wrong symlink creation if database disagress with current rules
      fix wrong variable used in logged string
      update README
      rule_generator: move all policy from write_net_rules to the rules file
      rules: call usb_id only for SUBSYSTEMS=="usb"
      rules: split out and fix persistent tape rules
      fix debug output string
      rule_generator: always match netif type in generated rule

Matthias Schwarzott (3):
      rules: Gentoo update
      rules: Gentoo update
      rules: Gentoo update

Michael Morony (1):
      set buffer size if strlcpy/strlcat indicate truncation

maximilian attems (1):
      correct includes in udev_selinux.c


Summary of changes from v114 to v115
============================================

Harald Hoyer (1):
      rules: fix typo in 80-drivers.rules

Kay Sievers (15):
      rules: add default rules
      rules: update SUSE rules
      rules: add packages rules
      rules: add ia64 rules
      rules: move md-raid rules to packages dir
      rules: run vol_id only for partitions
      rules: update Fedora rules
      edd_id: move persistent rules to its own file
      accept relative path for TEST
      rules: add iowarrior rule
      volume_id: fix sqashfs detection
      do not ignore dynamic rule if it is the last one in the list
      rule_generator: fix wrong DRIVERS!= logic
      rules: update Fedora
      Makefile: install default rules

Marco d'Itri (3):
      rules_generator: remove policy from write_cd_rules
      rules_generator: fix write_cd_rules when similar names exist in the root directory
      rules: Debian update


Summary of changes from v113 to v114
============================================

Hannes Reinecke (3):
      collect: extra to synchronize actions across events
      add $driver subtitution
      rules_generator: add S/390 persistent network support

Kay Sievers (24):
      rules_generator: remove executable flag from include file
      always unlink temporary file before creating new one
      rules: SUSE update
      volume_id: ext4 detection
      udevtrigger: allow to specify action string
      add option to RUN key to ignore the return value of the program
      use global udev_log variable instead of parameter in run_program
      add udev_rules_run() to handle RUN list
      move udev_utils_run.c into udev_rules.c
      rules: SUSE update
      name_list: rename loop_name -> name_loop
      handle dynamic rules created in /dev/.udev/rules.d/
      allow SYMLINK== match
      libvolume_id: use /usr/$libdir in pc file
      Makefile: add --as-needed flag to ld
      restore behavior of NAME==
      rules_generator: remove "installation" function
      udevtrigger: trigger "driver" events
      rules: update SUSE
      rules: Fedora update
      rules: add "do not edit" comment
      rules: Fedora update
      rules_generator: skip random MAC addresses
      write changed network interface names to the kernel log

Matthias Schwarzott (3):
      rules: Gentoo update
      fix inotify to work not only once
      rules: Gentoo update

Richard Hughes (1):
      Makefile: add "make dist" for nightly snapshots


Summary of changes from v112 to v113
============================================

David Zeuthen (1):
      vol_id: do not fail if unable to drop privileges

Kay Sievers (12):
      add missing ChangeLog
      make ATTR{[$SUBSYSTEM/$KERNEL]<attr>}="<value>" working
      rules: recognize partitions and disk devices properly
      rules: SUSE update
      atomically replace existing nodes and symlinks
      do not try to create existing file
      info() for ignore_remove
      rules: SUSE update
      Makefile: check for missing ChangeLog or RELEASE-NOTES at release
      allow to disable the replacement of unusual characters
      no newline in log messages
      udevd: do not use syslog if --verbose (debugging) is used

Tobias Klauser (1):
      fix typo in udev_utils_run.c


Summary of changes from v111 to v112
============================================

Fabio Massimo Di Nitto (1):
      rules: ignore partitons that span the entire disk

Hannes Reinecke (1):
      cciss device support

Kay Sievers (34):
      udevd: close /proc/meminfo after reading
      create_floppy_devices: remove dead "unlink" code
      volume_id: add function documentation
      udev_db: escape path names with \x00 instead of %00
      udevsettle: use long options
      replace_chars: replace spaces in node name
      volume_id: add and export string encoding function
      vol_id: export encoded strings
      rules: use encoded strings instead of skipping characters
      udevtest: print message before log output
      volume_id: escape % character
      replace_chars: replace % character
      IMPORT: do not mangle whitespace
      scsi_id: do not install symlink in /sbin
      rules: SUSE update
      volume_id: terminate overlong label strings
      scsi_id: add long options
      rules: use long options for scsi_id
      path_id: skip subsystem directory
      rules: fix cciss rule
      rules: SUSE update
      scsi_id: fix typo in help text
      fix "do not access parent" warning for ATTR{}
      sysfs: add device lookup by $SUBSYSYTEM:$KERNEL
      events for "bus" and "class" registration must be matched as "subsystem"
      udevtest: add --subsystem option
      sysfs: change order of subsystem lookup
      add $sys substitution
      add TEST=="<file>" key
      add "[$SUBSYSTEM/$KERNEL]<attribute>" lookup
      sysfs: handle bus/class top-level directories
      sysfs: skip unknown sysfs directories
      rules: SUSE update
      release 112

Miklos Vajna (2):
      create_floppy_devices: add man page
      path_id: remove on make uninstall

Ryan Lortie (1):
      volume_id: support for long-filename based labels

Scott James Remnant (2):
      replace_untrusted_chars: replace all whitespace with space
      run_program: log "info" not "error" if program is missing


Summary of changes from v110 to v111
============================================

Kay Sievers (19):
      rules: SUSE update
      rules: Fedora update
      volume_id: use md native uuid format
      vol_id: use long options
      volume_id: add volume_id_get_* functions
      vol_id: use volume_id_get_*
      udevd: use fgets() to read /proc files
      volume_id: add internal UUID_STRING
      volume_id: add DDF support
      vol_id: README update
      volume_id: rename UUID_64BIT_LE/BE
      vol_id: add ID_FS_UUID_SAFE
      rules: use ID_FS_UUID_SAFE
      rules: SUSE update
      volume_id: give access to list of all available probers
      vol_id: use libvolume_id prober list for --probe-all
      volume_id: add remaining names for prober lookup by type
      rules: SUSE update
      volume_id: vol_id depends on libvolume_id

Matthias Schwarzott (2):
      volume_id: fix Makefile for parallel make
      rules: Gentoo update


Summary of changes from v109 to v110
============================================

Harald Hoyer (1):
      udevcontrol: allow to set global variables in udevd

Kay Sievers (13):
      remove eventrecorder.sh
      update SUSE rules
      volume_id: add md metadata 1.0, 1.1, 1.2 support
      unset variable with ENV{VAR}=""
      delete copies of default rules in SUSE rules
      volume_id: ext - fix endianess in version number
      rules: Fedora update
      volume_id: old md metadata has only 32 bit for the uuid
      volume_id: minix version 3 support
      don't create $tempnode for devices without major
      usb_id: add <devpath> to help text
      ata_id: use getopt_long()
      rules: SUSE update

Matthias Schwarzott (3):
      Makefile: respect CFLAGS/LDFLAGS
      rules: Gentoo update
      ata_id: don't log error for libata devices on older kernels


Summary of changes from v108 to v109
============================================

Harald Hoyer (1):
      create_floppy_devices: create nodes with correct selinux context

Kay Sievers (11):
      udevtest: export ACTION string if given as option
      update SUSE rules
      make ACTION!="add|change" working
      udevtest: import uevent variables if possible
      udevinfo: export all information stored in database
      default rules: add libata compat links
      create_path: don't fail if something else created the directory
      udevd: fix serialization of events
      path_id: remove broken example
      libvolume_id: do not install static library
      update SUSE rules

Matthias Schwarzott (2):
      update Gentoo rules
      persistent device naming: add joystick links

VMiklos (1):
      path_id: add man page


Summary of changes from v107 to v108
============================================

Kay Sievers (3):
      udevinfo: relax check for the correct device if looked up by name
      don't write to sysfs files during test run
      finally remove the directory event-multiplexer crap

Matthias Schwarzott (2):
      write_cd_rules: set default link type to "by-id" for usb and ieee1394 devices
      update Gentoo rules

Pozsar Balazs (1):
      udevsettle: read udev not kernel seqnum first


Summary of changes from v106 to v107
============================================

Jean Tourrilhes (1):
      udevtest: export UDEV_LOG if we changed it

Kay Sievers (33):
      man: add missing options to various man pages
      man: fix typo
      create_floppy_devices: apply specified mode without umask
      man: spelling fixes
      udevmonitor: add switch for kernel and udev events
      default rules: wait for 0:0:0:0 scsi devices only
      update Fedora rules
      delete dasd_id, it moved to s390-tools
      update Gentoo rules
      encode db-file names, instead of just replacing '/'
      update internal variables if we see $DEVPATH during IMPORT
      increase /proc/stat buffer
      maintain index over device-names to devpath relation
      restore overwritten symlinks when the device goes away
      store devpath with the usual leading slash
      add link_priority to rule options, and store it in database
      pick actual valid device in udev_db_lookup_name
      cleanup already existing db-entries and db-index on device update
      selinux: move selinux_exit() to the main programs
      remove old error message
      read list of devices from index, make index private to database
      priority based symlink handling
      volume_id: get rid of compiler warning
      udevinfo: remove -d option
      update %n on netif name change
      if a node goes away, possibly restore a waiting symlink
      update TODO
      man: add "link_priority" option
      update SUSE rules
      udevtest: add --force mode
      udevinfo: print link priority
      usb_id: append target:lun to storage device serial
      run_directory: add final warning before removal

Marco d'Itri (1):
      update Debian rules

Matthias Schwarzott (2):
      udevd: cleanup std{in,our,err} on startup
      udevmonitor: fix swapped event switch descriptions


Summary of changes from v105 to v106
============================================

A. Costa (1):
      man: fix typos in scsi_id and udevd

Andrey Borzenkov (2):
      vol_id: add -L to print raw partition label
      vol_id: document -L

Jamie Wellnitz (1):
      persistent device naming: tape devices and medium changers

Kay Sievers (15):
      exclude parent devices from DRIVER== match
      volume_id: really fix endianess bug in linux_raid detection
      release 105
      man: correct udevinfo --export-db
      path_id: append LUN to iSCSI path
      create_floppy_devices: add option for owner/group
      update example rules
      apply format chars to ATTR before writing to sysfs
      add (subsystem) to udevmonitor output
      update DRIVER== changes
      remove --version from the udevinfo man page
      add test for an attribute which contains an operator char
      man: add note about parent matching behavior
      scsi_id: accept tabs in /etc/scsi_id.conf
      remove dead rule in persistent tape rules

Matthias Schwarzott (4):
      correct typo in extras/scsi_id/scsi_id.conf
      fix retry-loop in netif-rename code
      add option --version to udevd
      rule_generator: fix for creating rules on read-only filesystem

Peter Breitenlohner (1):
      fix INSTALL_PROGRAM vs. INSTALL_SCRIPT

Sergey Vlasov (3):
      udevd: init signal pipe before daemonizing
      unlink old database file before creating a new one
      fix %c $string substitution

Theodoros V. Kalamatianos (1):
      fix udev attribute names with a colon


Summary of changes from v104 to v105
============================================

A. Costa (1):
      man: fix typos in scsi_id and udevd

Andrey Borzenkov (2):
      vol_id: add -L to print raw partition label
      vol_id: document -L

Kay Sievers (2):
      exclude parent devices from DRIVER== match
      volume_id: really fix endianess bug in linux_raid detection

Matthias Schwarzott (2):
      correct typo in extras/scsi_id/scsi_id.conf
      fix retry-loop in netif-rename code

Peter Breitenlohner (1):
      fix INSTALL_PROGRAM vs. INSTALL_SCRIPT

Sergey Vlasov (3):
      udevd: init signal pipe before daemonizing
      unlink old database file before creating a new one
      fix %c $string substitution


Summary of changes from v103 to v104
============================================

Kay Sievers (12):
      update Fedora rules
      update example rules
      update SUSE rules
      update SUSE rules
      volume_id: fix endianess bug in linux_raid detection
      man: fix udevmonitor text
      man: recreate from xml
      rename config "filename" to "dir"
      remove outdated documentation
      rename "udev.c" to "test-udev.c" - it is only for testing
      update Fedora rules
      use git-archive instead of git-tar-tree

Kazuhiro Inaoka (1):
      inotify syscall definitions for M32R

Marco d'Itri (2):
      write_cd_rules: identity-based persistence
      scsi_id: remove trailing garbage from ID_SERIAL_SHORT

Russell Coker (1):
      SELinux: label created symlink instead of node


Summary of changes from v102 to v103
============================================

Kay Sievers:
      persistent storage rules: skip gnbd devices
      volume_id: add checksum check to via_raid
      volume_id: add comment about hfs uuid conversion
      update SUSE rules
      update Fedora rules


Summary of changes from v101 to v102
============================================

Daniel Drake:
      writing_udev_rules: fix typo in example rule

Kay Sievers:
      create missing ChangeLog for version 101
      update SUSE rules
      update default rules
      first try "subsystem" link at a parent device, before guessing
      if /sys/subsystem exists, skip class, bus, block scanning
      scsi_id: export ID_SERIAL_SHORT without vendor/product
      update SUSE rules

MUNEDA Takahiro:
      path_id: fix SAS disk handling


Summary of changes from v100 to v101
============================================

Arjan Opmeer:
      fix udevinfo help text typo

Bryan Kadzban:
      cleanup default rules
      add IMPORT operations to the udev man page

Kay Sievers:
      remove Makefile magic for leading '0' in version
      udevd: use getopt_long()
      udevd: add --verbose option to log also to stdout
      udevd: add --debug-trace option
      rule_generator: improve net rule comment generation
      volume_id: correct iso9660 high sierra header
      warn if a PHYSEDV* key, the "device" link, or a parent attribute is used
      don't print PHYSDEV* warnings for old WAIT_FOR_SYSFS rules
      udevinfo: print error in --attribute-walk
      udev_sysfs: unify symlink resolving
      udevtrigger: trigger devices sorted by their dependency
      fix spelling in deprecation warning
      release 101

Michał Bartoszkiewicz:
      udevtrigger: fix typo that prevents partition events

Miles Lane:
      clarify "specified user/group unknown" error

Piter PUNK:
      update slackware rules

VMiklos:
      update Frugalware rules


Summary of changes from v099 to v100
============================================

Kay Sievers:
      update SUSE rules
      fix messed up ChangeLog from release 099
      man: add $attr{} section about symlinks
      revert persistent-storage ata-serial '_' '-' replacement


Summary of changes from v098 to v099
============================================

Greg KH:
      update Gentoo rules

Kay Sievers:
      udev_db.c: include <sys/stat.h>
      use fnmatch() instead of our own pattern match code
      rename major/minor variable to maj/min to avoid warning
      update source file headers
      udevtest: print header that ENV{} can't work
      update TODO
      udevtrigger: options to filter by subsystem and sysfs attribute
      udevtrigger: remove unused longindex
      udevinfo: use long options
      udevd: use files instead of symlinks for /dev/.udev/queue,failed
      udevtrigger: fix pattern match
      reorder options in udevinfo man page
      udevinfo: fix SUBSYTEMS spelling error
      fix ENV{TEST}="Test: $env{TEST}"
      let $attr{symlink} return the last element of the path
      cdrom_id: add rules file to call cdrom_id
      udevinfo: do not show symlinks as attributes in --attribute-walk
      remove broken name_cdrom.pl

Marco d'Itri:
      update Debian rules
      run_program: close pipe fd's which are connected to child process
      add persistent rules generator for net devices and optical drives

MUNEDA Takahiro:
      changes rules for ata disk from '_' to '-'

Sergey Vlasov:
      make struct option arrays static const
      fix "subsytem" typo


Summary of changes from v097 to v098
============================================

Alex Merry:
      udevtest: allow /sys in the devpath paramter

Harald Hoyer:
      selinux: init once in the daemon, not in every event process

Kay Sievers:
      udevd: remove huge socket buffer on the control socket
      man page: fix typo
      rename udev_libc_wrapper -> udev_sysdeps
      db: store devpath - node relationship for all devices
      udevinfo: allow -a -n <node>
      udevinfo, udevtest: simplify '/sys' stripping from devpath argument
      lookup_user, lookup_group: report "unknown user" and "lookup failed"
      consistent key naming to match only the event device or include all parent devices
      skip rule, if too may keys of the same type are used
      introduce ATTR{file}="value" to set sysfs attributes
      update SUSE rules
      update default rules
      export DRIVER for older kernels as a replacement for PHYSDEVDRIVER
      fix typo in SUBSYSTEMS key parsing
      udevtrigger: add --retry-failed
      volume_id: add suspend partition detection
      vol_id: use primary group of 'nobody' instead of 'nogroup'
      remove built-in /etc/passwd /etc/group parser
      always expect KEY{value} on ATTR, ATTRS, ENV keys
      use new key names in test programs
      cleanup commandline argument handling
      db: don't create a db file for only a node name to store
      man: add ATTR{file}="value" assignment

Lennart Poettering:
      volume_id: fix fat32 cluster chain traversal

Marco d'Itri:
      fix 'unknow user' error from getpwnam/getgrnam
      fix rc when using udev --daemon
      update Debian rules

Michał Bartoszkiewicz:
      man pages: fix typos


Summary of changes from v096 to v097
============================================

Anssi Hannula:
      add joystick support to persistent input rules

Kay Sievers:
      firmware.sh: remove needless '/'
      vol_id: add --skip-raid and --probe-all option
      switch uevent netlink socket to group 1 only
      increase /proc/stat read buffer
      use "change" instead of "online" events
      remove 'static' from local variable
      libvolume_id: add parameter 'size' to all probe functions
      man pages: replace 'device-path' by 'devpath'
      man pages: work around xmlto which tries to be smart
      refresh vol_id man page
      udevinfo: add DRIVER==
      Makefile: fix dependency
      libvolume_id: read ufs2 label
      switch ifdef __KLIBC__ to ifndef __GLIBC__
      report failing getpwnam/getgrnam as error
      rename udevcontrol message types and variables
      initialize unused sockets to -1
      udevd: remove useless udevinitsend parameter
      update README
      udevd: autotune max_childs/max_childs_running
      update frugalware rules
      update SUSE rules
      move default rules to etc/udev/rules.d/
      add 'crypto' devices to persistent storage rules
      add late.rules to default rules
      update Fedora rules
      don't report an error on overlong comment lines
      update SUSE rules
      udevd: read DRIVER from the environment

Marco d'Itri:
      make rename_netif() error messages useful
      path_id: fix an harmless syntax error

Piter PUNK:
      update slackware rules

Richard Purdie:
      Fix inotify syscalls on ARM


Summary of changes from v095 to v096
============================================

Kay Sievers:
      Makefiles: fix .PHONY for man page target
      allow longer devpath values
      path_id: prepare for new sysfs layout


Summary of changes from v094 to v095
============================================

Kay Sievers:
      update SUSE rules
      don't remove symlinks if they are already there
      allow "online" events to create/update symlinks
      udevinfo: clarify parent device attribute use
      update SUSE rules
      netif rename: optimistic loop for the name to become free
      remove broken %e enumeration

Tobias Klauser:
      print usage of udevcontrol when no or invalid command is given


Summary of changes from v093 to v094
============================================

Daniel Drake:
      update "writing udev rules"

Kay Sievers:
      libvolume_id: gfs + gfs2 support
      remove MODALIAS key and substitution
      add persistent-input.rules

Marco d'Itri:
      update Debian rules


Summary of changes from v092 to v093
============================================

Hannes Reinecke:
      path_id: add support for iSCSI devices

Kay Sievers:
      libvolume_id: fat - check for signature at end of sector
      libvolume_id: add more software raid signatures
      update Fedora rules
      path_id: prevent endless loop for SAS devices on older kernels
      remove udevsend
      replace binary firmware helper with shell script
      skip device mapper devices for persistent links


Summary of changes from v091 to v092
============================================

Kay Sievers:
      don't include stropts.h, some libc's don't like it
      udevd: create leading directories for /dev/.udev/uevent_seqnum
      vol_id: fix logging from libvolume_id's log function
      update SUSE rules
      update SUSE rules
      add more warnings for invalid key operations
      fix offsetof() build issue with recent glibc
      selinux: fix typo in block device node selection
      vol_id: add NetWare volume detection
      edd_id: fix "(null)" output if "mbr_signature" does not exist
      update Fedora rules
      libvolume_id: nss - use different uuid

Libor Klepac:
      path_id: add platform and serio support

Marco d'Itri:
      update Debian rules
      path_id: fix bashism


Summary of changes from v090 to v091
============================================

Hannes Reinecke:
      path_id: fix SAS device path generation

Kay Sievers:
      udevtest: don't try to delete symlinks
      persistent rules: fix typo in dm rule
      allow NAME=="value" to check for already assigned value
      udevd: export initial sequence number on startup


Summary of changes from v089 to v090
============================================

Kay Sievers:
      udevd: export current seqnum and add udevsettle
      volume_id: fix endianess conversion typo for FAT32
      merge device event handling and make database content available on "remove"
      set default udevsettle timeout to 3 minutes
      export INTERFACE_OLD if we renamed a netif
      let udevmonitor show the possibly renamed devpath
      volume_id: move some debug to info level
      udevtrigger: fix event order
      usb_id: remove uneeded code
      remove old symlinks before creating current ones
      path_id: fix loop for SAS devices
      apply format char to variables exported by ENV

Marco d'Itri:
      add inotify support for hppa and MIPS and log if inotify is not available

Matt Kraai:
      fix typo in error message


Summary of changes from v088 to v089
============================================

Hannes Reinecke:
      path_id: add bus to USB path

Kay Sievers:
      change rule to skip removable IDE devices
      don't create uuid/label links for raid members
      volume_id: provide library
      fix rule order for persistent tape links
      update man page
      volume_id: provide a custom debug function
      volume_id: rename subdirectory
      volume_id: use shared library by default
      because is better than cause
      volume_id: remove some global symbols
      volume_id: define exported symbols
      remove all stripping code
      man pages: mention udev(7) not udev(8)
      update Debian rules
      move all *_id programs to /lib/udev/
      update Red Hat rules
      update SUSE rules
      pass CROSS_COMPILE to AR and RANLIB down to extras/
      volume_id: update README
      volume_id: generate man page from xml source
      update README
      fix symlink targets in Makefiles


Summary of changes from v087 to v088
============================================

Hannes Reinecke:
      persistent links: add scsi tape links and usb path support

Kay Sievers:
      volume_id: add squashfs detection
      reset signal handler in event process
      correct use of fcntl()
      add udevtrigger to request events for coldplug
      add ',' to trusted chars
      volume_id: remove partition table parsing code
      volume_id: remove all partition table support
      fix spelling error in debug string
      rename "persistent disk" to "persistent storage"
      fix output for USB path


Summary of changes from v086 to v087
============================================

Hannes Reinecke:
      path_id: support SAS devices

Kay Sievers:
      fix persistent disk rules to exclude removable IDE drives
      warn about %e, MODALIAS, $modalias
      remove devfs rules and scripts

Masatake YAMATO:
      typo in debug text in udev_run_hotplugd.c


Summary of changes from v085 to v086
============================================

Kay Sievers:
      volume_id: replace __packed__ by PACKED macro
      volume_id: split raid and filesystem detection
      volume_id: add missing return
      udevd: fix queue export for multiple events for the same device

Kyle McMartin:
      workaround missing kernel headers for some architectures

Nix:
      update to udev-084/doc/writing_udev_rules


Summary of changes from v084 to v085
============================================

Andrey Borzenkov:
      Fix trivial spelling errors in RELEASE-NOTES

Jeroen Roovers:
      fix typo in parisc support to path_id

Kay Sievers:
      make WAIT_FOR_SYSFS usable in non "wait-only" rules
      fix typo in man page
      include sys/socket.h for klibc build
      cramfs detection for bigendian
      exit WAIT_FOR_SYSFS if the whole device goes away
      update SUSE rules
      update Red Hat rules
      update Gentoo rules
      include errno.h in udev_libc_wrapper.c


Summary of changes from v083 to v084
============================================

Kay Sievers:
      update SUSE rules
      switch CROSS to CROSS_COMPILE
      replace fancy silent build program by simple kernel build like logic
      move manpages to top level
      remove UDEVD_UEVENT_INITSEND
      whitespace fixes
      scsi_id: remove dead files
      optimize sysfs device and attribute cache
      let SYSFS{} look at the device, not only the parent device
      add debug output to sysfs operations


Summary of changes from v082 to v083
============================================

Andrey Borzenkov:
      man page: document when substitutions are applied for RUN and other keys
      check for ignore_device in loop looks redundant

Kay Sievers:
      udevstart: fix NAME="" which prevents RUN from being executed
      find programs in /lib/udev for IMPORT if {program} is not given
      don't add $SUBSYSTEM automatically as $1 to programs
      remove redundant substitution of RUN key


Summary of changes from v081 to v082
============================================

Andrey Borzenkov:
      substitute format chars in RUN after rule matching

Kay Sievers:
      scsi_id, usb_id: request device parent by subsystem
      path_id: work with "all devices in /sys/devices"
      ignore all messages with missing devpath or action
      Makefile: remove dynamic config file generation
      path_id: handle fiber channel (Hannes Reinecke <hare@suse.de>)
      usb_id: don't fail on other subsytems than "scsi"
      don't do RUN if "ignore_device" is given
      increase kernel uevent buffer size
      move udev(8) manpage to udev(7)
      recreate man pages from xml source
      remove udev, udevstart, udevsend from the default installation
      update SUSE rules
      rename apply_format() cause it is public now
      udevtest: add udev_rules_apply_format() to RUN keys
      let "ignore_device" always return the event successfully

Olivier Blin:
      fixes udev build with -fpie


Summary of changes from v080 to v081
============================================

Kay Sievers:
      add DEVLINKS to "remove" event
      better log text and comments
      vol_id: probe volume as user nobody
      fix BUS, ID, $id usage
      prepare moving of /sys/class devices to /sys/devices


Summary of changes from v079 to v080
============================================

Brent Cook:
      fix dependency for make -j2

coly:
      fix man page typos

Kay Sievers:
      update RELEASE-NOTES + TODO
      fix typo in man page
      update TODO
      update SUSE rules
      path_id: fix invalid character class
      replace libsysfs

Marco d'Itri:
      udev_selinux.c: include udev.h


Summary of changes from v078 to v079
============================================

Kay Sievers:
      don't log error if database does not exist
      use udev_root instead of "/dev"in selinux matchpathcon_init_prefix()
      scsi_id: read page 0x80 with libata drives
      update SUSE rules
      remove %e from man page


Summary of changes from v077 to v078
============================================

Greg Kroah-Hartman:
      Update Gentoo udev main rule file.
      add parisc support to path_id

Hannes Reinecke:
      scsi_id: -u fold multiple consecutive whitespace chars into single '_'

Harald Hoyer:
      optimize SELinux path match

Kay Sievers:
      update README
      allow C99 statements
      fix segfaulting create_floppy_devices
      update SUSE rules
      remove unused variables
      remove default settings in udev.conf
      clearenv() is now part of klibc
      add DEVLINKS to the event environment

Kurt Garloff:
      scsi_id: support pre-SPC3 page 83 format


Summary of changes from v076 to v077
============================================

Kay Sievers:
      merge two consecutive static strlcat's
      don't return an error, if "ignore_device" is used
      remove outdated and misleading stuff
      move SEQNUM event skipping to udevsend
      update RELEASE-NOTES
      update SUSE rules
      allow programs in /lib/udev called without the path
      update SUSE rules
      add target to to generate ChangeLog section
      update Red Hat rules

Marco d'Itri:
      allow to overwrite the configured udev_root by exporting UDEV_ROOT
      let udevsend ignore events with SEQNUM set
      update Debian rules


Summary of changes from v75 to v076
============================================

Kay Sievers:
      fix typo in eventrecorder
      volume_id: include stddef.h header
      remove misleading install instructions
      remove all built-in wait_for_sysfs logic
      add linux/types.h back, old glibc-kernel-headers want it
      volume_id: use glibc's byteswap
      udevd: ignore all messages without DEVPATH
      udevd: track exit status of event process
      udevd: export event queue and event state
      remove "udev_db" option from config file
      Makefile: remove exec_prefix and srcdir
      update README and RELEASE-NOTES
      udevd: track killed event processes as failed
      update README
      don't start udevd from udevsend
      udevd: add a missing return
      libvolume_id: fix weird fat volume recognition
      move some helpers from extras to /lib/udev

Scott James Remnant:
      move delete_path() to utils
      clean-up empty queue directories
      Makefile: fail, if submake fails


Summary of changes from v74 to v075
============================================

Greg Kroah-Hartman:
      Make run_directory.c stat the place it is going to try to run.

Kay Sievers:
      forgot the ChangeLog for 074
      volume_id: provide libvolume_id.a file
      remove our own copy of klibc
      remove outdated HOWTO
      update TODO
      update SUSE rules
      remove completely useless start script
      fix tests and remove no longer useful stuff
      replace udeveventrecorder by a shell script


Summary of changes from v73 to v074
============================================

Kay Sievers:
      never queue events with TIMEOUT set
      let NAME="" supress node creation, but do RUN keys
      remove udevinitsend
      update .gitignore

Marco d'Itri:
      add strerror() to error logs
      move some logging from dbg() to info()


Summary of changes from v72 to v073
============================================

Kay Sievers:
      udevd: depend on netlink and remove all sequence reorder logic
      print useconds in udevmonitor
      add RELEASE-NOTES, update TODO


Summary of changes from v71 to v072
============================================

Ananth N Mavinakayanahalli:
  libsysfs: translate devpath of the symlinked class devices to its real path

Jan Luebbe:
  add man pages for *_id programs

Kay Sievers:
  volume_id: add OCFS Version 1
  volume_id: add Veritas fs
  volume_id: check ext fs for valid blocksize, cause magic is only 2 bytes
  volume_id: move blocksize validation to fix jbd recognition
  volume_id: fix typo in ocfs
  volume_id: add vxfs include
  volume_id: make FAT32 recognition more robust
  volume_id: Version 051
  volume_id: fix typo in ext blocksize check
  volume_id: Version 052
  FAQ: remove confusing statement about module loading
  cleanup compiler/linker flags
  use DESTDIR on uninstall, no need to pass prefix to submake
  allow to pass STRIPCMD, to skip stripping of binaries
  cleanup make release
  fix the new warnings I asked for
  move rules parsing into daemon
  "make STRIPCMD=" will disable the stripping of binaries
  remove no longer working udevd-test program
  "STRIPCMD=" for the EXTRAS
  add dummy inotify syscalls on unsupported architecture
  remove no longer needed waiting for "dev" file
  revert the "read symlink as device patch"
  use libsysfs to translate the class linke to the device path
  libsysfs: remove brute-force "bus", "driver" searching for old kernels
  test: add "driver" and "bus" links to test sysfs tree
  update RELEASE-NOTES
  udevd: don't daemonize before initialization
  log to console if syslog is not available
  udevd: disable OOM
  remove precompiled rules option
  export DEVNAME on "remove" only if we really got a node to remove
  fix typo in umask()


Summary of changes from v70 to v071
============================================

Greg Kroah-Hartman:
      Remove the udev.spec file as no one uses it anymore

John Hull:
      edd_id: check that EDD id is unique

Kay Sievers:
      ata_id: open volume O_NONBLOCK
      add "Persistent Device Naming" rules file for disks
      scsi_id: switch temporary node creation to /dev
      volume_id: set reiser instead of reiserfs for filesystem type
      update devfs rules header
      update Debian rules
      update Fedora rules
      update Debian rules
      remove no longer needed includes
      switch tools and volume_id from LGPL to GPLv2
      add edd-*-part%n to the persistent.rules
      update Debian persistent rules
      clarify README
      udevd: fix initial timeout handling
      force event socket buffer size to 16MB
      udevd: move logging from err to info for non-hotplug uevent
      fix selinux compilation
      libsysfs: accept sysmlinks to directories instead of real directories

Marco d'Itri:
      run_directory: fix typo in "make install"


Summary of changes from v069 to v070
============================================

Amir Shalem:
  udevd: fix udevd read() calls to leave room for null byte

Edward Goggin:
  scsi_id: derive a UID for a SCSI-2 not compliant with the page 83

Greg Kroah-Hartman:
  fix nbd error messages with a gentoo rule hack
  fix scsi_id rule in gentoo config file

Jürg Billeter:
  EXTRAS/Makefile: fix install targets to match main Makefile

Kay Sievers:
  volume_id: fix error handling with failing read()
  EXTRAS: cleanup and sync all Makefiles
  add install test to 'make buildtest'
  update RELEASE-NOTES

Olivier Blin:
  fix a debug text typo in udev_rules.c


Summary of changes from v068 to v069
============================================

Amir Shalem:
  fix typo in firmware_helper

Duncan Sands:
  firmware_helper: fix write count

Kay Sievers:
  *_id: fix zero length in set_str()
  add program name to logged error
  fix exit code of udevinitsend and udevmonitor
  udevd: keep the right order for messages without SEQNUM
  volume_id: don't probe for mac_partition_maps
  udevmonitor: cleanup on exit
  path_id: remove SUSE specific PATH
  update SUSE rules
  add pci_express to bus list
  update SUSE rules
  store ENV{key}="value" exported keys in the database
  fix lookup for name in the udevdb, it should return the devpath
  prepare for new HAL udevdb dump
  print persistent data with "udevinfo -q all"
  change parameter order of udev_db_search_name()
  add and use name_list_cleanup() for cleaning up the string lists
  don't store devpath in udevdb, we don't need it
  add uft8 validation for safe volume label exporting
  start to enforce plain ascii or valid utf8
  use WRITE_END/READ_END for the pipe index
  remove not needed sig_flag for state of signal_pipe
  don't reenter get_udevd_msg() if message is ignored
  rename ...trailing_char() to ...trailing_chars()
  vol_id: ID_LABEL_SAFE will no longer contain fancy characters
  udevd: move some logging to "info" and "err"
  remove special TIMEOUT handling from incoming queue
  udev_test.pl: we replace untrusted chars with '_'
  check the udevdb before assigning a new %e
  update RELEASE-NOTES
  udevinfo: add database export
  write man page masters in DocBook XML
  udevinfo: rename dump() to export()
  test the automatic man page rebuild and checkin
  Makefile: remove all the duplicated rules
  all man pages rewritten to use DocBook XML
  add missing udevsend man page
  also forgot udevmonitor.8
  udevinfo: restore -d option
  scsi_id: rename SYSFS to LIBSYSFS
  add edd_id tool to match BIOS EDD disk information
  move and update libsysfs.txt
  klibc: update to version 1.1.1
  delete cdromsymlinks* - obsoleted by cdrom_id and IMPORT rules
  delete docs/persistent_naming - obsoleted by persistent disk names
  delete old Fedora html page
  add "totally outdated" header to docs/overview :)
  update SUSE rules
  fix useless but funny name_cdrom.pl script to work again
  update TODO
  Makefile: fix prerequisits for $(PROGRAMS)
  Makefile: cleanup install targets
  remove chassis_id program
  fic gcov use and move it into the Makefile
  FAQ: update things that have changed

Thierry Vignaud:
  switch to '==' in raid-devfs.sh


Summary of changes from v067 to v068
============================================

Greg Kroah-Hartman:
  add EXTRAS documentation to the README file.
  Always open the cdrom drive in non-blocking mode in cdrom_id
  cdrom_id: change err() to info() to help with debugging problems

Kay Sievers:
  cleanup some debug output and move to info level + unify select() loops
  move udevmonitor to /usr/sbin
  ENV{TEST}=="1" compares and ENV{TEST}="1" sets the environment
  vol_id: fix sloppy error handling
  fix typo in cdrom_id syslog
  bring std(in|out|err) fd's in a sane state
  fix printed udevmonitor header


Summary of changes from v066 to v067
============================================

Greg Kroah-Hartman:
  added the cdrom.h #defines directly into the cdrom_id.c file

Kay Sievers:
  update SUSE rules
  fix make install, as we don't provide a default rule set anymore
  fix more compiler warnings ...
  fix udevstart event ordering, we want /dev/null very early
  don't fail too bad, if /dev/null does not exist


Summary of changes from v065 to v066
============================================

Greg Kroah-Hartman:
  update gentoo rule file.
  Created cdrom_id program to make it easier to determine cdrom types
  added cdrom_id to the build check
  updated gentoo rule file to handle removable ide devices.
  changed cdrom_id exports to be easier to understand and consistant with other _id programs.
  fix klibc build issue in cdrom_id.c
  Change the gentoo rules to use cdrom_id instead of cdsymlink.sh
  changed location of gentoo helper apps to be /sbin instead of in scripts dir
  tweak the gentoo rules some more.

Kay Sievers:
  add NETLINK define for the lazy distros
  read sysfs attribute also from parent class device
  switch some strlcpy's to memcpy
  allow clean shutdown of udevd
  add flag for reading of precompiled rules
  update distro rules files
  add SUSE rules
  update SUSE rules
  add firmware_helper to load firmware
  more distro rules updates
  update README
  remove example rules and put the dev.d stuff into the run_directory folder
  trivial text cleanups
  update SUSE rules
  split udev_util in several files
  update SUSE rules
  allow logging of all output from executed tools
  add Usage: to udevmonitor and udevcontrol
  move some logging to the info level

Thierry Vignaud:
  fix udevinfo output


Summary of changes from v064 to v065
============================================

Greg Kroah-Hartman:
  Added persistent name rules for block devices to gentoo rule file.
  Added horrible (but fun) path_id script to extras.
  Update gentoo rules file.

Kay Sievers:
  update release notes for next version
  add udevmonitor, to debug netlink+udev events at the same time
  allow RUN to send the environment to a local socket
  fix GGC signed pointer warnings and switch volume_id to stdint


Summary of changes from v063 to v064
============================================

Andre Masella:
  volume_id: add OCFS (Oracle Cluster File System) support

Hannes Reinecke:
  usb_id: fix typo
  add ID_BUS to *_id programs
  create_floppy_devices: add tool to create floppy nodes based on sysfs info

Kay Sievers:
  move code to its own files
  make SYSFS{} usable for all devices
  add padding to rules structure
  allow rules to have labels and skip to next label
  thread unknown ENV{key} match as empty value


Summary of changes from v062 to v063
============================================

Anton Farygin:
  fix typo in GROUP value application

Greg Kroah-Hartman:
  add 'make tests' as I'm always typing that one wrong...
  Really commit the udev_run_devd changes...
  Fixed udev_run_devd to run the /etc/dev.d/DEVNAME/ files too
  fix position of raw rules in gentoo config file

Hannes Reinecke:
  dasd_id: add s390 disk-label prober
  fix usb_id and let scsi_id ignore "illegal request"

Kay Sievers:
  volume_id: remove s390 dasd handling, it is dasd_id now
  trivial fixes for *_id programs
  IMPORT: add {parent} to import the persistent data of the parent device
  allow multiple values to be matched with KEY=="value1|value2"
  udevd: set incoming socket buffer SO_RCVBUF to maximum
  remember mapped rules state
  ata_id: check for empty serial number
  compile dasd only on s390

Ville Skyttä:
  correct default mode documentation in udev


Summary of changes from v061 to v062
============================================

Kay Sievers:
  fix symlink values separated by multiple spaces
  update RELEASE-NOTES
  fix typo in group assignment
  fix default-name handling and NAME="" rules
  add WAIT_FOR_SYSFS key to loop until a file in sysfs arrives
  fix unquoted strings in udevinitsend

Summary of changes from v060 to v061
============================================

Greg Kroah-Hartman:
  Sync up the Debian rules files
  fix cdrom symlink problem in gentoo rules
  Fix ChangeLog titles

Kay Sievers:
  update RELEASE-NOTES
  we want to provide OPTFLAGS
  rename ALARM_TIMEOUT to UDEV_ALARM_TIMEOUT
  udevd: optimize env-key parsing
  don't resolve OWNER, GROUP on precompile if string contains %, $
  set default device node to /dev
  create udevdb files only if somehting interesting happened
  pack parsed rules list
  replace useless defines by inline text
  move rule matches to function
  add usb_id program to generate usb-storage device identifiers
  add IEEE1394 rules to the gentoo rule file
  fake also kernel-name if we renamed a netif
  allow OPTIONS to be recognized for /sys/modules /sys/devices events
  switch gentoo rules to new operators


Summary of changes from v059 to v060
============================================

Greg Kroah-Hartman:
  Fix the gentoo udev rules to allow the box to boot properly

Gustavo Zacarias:
  Udev doesn't properly build with $CROSS

Kay Sievers:
  Keep udevstart from skipping devices without a 'dev' file

Marco d'Itri:
  #define NETLINK_KOBJECT_UEVENT


Summary of changes from v058 to v059
============================================

Greg Kroah-Hartman:
  Update the gentoo rule file
  Fix udevinfo for empty sysfs directories
  Fix makefile to allow 'make release' to work with git

Hannes Reinecke:
  udev: fix netdev RUN handling
  udevcontrol: fix exit code

Kay Sievers:
  prepare RELEASE-NOTES
  add ID_TYPE to the id probers
  add -x to scsi_id to export the queried values in env format
  store the imported device information in the udevdb
  rename udev_volume_id to vol_id and add --export option
  add ata_id to read serial numbers from ATA drives
  IMPORT allow to import program returned keys into the env
  unify execute_command() and execute_program()
  IMPORT=<file> allow to import a shell-var style config-file
  allow rules to be compiled to one binary file
  fix the fix and change the file to wait for to the "bus" link
  fix udevstart and let all events trvel trough udev
  prepare for module loading rules and add MODALIAS key
  remove device node, when type block/char has changed
  Makefile: remove dev.d/ hotplug.d/ from install target
  udevcontrol: add max_childs command
  udevd: control log-priority of the running daemon with udevcontrol
  udeveventrecorder: add small program that writes an event to disk
  klibc: add missing files
  udevinitsend: handle replay messages correctly
  udev man page: add operators
  udevd: allow starting of udevd with stopped exec-queue
  klibc: version 1.0.14
  udev: handle all events - not only class and block devices
  volume_id: use udev-provided log-level
  udev: clear lists if a new value is assigned
  udev: move dev.d/ handling to external helper
  udev: allow final assignments :=
  udevd: improve timeout handling
  Makefile: fix DESTDIR
  udevd: add initsend
  udevd: add udevcontrol
  udevd: listen for netlink events

Stefan Schweizer:
  Dialout group fix for capi devices in the gentoo rules file

Summary of changes from v057 to v058
============================================

Daniel Drake:
  o Writing udev rules docs update

Darren Salt:
  o update cdsymlinks to latest version

Greg Kroah-Hartman:
  o remove detach_state files from the sysfs test tree
  o Update permissions on test scripts so they will run properly now
  o hopefully fix up the symlinks in the test directory
  o Removed klibc/klibc.spec as it is autogenerated
  o Added symlinks thanks to Kay's script and git hacking
  o add Red Hat/Fedora html documenation
  o Update Red Hat default udev rules

Kay Sievers:
  o selinux: fix handling during creation of symlinks
  o Fedora udev.rules update
  o libsysfs: version 2.0
  o klibc: version 1.0.7

Masanao Igarashi:
  o Fix libsysfs issue with relying on the detach_state file to be

Summary of changes from v056 to v057
============================================

<tklauser:access.unizh.ch>:
  o fix stupid all_partitions bug

Kay Sievers:
  o add test for make -j4 to build-check
  o klibc: version 1.0.6
  o update Debian rules
  o apply default permissions only for devices that will need it
  o adapt RELEASE-NOTES
  o udev_volume_id: fix endianess macros
  o udev-test.pl: add test for DEVNAME export to RUN environment
  o update the man page to reflect the recent changes
  o export DEVNAME to RUN-key executed programs
  o fix make -j4 and the local klibc-install
  o update RELEASE-NOTES
  o add RUN key to be able to run rule based notification
  o fix udevtest to print the error if logging is disabled
  o move execute_program to utils + add action to init_device
  o correct correction for error path for PROGRAM execution
  o correct error path for PROGRAM execution
  o klibc: version 1.0.5
  o check for strlen()==0 before accessing strlen()-1
  o allow to match against empty key values
  o read %s{}-sysfs values at any device in the chain
  o udev_rules.c: don't change sysfs_device while walking up the device chain
  o klibc: strlcpy/strlcat - don't alter destination if size == 0
  o fix klibc's broken strlcpy/strlcat
  o udevinfo: print SYSFS attribute the same way we match it
  o remove untrusted chars read from sysfs-values or returned by PROGRAM
  o udevinfo: print errors to stderr instead of stdout
  o klibc: version 1.0.4
  o support log-priority levels in udev.conf
  o test-suite: remove UDEV_TEST, it's not needed anymore
  o libsysfs: remove trailing slash on SYSFS_PATH override


Summary of changes from v055 to v056
============================================

<tklauser:access.unizh.ch>:
  o fix header paths in udev_libc_wrapper.c

Kay Sievers:
  o udev-test.pl: use more common user/group names
  o klibc: remove SCCS directories from the temporary klibc install
  o udev-test.pl: add a test where the group cannot be found in /etc/passwd
  o udev-test.pl: add check for textual uid/gid
  o fix bad typo that prevents the GROUP to be applied
  o udevd: don't delay events with TIMEOUT in the environment
  o klibc: use klcc wrapper instead of our own Makefile
  o change call_foreach_file to return a list


Summary of changes from v054 to v055
============================================

<jkluebs:luebsphoto.com>:
  o This patch causes the remove handler to check that each symlink actually points to the correct devnode and skip it if it does not.

<pebenito:gentoo.org>:
  o udev selinux fix

<tklauser:access.unizh.ch>:
  o The following patch fixes some warnings when compiling volume_id from udev with the -Wall compiler flag. Define _GNU_SOURCE for strnlen() and correct the path to logging.h
  o The following patch fixes a warning when compiling chassis_id from udev with the -Wall compiler flag. There are too much conversions in the format string of sscanf(). One %d can be dropped.

Greg Kroah-Hartman:
  o fix raid rules
  o added frugalware udev ruleset
  o merge selinux and Kay's symlink fixes together

Hannes Reinecke:
  o volume_id: Fix label/uuid reading for reiserfs

Kay Sievers:
  o add udevstart to the RELEASE-NOTES
  o volume_id: version 43
  o clarify the shortcomings of %e
  o correct rule match for devices without a physical device
  o remove unneeded code, libsysfs does this for us
  o add final release note
  o add ENV{} key to match agains environment variables
  o simplify sysfs_pair handling
  o add a test and simplify debug statement
  o support =, ==, !=, += for the key match and assignment
  o add OPTION="last_rule" to skip any later rule
  o rename namedev_dev to udev_rule
  o correct enum device_type
  o remove udevstart on make clean
  o volume_id: version 42
  o volume_id: version 41
  o remove unneeded include
  o The path to dlist.h is not correct
  o udevinfo -d: use '=' as separator, cause ':' may be a part of the devpath
  o klibc: version 1.0.3
  o add RELEASE-NOTES file
  o test suite: move "driver" link to physical device
  o remove PLACE key match
  o don't lookup "root" in the userdb
  o fix ia64 compile
  o fix segfaulting udev while DRIVER matching
  o cleanup list.h
  o klibc: version 0.214
  o rename device_list->list to device_list->node
  o replace strncpy()/strncat() by strlcpy()/strlcat()
  o split udev and udevstart
  o udev_volume_id: version 39
  o rename LOG to USE_LOG in all places
  o remove Makefile magic for klibc integration
  o klibc_fixups: remove no longer needed stuff
  o udev_volume_id: volume_id v38
  o use numeric owner/group as default values to avoid parsing userdb
  o fix up segfaulting binaries with new klibc
  o udevinfo -d: speed-up device dump
  o klibc: version 0.211
  o klibc_fixups: remove unneeded stuff
  o replace weird defines by real code
  o udev-test.pl: remove useless tests
  o allow unlimitied count of symlinks
  o unmap db-file after use
  o remove typedef for call_foreach_file() handler function
  o correct udev_init_device
  o rename attributes to options
  o kill stupid gcc4 warning
  o trivial clenaup of namedev code
  o klibc: check for gcc4
  o klibc: update v0.205

Thierry Vignaud:
  o gentoo rule update for raid devices


Summary of changes from v053 to v054
============================================

<tklauser:access.unizh.ch>:
  o udev_volume_id: add Reiser4 support

Kay Sievers:
  o namedev: skip backslashes only if followed by newline
  o wait_for_sysfs: add joydev
  o udevinfo: print devpath -> node relationship for all devices
  o trivial rename of some variables
  o klibc v0.199
  o big libsysfs diet (pre 2.0 version)
  o udev_volume_id: volume_id v35
  o add "serio" to bus list
  o determine device type in udev_init_device()
  o move kernel name/number evaluation into udev_init_device()
  o detect NAME="" as ignore_device rule
  o trivial namedev cleanup
  o cleanup db functions
  o clean up match_place()
  o switch device type to enum
  o switch major/minor to dev_t
  o remove the device node only if the major/minor number matches
  o libsysfs: work around a klibc bug
  o introduce OPTIONS=ignore_device, ignore_remove, all_partitions" key
  o namedev: execute PROGRAM only once and not possibly for every physical device

Patrick Mansfield:
  o update scsi_id to work with libsysfs changes


Summary of changes from v052 to v053
============================================

Greg Kroah-Hartman:
  o fix gentoo fb permission issue
  o allow simple-build-check.sh to go faster if MAKEOPTS is set
  o make the release tarballs have writable files in them
  o remove gentoo permission file as it's not valid anymore

Kay Sievers:
  o fix special file mode mask for temporary device node
  o udevstart: simplify "dev" file searching
  o udev_volume_id: remove temporary node creation and parent handling
  o add %P modifier to query the node name of the parent device
  o udev_volume_id: remove __packed__ from dasd structure as it does not work
  o create /block/*/range count of partitons for all_partitions

Patrick Mansfield:
  o scsi_id changes for use with udev %N and %p


Summary of changes from v051 to v052
============================================

<md:linux.it>:
  o debian: update rules files
  o raid-devfs.sh: devfs names for hardware RAID controllers
  o scsi_id: when udevstart is started, /tmp is not writeable
  o cdsymlinks.sh: trivial fix, the variable is initialized to '', not 0

<sschweizer:gmail.com>:
  o gentoo/udev.rules: add default permissions for sound devices

Greg Kroah-Hartman:
  o fix example comment in ide-devfs.sh
  o Add infiniband to gentoo rules
  o Another gentoo fix, adding dvb support
  o Fix gentoo bug #76056 (fb device group permissions.)
  o Fix gentoo bug #81102, device nodes for the pktcdvd device

Kay Sievers:
  o provide temporary device node for callouts to access the device
  o udev_volume_id: fix dasd disklabel reading with -l option
  o udev_volume_id: volume_id version 034
  o udev_volume_id: rename probe_ibm into probe_dasd
  o udev_volume_id: volume_id version 032
  o Makefile: add some more warnings and prepare for clean gcc4 compile
  o Makefile: cleanup conditional config option sections
  o fix -Wsign-compare warnings
  o chassis_id: clean compilation and fix bad function parameter passing
  o simple_build_check: make it possible to pass KERNEL_DIR
  o selinux: cleanup udev integration

Michael Buesch:
  o trivial: remove _all_ trailing slashes with no_trailing_slash()
  o trivial: fix signedness
  o namdev: allow symlink-only rules to specify node permissions
  o udevd: fix valgrind warning


Summary of changes from v050 to v051
============================================

<roland:digitalvampire.org>:
  o This fixes a silly mistake in how udevinfo prints the major and minor numbers (right now it prints the minor next to "MAJOR" and the major next to "MINOR" ;)

<tklauser:access.unizh.chbk>:
  o I tried to compile udev 050plus with the GCC 4.0 snapshot 200412119 and got two errors about possibly uninitialized structs, so I fixed this. 

Christian Bornträger:
  o udev_volume_id: fix -d option

Greg Kroah-Hartman:
  o gentoo fb permission fix
  o fix gcc 2.96 issue in libsysfs
  o remove the lfs startup script on request of the author
  o clean up the aoe char device rules, and delete the block one as it's not needed
  o add aoe block and char device rules to the gentoo rule file
  o fix udev_volume_id build error

Hannes Reinecke:
  o rearrange link order in Makefile

Kay Sievers:
  o udev_volume_id: new version of volume_id
  o klibc: update to version 0.198
  o udev_volume_id: fix FAT label reading
  o klibc: update to version 0.196
  o udevd: throttle the forking of processes
  o udevd: add possible initialization of expected_seqnum
  o udevd: it's obviously not the brightest idea to exit a device node manager if it doesn't find /dev/null
  o udevd: separate socket handling to prepare for other event sources
  o udevd: support -d switch to become a daemon
  o udev_volume_id: version 27
  o udevd: split up message receiving an queueing
  o remove useless warning if udev.conf contains keys not read by udev itself
  o improve event sequence serialization
  o remove udevsend syslog noise on udevd startup
  o limit the initial timeout of the udevd event handling
  o correct detection of hotplug.d/ udevsend loop
  o correct log statement
  o remove default_* permissions from udev.conf file
  o update Fedora config files and add some more tests
  o allow permissions only rules
  o add SUBSYSTEM rule to catch all block devices and apply the disk permissions
  o update Fedora config files
  o handle renamed network interfaces properly if we manage hotplug.d/
  o allow multiline rules by backslash at the end of the line
  o add OnStream tape drive rules
  o simplify rules file by setting default mode to 0660
  o simplify permission application
  o I broke the extras/ again. Add simple build test script now
  o Merge vrfy.org:/home/kay/src/udev into vrfy.org:/home/kay/src/udev.kay
  o initial merge of fedora udev.permissions into udev.rules
  o remove permissions file mentioning from the udev man page
  o fix some typos in gentoo's udev.rules introduced by the merge

Michael Buesch:
  o The attached patch fixes the code path if namedev_name_device() fails

Summary of changes from v049 to v050
============================================

<harald:redhat.com>:
  o selinux patch

<tklauser:access.unizh.ch>:
  o I made some more changes to the manpage of udev including

Kay Sievers:
  o update libsysfs to CVS version and fix segfaulting attribute reading
  o klibc supports LOG_PID now, so remove our own implementation
  o avoid building klibc test programs and pass SUBDIRS= to klibc clean


Summary of changes from v048 to v049
============================================

Greg Kroah-Hartman:
  o fix 'make clean' error in klibc

Kay Sievers:
  o update klibc to 0.194
  o export DEVNAME regardless of the state of udev_dev_d
  o add class specific files for class/spi_transport and class/spi_host
  o udevd-test.pl: remove wrong date calculation
  o check earlier if we should run as udevstart
  o remove double initialization
  o include missing header to udevtest.c
  o add -V option to udev to print the version number
  o prevent udev node creatinon for "class" registration
  o udevd: serialization of the event sequence of a chain of devices
  o add a class/fc_host file to the list of what to wait for
  o udev_volume_id: links sysfs.a instead of all objects

Martin Schlemmer:
  o remove leftover from udevinfo's -d option


Summary of changes from v047 to v048
============================================

Greg Kroah-Hartman:
  o fix udev_volume_id so it will now build properly
  o fix scsi_id build errors due to changes in the main udev makefile


Summary of changes from v046 to v047
============================================

<klauser:access.unizh.ch>:
  o Various typos and other litte errors in udev.8.in

<sjoerd:spring.luon.net>:
  o DEVNAME on device removal

<sschweizer:gmail.com>:
  o Allow GROUP to have modifiers in it

Greg Kroah-Hartman:
  o add more debian rules files
  o move distro specific config files into their own directories
  o update debian rules files
  o added asterix rules to the gentoo file
  o use udevstart for udev.init.* files
  o delete a bunch of files no longer needed
  o fix gentoo scsi cdrom rule
  o Fix the multithreaded build again
  o merge
  o comment out ability to run udev-test.pl with valgrind
  o fix spurious valgrind warning in udev
  o fix udevinfo '-q path' option as it was not working
  o merge
  o fix parallel build error

Kay Sievers:
  o update Fedora dev.d/ example and remove unused conf.d/ directory
  o don't install distribution specific init script on "make install"
  o restore OWNER/GROUP assignment in rule coming from RESULT
  o make gcov compile scripts working with recent gcc
  o fix udev-test/udev-test.pl to work with again
  o add net/atml and class/ppdev to the wait_for_sysfs exception list
  o add net/nlv* devices to the exception list
  o add "pcmcia" and "fc_transport" to the wait_for_sysfs lists
  o remove unused timestamp field
  o simplify permission handling
  o handle /etc/hotplug.d/ only if the event comes from udevd
  o trivial cleanups and change some comments
  o remove unused variables
  o udevsend/udevd handle events without a subsystem
  o use blacklist on device "remove" and remove dev.d/ call code duplication
  o update the man pages and correct Usage: hints
  o don't call the hotplug scripts with a test run
  o don't call dev.d/ scripts twice, if directory = subsystem
  o remove archive file if we changed something
  o link archive insted of objects
  o rename udev_lib to udev_utils and dev_d to udev_multiplex
  o handle whole hotplug event with udevd/udev
  o integrate wait_for_sysfs in udev
  o make the searched multiplex directories conditionally
  o add MANAGED_EVENT to the forked udev environment
  o export DEVNAME on remove event
  o export udev_log flag to the environment
  o remove my test code
  o add support for /devices-devices without any file to wait for
  o Patch from Alex Riesen <raa.lkml@gmail.com>
  o add a bunch of busses to the list of what to wait for
  o close connection to syslog in forked udevd child
  o udevd exit path cleanup
  o fix network device naming bug


Summary of changes from v045 to v046
============================================

Greg Kroah-Hartman:
  o make spotless for releases

Kay Sievers:
  o Don't try to print major/minor for devices without a dev file
  o remove get_device_type and merge that into udev_set_values()
  o prevent udevd crash if DEVPATH is not set
  o add ippp and bcrypt to the exception lists of wait_for_sysfs
  o let klibc add the trailing newline to syslog conditionally
  o disable logging for udevstart
  o add NAME{ignore_remove} attribute
  o remove historical SYSFS_attr="value" format
  o don't wait for sysfs if the kernel(2.6.10-rc2) tells us what not to expect
  o change key names in udevinfo sysfs walk to match the kernel
  o support DRIVER as a rule key
  o support SUBSYSTEM as a rule key
  o rename udevdb* to udev_db*
  o Make dev.d/ handling a separate processing stage
  o make the udev object available to more processing stages
  o remove udev_lib dependency from udevsend, which makes it smaller
  o add ACTION to udev object to expose it to the whole process
  o make udevinfo's -r option also workimg for symlink queries
  o let udev act as udevstart if argv[1] == "udevstart"
  o improve udevinfo sysfs info walk
  o add sysfs info walk to udevinfo
  o pass the whole event environment to udevd
  o replace tdb database by simple lockless file database


Summary of changes from v044 to v045
============================================

Martin Schlemmer:
  o Some updates for Gentoo's udev rules


Summary of changes from v043 to v044
============================================

Greg Kroah-Hartman:
  o add cdsymlinks.sh support to gentoo rules file
  o fix gentoo legacy tty rule
  o remove 'sudo' usage from the Makefile
  o make udev-test.pl test for root permissions before running

Kay Sievers:
  o reduce syslog noise of udevsend if multiple instances try to start udevd
  o add i2c-dev to the list of devices without a bus


Summary of changes from v042 to v043
============================================

Greg Kroah-Hartman:
  o add test target to makefile
  o add dumb script to show all sysfs devices in the system

Kay Sievers:
  o Shut up wait_for_sysfs class/net failure messages, as it's not possible to
    get that right for all net devices. Kernels later than 2.6.10-rc1 will
    handle that by carrying the neccessary information in the hotplug event.  
  o wait() for specific pid to return from fork()
  o Don't use any syslog() in signal handler, cause it may deadlock
  o Add support for highpoint ataraid to volume_id to suppress label reading on raid set members.
  o Add a bunch of devices without "device" symlinks
  o Exit, if udevtest cannot open the device (segfault)
  o Patches from Harald Hoyer <harald@redhat.com>
  o Apply the default permissions even if we found a entry in the permissions
    file. Correct one test, as the default is applied correctly now and the
    mode will no longer be 0000.
  o add test for format chars in multiple symlinks to replace
  o Add net/vmnet and class/zaptel to the list of devices without physical device


Summary of changes from v040 to v042
============================================

Greg Kroah-Hartman:
  o add inotify to the rules for gentoo

Kay Sievers:
  o skip waiting for device if we get a bad event for class creation and not for a device underneath it
  o add net/pan and net/bnep handling
  o switch wait for bus_file to stat() instead of open() add net/tun device handling add ieee1394 device handling
  o Remove the last klibc specific line from the main udev code Move _KLIBC_HAS_ARCH_SIG_ATOMIC_T to the fixup file which is automatically included by the Makefile is we build with klibc
  o ignore *.rej files from failed patches
  o update to libsysfs 1.2.0 and add some stuff klib_fixup Now we have only the sysfs.h file different from the upstream version to map our dbg() macro.
  o improve klibc fixup integration
  o cleanup udevd/udevstart
  o expose sysfs functions for sharing it


Summary of changes from v039 to v040
============================================

<jk:blackdown.de>:
  o wait_for_sysfs update for dm devices

Greg Kroah-Hartman:
  o sparse cleanups on the tree
  o fix stupid cut-and-paste error for msr devices on gentoo boxes
  o add *~ to bk ignore list
  o delete udevruler.c as per Kay's request
  o fix up the wait_for_sysfs_test script a bit

Kay Sievers:
  o fix debug in volume id / fix clashing global var name
  o volume_id fix
  o $local user
  o cleanup netif handling and netif-dev.d/ events
  o big cleanup of internal udev api
  o don't wait for dummy devices
  o close the syslog
  o Fix ppp net devices in wait_for_sysfs
  o Fix wait_for_sysfs messages (more debugging info)


Summary of changes from v038 to v039
============================================

Greg Kroah-Hartman:
  o Hopefully fix the vcs issue in wait_for_sysfs
  o take out & from wait_for_sysfs_test that I previously missed
  o add very nice cdsymlinks scripts
  o add some helper scripts for dvb and input devices
  o add debian config files
  o let the extras/ programs build "pretty" also
  o tweak the ccdv program to handle files in subdirectories being built
  o crap, I messed up the 'sed' instances pretty badly, this fixes the config and man page mess
  o fix broken 'make -j5' functionality

Kay Sievers:
  o swich attribute open() to simple stat()
  o wait_for_sysfs update for /class/firmware and /class/net/irda devices
  o fix unusual sysfs behavior for pcmcia_socket
  o remove sleeps from udev as it is external now
  o delete udevruler?
  o Makefile fix

Patrick Mansfield:
  o update udev to scsi_id 0.7
  o pass SYSFS setting down for extras builds
  o move assignments past local variables


Summary of changes from v037 to v038
============================================

<andrew.patterson:hp.com>:
  o Re: Problem parsing %s in udev rules

Greg Kroah-Hartman:
  o fix up error in building extras and libsysfs

Summary of changes from v036 to v037
============================================

<md:linux.it>:
  o small udev patch

Greg Kroah-Hartman:
  o fix compilation warning in tdb log message
  o Fix build error with klibc due to recent changes
  o merge
  o add wait_for_sysfs test script to the tarball to help people debug their boxes
  o add ipsec to wait_for_sysfs ignore list
  o added ccdv to bk ignore list
  o a few more Makefile tweaks for the quiet feature
  o Make the build silent, thanks to a helper program from ncftp
  o rename files to have '_' instead of '-' in them
  o change max time to wait in wait_for_sysfs to 10 seconds to hopefully handle some slow machines
  o add support for class/raw/ to wait_for_sysfs
  o fix up Makefile for wait_for_sysfs udev_version.h dependancy
  o remove the debian specific file, as they don't want to share with the rest of the world :(

Kay Sievers:
  o prevent deadlocks on an corrupt udev database
  o wait_for_sysfs_update

Michael Buesch:
  o fix asmlinkage
  o fix incompatible pointer type warning


Summary of changes from v035 to v036
============================================

Greg Kroah-Hartman:
  o add the error number to the error message in wait_for_sysfs to help out in debugging problems

Summary of changes from v034 to v035
============================================

Greg Kroah-Hartman:
  o added ieee1394 support to wait_for_sysfs
  o update wait_for_sysfs with a bunch more devices thanks to user reports

Summary of changes from v033 to v034
============================================

Kay Sievers:
  o wait_for_sysfs bluetooth class update

Greg Kroah-Hartman:
  o add comment in wait_for_sysfs to explain the structure better
  o Revert previous dev_d.c change, it's not what is causing HAL problems
  o hm, somethings odd with DEVPATH, see if this fixes it
  o 33_bk mark for the makefile
  o wait_for_sysfs: clean up the logic for the list of devices that we do not expect device symlinks for
  o get rid of annoying extra lines in the syslog for some libsysfs debug messages
  o added support for i2c devices in wait_for_sysfs.c
  o add support for i2c-adapter devices to wait_for_sysfs.c

Summary of changes from v032 to v033
============================================

<harald:redhat.com>:
  o udev close on exec
  o some cleanups and security fixes
  o some cleanups and security fixes
  o selinux for udev
  o cleanup PATCH for extras/chassis_id/Makefile

<kpfleming:backtobasicsmgmt.com>:
  o respect prefix= setting in built udev.conf (updated)

Greg Kroah-Hartman:
  o add support for usb interfaces to wait_for_sysfs to keep it quiet
  o enable native tdb spinlocks on i386 platforms
  o delete extras/multipath-tools as per the author's request
  o be paranoid in dev_d.c
  o add USE_SELINUX to README documentation so people have a chance to see what is going on
  o update the selinux.h file to start to look sane
  o update bk ignore list for the wait_for_sysfs binary
  o kdetv wants to see device nodes in /dev
  o update comments in scsi-devfs.sh
  o fix up Makefiles to get the klibc build working properly
  o update bk ignore list for new klibc generated files
  o oops forgot to add the new klibc/include directory
  o update klibc to version 0.181

Kay Sievers:
  o fix problems with dev.d and udevstart
  o wait_for_sysfs debug cleanup
  o fix problems using scsi_id with udevstart
  o update volume_id
  o finally solve the bad sysfs-timing for all of us
  o volume-id build fix and update
  o switch udev's seqnum to u64
  o add enum tests
  o fix udev segfaults with bad permissions file

Patrick Mansfield:
  o update udev to include scsi_id 0.6


Summary of changes from v031 to v032
============================================

<harald:redhat.com>:
  o udev parse bug

Kay Sievers:
  o handle only block and class devices
  o fix udevstart badly broken in udev 031


Summary of changes from v030 to v031
============================================

<arun:codemovers.org>:
  o udev - read long lines from config files overflow fix

<ballarin.marc:gmx.de>:
  o Update the FAQ with info about hardlink security

<david:fubar.dk>:
  o compatibility symlinks for udev

David Weinehall:
  o Minor POSIX-fixes for udev

Greg Kroah-Hartman:
  o add symlink for video rule
  o add a "first" list to udevstart and make it contain the class/mem/ devices
  o fix compiler warning in udevtest.c
  o Fix old-style pty breakage in rules file for tty device
  o add rules for i386 cpu devices
  o add permission for legotower usb devices

Kay Sievers:
  o Fix naming ethernet devices in udevstart
  o update udev_volume_id
  o let /sbin/hotplug execute udev earlier
  o pass SEQNUM trough udevd
  o fix manpages based on esr's spambot

Martin Schlemmer:
  o add microcode rule to permissions.gentoo file

Michael Buesch:
  o Try to provide a bit of security for hardlinks to /dev entries

Olaf Hering:
  o udevsend depends on udev_lib.o

Tom Rini:
  o fix UDEV_NO_SLEEP
  o clean up start_udev a bit
  o Make udev/udevstart be one binary
  o Add 'asmlinkage' to udev-030


Summary of changes from v029 to v030
============================================

Greg Kroah-Hartman:
  o fix stupid off-by-one bug that caused udevstart to die on x86-64 boxes


Summary of changes from v028 to v029
============================================

Greg Kroah-Hartman:
  o add permission rule for jogdial device
  o fix dumb bug I added to udevstart
  o make a "last list" of devices for udevstart to operate on last
  o fix permission problem with input event and ts nodes for gentoo
  o change default perms of misc/rtc to be readable by anyone

Olaf Hering:
  o allow NAME_SIZE > SYSFS_PATH_MAX


Summary of changes from v027 to v028
============================================

<atul.sabharwal:intel.com>:
  o Patch for chassis_id exras module

Daniel Drake:
  o Writing udev rules doc update

Greg Kroah-Hartman:
  o clean up block whitelist search logic a bit
  o reverse order of scanning of udevstart to look at class before block

Kay Sievers:
  o update udev_volume_id

Leann Ogasawara:
  o udevstart performance increase

Patrick Mansfield:
  o update udev scsi_id to scsi_id 0.5


Summary of changes from v026 to v027
============================================

<fork0:users.sf.net>:
  o fix handle leak in udev_lib.c

Greg Kroah-Hartman:
  o tweak the gentoo default permission rules as they are wrong for tty and misc devices


Summary of changes from v025 to v026
============================================

Arnd Bergmann:
  o udev rpm fix

Greg Kroah-Hartman:
  o add test for ! in partition name
  o 025_bk mark
  o Update to version 117 of klibc (from version 108)
  o add volume_id ignore rule for bk
  o add volume_id support to the udev.spec file
  o remove dbus and selinux stuff from the udev.spec file
  o delete udev_selinux as it doesn't work properly and is the wrong way to do it
  o Deleted the udev_dbus extra as it didn't really work properly and HAL has a real solution now
  o add udev.permissions.slackware file
  o udevstart: close open directories

Kay Sievers:
  o fix udevd zombies
  o catchup with recent klibc
  o Re: udevsend fallback
  o udev_volume_id update
  o udev callout for reading filesystem labels
  o udev callout for reading filesystem labels
  o udev default config layout changes

Leann Ogasawara:
  o evaluate getenv() return value for udev_config.c

Summary of changes from v024 to v025
============================================

<md:linux.it>:
  o devfs.sh-ide-floppy

<sjoerd:spring.luon.net>:
  o DEVNODE -> DEVNAME transition fixes

Daniel Drake:
  o Update writing udev rules docs

Greg Kroah-Hartman:
  o make dev.d call each directory in the directory chain of the device name, instead of just the whole name
  o add devd_test script
  o add more permissions based on SuSE's recommendations
  o added rules for tun and raw devices
  o add udev conf.d file
  o Switch the default config to point to a directory for the rules and permission files
  o update the Red Hat .dev files to work on other distros
  o add dbus.dev, pam_console.dev and selinux.dev files for /etc/dev.d/default/ usage
  o add hints for red hat users from Leann Ogasawara <ogasawara@osdl.org>
  o add scripts to run gcov for udev from Leann Ogasawara <ogasawara@osdl.org>
  o change permissions on udevd test scripts
  o Fix build process for users who have LC_ALL set to a non-english language
  o Added expanded tests to the test framework from Leann Ogasawara <ogasawara@osdl.org>
  o added execelent "writing udev rules" document from Daniel Drake <dan@reactivated.net>
  o added rule to put USB printers in their proper places
  o added rules for CAPI devices
  o added a dev.d alsa script to help people out

Kay Sievers:
  o fix test regressions
  o udev_selinux changes
  o udevd test script
  o udev_dbus changes
  o fix devpath for netdev

Leann Ogasawara:
  o gcov for udev


Summary of changes from v023 to v024
============================================

<atul.sabharwal:intel.com>:
  o Add README for chassis_id
  o Add chassis_id program to extras directory

<chris_friesen:sympatico.ca>:
  o udevd race conditions and performance,  assorted cleanups

<hare:suse.de>:
  o fix SEGV in libsysfs/dlist.c

<maryedie:osdl.org>:
  o add OSDL documentation for persistent naming

<md:linux.it>:
  o small ide-devfs.sh fix

Greg Kroah-Hartman:
  o remove compiler warning from udevd.c
  o only generate udev.8 on the fly, not all other man pages
  o update bk ignore list some more
  o update bk ignore list
  o switch to generate the man pages during the normal build, not during the install
  o convert udev.8.in to use @udevdir@ macro for make install
  o first step of making man pages dynamically generated
  o add install and uninstall the etc/dev.d/net/hotplug.dev file to the Makefile
  o tweak net_test a bit
  o fix some segfaults when running udevtest for network devices
  o make a net_test test script using udevtest
  o handle the subsytem if provided in udevtest
  o add hotplug.dev script to handle renamed network devices
  o add a bunch of network class devices to the test sysfs tree
  o add udevruler to the bk ignore list
  o update RFC-dev.d docs due to DEVNODE to DEVNAME change
  o clean up chassis_id coding style
  o clean up the OSDL document formatting a bit
  o add netlink rules to devfs and gentoo rules files
  o added USB device rules to rules files
  o clean up the gentoo rules file a bit more, adding dri rules
  o fix up udev.rules to handle oss rules better
  o 023_bk mark
  o fix udev.spec file for where udevtest should be placed

Kay Sievers:
  o tweak node unlink handling
  o switch udevd's msg_dump() to #define
  o handle netdev in udevruler
  o man page cleanup
  o put config info in db for netdev
  o increase udevd event timeout
  o udevstart fix
  o put netdev handling and dev.d/ in manpages
  o DEVPATH for netdev
  o netdev - udevdb+dev.d changes
  o udevd race conditions and performance,  assorted cleanups - take 2
  o udevinfo patch
  o dev_d.c file sorting and cleanup
  o apply all_partitions rule to main block device only


Summary of changes from v022 to v023
============================================

Kay Sievers:
  o hmm, handle net devices with udev?
  o correct apply_format() for symlink only rules
  o don't init namedev on remove
  o first stupid try for a rule compose gui
  o replace fgets() with mmap() and introduce udev_lib.[hc]
  o make udevtest a real program :)

Daniel E. F. Stekloff:
  o udevinfo patch

Greg Kroah-Hartman:
  o create the /etc/dev.d/ directories in 'make install'
  o actually have udev run files ending in .dev in the /etc/dev.d/ directory as documented
  o added RFC-dev.d document detailing how /etc/dev.d/ works
  o fixed up udev.spec to handle selinux stuff properly now
  o remove USE_DBUS and USE_SELINUX flags from the README as they are no longer present
  o remove selinux stuff from the main Makefile
  o move udev_selinux into extras/selinux
  o fix dbus build in the udev.spec file
  o remove dbus stuff from main Makefile
  o move udev_dbus to extras/dbus
  o udev_dbus can now compile properly, but linnking is another story
  o remove udev_dbus.h from Makefile
  o first cut at standalone udev_selinux program
  o remove selinux support from udev core as it's no longer needed
  o first cut at standalone udev_dbus program
  o add get_devnode() helper to udev_lib for udev_dbus program
  o remove dbus code from core udev code as it's no longer needed to be there
  o add /etc/dev.d/ support for udev add and remove events
  o fix build error in namedev.c caused by previous patch
  o 022_bk tag
  o fix 'make spotless' to really do that in klibc
  o add a question/answer about automounting usb devices to the FAQ
  o mark scsi-devfs.sh as executable
  o Increase the name size as requested by Richard Gooch <rgooch@ras.ucalgary.ca>
  o fix udevtest to build properly after the big udev_lib change

Olaf Hering:
  o uninitialized variable for mknod and friend

Richard Gooch:
  o SCSI logical and physical names for udev

Theodore Y. T'so:
  o Trivial man page typo fixes to udev


Summary of changes from v021 to v022
============================================

<ananth:in.ibm.com>:
  o more Libsysfs updates
  o Libsysfs updates

<async:cc.gatech.edu>:
  o fix HOWTO-udev_for_dev for udevdir

Kay Sievers:
  o udev-test.pl cleanup
  o add dev node test to udev-test.pl
  o add permission tests
  o "symlink only" test
  o callout part selector tweak
  o cleanup callout fork
  o allow to specify node permissions in the rule
  o man page beauty
  o put symlink only rules to the man page
  o rename strn*() macros to strmax
  o conditional remove of trailing sysfs whitespace
  o clarify udevinfo text
  o better fix for NAME="foo-%c{N}" gets a truncated name
  o overall trivial trivial cleanup
  o fix NAME="foo-%c{N}" gets a truncated name
  o cleanup mult field string handling

<ken:cgi101.com>:
  o fix a type in docs/libsysfs.txt
  o Added line to udev.permissions.redhat
  o Include more examples in the docs area for gentoo and redhat

<md:linux.it>:
  o udevstart fixes

Greg Kroah-Hartman:
  o add big major tests to udev-test.pl
  o add a test for a minor over 255
  o udev-test.pl: print out major:minor and perm test "ok" if is ok
  o make perm and major:minor test errors be reported properly
  o remove extra ; in namedev_parse.c
  o Added multipath-tools 0.1.1 release
  o deleted current extras/multipath directory
  o 021_bk mark
  o fix the build for older versions of gcc

Hanna V. Linder:
  o Small fix to remove extra "will" in man page

Olaf Hering:
  o make spotless
  o udev* segfaults with new klibc

Patrick Mansfield:
  o add tests for NAME="foo-%c{N}"

Summary of changes from v020 to v021
============================================

Kay Sievers:
  o install udevinfo in /usr/bin
  o blacklist pcmcia_socket

Greg Kroah-Hartman:
  o fix udev.spec to find udevinfo now that it has moved to /usr/bin
  o Fix another problem with Makefile installing initscript
  o fix the Makefile to install the init script into the proper directory
  o make spec file turn off selinux support by default


Summary of changes from v019 to v020
============================================

<christophe.varoqui:free.fr>:
  o multipath update

Kay Sievers:
  o man page udevstart
  o cleanup udevstart
  o bugfix for local user
  o unlink bugfix
  o TODO update
  o clarify udevinfo device walk
  o udevinfo symlink reverse query
  o fix stroul endptr use
  o add $local user spport for permissions
  o udev - man page update
  o udev - fix debug info for multiple rule file config
  o udev - kill udevd on install
  o udev - activate formt length attribute
  o udev - safer sprintf() use

<md:linux.it>:
  o no error on enoent
  o escape dashes in man pages
  o remove usage of expr in ide-devfs.sh

<rml:ximian.com>:
  o automatically install correct initscript
  o update documetation for $local

Andrey Borzenkov:
  o Add symlink only rules support

Greg Kroah-Hartman:
  o update the TODO list as we already have a devfs config file
  o make start_udev use udevstart binary
  o install udevstart
  o Remove Debian permission files as the Debian maintainer doesn't seem to want to share :(
  o update the Gentoo rules files
  o Add Red Hat rules and permissions files
  o add udevstart to the ignore list
  o add udevstart program based on a old patch from Harald Hoyer <harald@redhat.com>
  o unlink the file before we try to create it
  o Merge greg@bucket:/home/greg/src/udev into kroah.com:/home/greg/src/udev


Summary of changes from v018 to v019
============================================

Kay Sievers:
  o TODO update
  o udev - correct relative symlink
  o udev - safer string handling - part four
  o udev - safer string handling - part three
  o udev - safer string handling - part two
  o udev - man page update
  o udev - safer string handling all over the place
  o manpage update
  o udev - allow all files in a directory as the config
  o udev - simple klibc textual uid/gid handling

Andrey Borzenkov:
  o do not remove real .udev.tdb during RPM build

Greg Kroah-Hartman:
  o add new TODO item about local user permissions
  o Add initial SELinux support for udev
  o fix build for very old versions of make
  o remove limit of the number of args passed to PROGRAM
  o force udev to include the internal version of libsysfs and never the external one
  o fix up libsysfs header file usage to fix bug reports from users that have sysfsutils installed already
  o remove udevtest on 'make clean'
  o remove udevd priority TODO item, as it's not needed at all

Patrick Mansfield:
  o update udev scsi_id to scsi_id 0.4


Summary of changes from v017 to v018
============================================

<ext.devoteam.varoqui:sncf.fr>:
  o [PATCH] symlink dm-[0-9]* rule
  o update extras/multipath

<john-hotplug:fjellstad.org>:
  o init.d debian patch

Kay Sievers:
  o udev - TODO update
  o udev - add %s{filename} to man page
  o udev - udevd/udevsend man page
  o udev - switch callout part selector to {attribute}
  o udev - switch SYSFS_file to SYSFS{file}
  o udev - create all partitions of blockdevice
  o allow SYSFS{file}
  o Adding '%s' format specifier to NAME and SYMLINK

Greg Kroah-Hartman:
  o added some scsi_id files to the bk ignore file
  o added scsi_id and some more documentation to the udev.spec file
  o update udev.rules.gentoo with new config file format
  o Update the Gentoo udev.rules and udev.permissions files
  o Create a udev.rules.examples file to hold odd udev.rules
  o add udevd priority issue to the TODO list
  o more HOWTO cleanups
  o add HOWTO detailing how to use udev to manage /dev
  o mv libsysfs/libsysfs.h to libsysfs/sysfs/libsysfs.h to make it easier to use
  o add start_udev init script
  o add support for UDEV_NO_SLEEP env variable so Gentoo people will be happy
  o start up udevd ourselves in the init script to give it some good priorities
  o update the red hat init script to handle nodes that are not present
  o add a "old style" SYSFS_attribute test to udev-test.pl
  o Have udevsend report more info in debug mode
  o Have udevd report it's version in debug mode
  o fix up bug created for udevtest in previous partition creation patch
  o update the udev.spec to add udevtest and make some more Red Hat suggested changes
  o add ability to install udevtest to Makefile
  o 017_bk mark
  o Add another test to udev-test.pl and fix a bug when only running 1 test
  o Fix bug where we did not use the "converted" kernel name if we had no rule

Patrick Mansfield:
  o udev use new libsysfs header file location
  o udev add some ID tests


Summary of changes from v016 to v017
============================================

<azarah:nosferatu.za.org>:
  o make logging a config option

<christophe.varoqui:free.fr>:
  o more udev-016/extras/multipath
  o more udev-016/extras/multipath
  o update extras/multipath

Kay Sievers:
  o udev - keep private data out of the database?
  o better credential patch
  o udevd - client access authorization
  o compile udevd with klibc
  o udev - fix "ignore method"
  o udev - fix cdrom symlink rule
  o convert udevsend/udevd to DGRAM and single-threaded
  o udevd - kill the lockfile
  o udevd - fix socket path length
  o udevd - switch socket path to abstract namespace
  o udevd - allow to bypass sequence number
  o include used function

Greg Kroah-Hartman:
  o add udev_log to the documentation
  o fix offsetof() define in klibc
  o add some .spec file changes from Red Hat
  o update the init.d udev script based on a patch from Red Hat
  o remove the .udev.tdb when installing or uninstalling to be safe
  o remove the database at startup
  o fix bug in permission handling
  o update klibc to version .107
  o update the bitkeeper ignore file list
  o add udevtest program to build
  o fix problem where usb devices can be either the main device or the interface
  o more logging.h cleanups to be a bit more flexible
  o stop using mode_t as different libcs define it in different ways :(
  o remove some more KLIBC fixups that are no longer needed
  o let udev-test.pl run an individual test if you ask it to
  o Handle the '!' character that some block devices have
  o add a block device with a ! in the name, and a test for this
  o fix up 'make release' to use bk to build the export tree
  o fix log option code so that it actually works for all udev programs
  o finish syncing up with klibc
  o sync with latest version of klibc (0.107)
  o fix up Makefile dependancies for udev_version.h

Patrick Mansfield:
  o udev add wild card compare for ID
  o udev kill extra bus_id compares in match_id


Summary of changes from v015 to v016
============================================

<elkropac:students.zcu.cz>:
  o get_dev_number() in extras/ide-devfs.sh

<rrm3:rrm3.org>:
  o FAQ udev.rules.devfs

Greg Kroah-Hartman:
  o add udevd and udevsend to the spec file
  o make /etc/hotplug.d/default/udev.hotplug symlink point to udevsend now
  o add KERNEL_DIR option so that the distros will be happy
  o make udevsend binary even smaller
  o udevsend now almost compiles with klibc, struct sockaddr_un is only problem now
  o fix up logging code so that it can be built without it being enabled
  o rework the logging code so that each program logs with the proper name in the syslog
  o remove logging.c as it's no longer needed
  o kill the last examples that contained the %D option
  o remove a __KLIBC__ tests in libsysfs, as klibc now supports getpagesize()
  o udevd - remove stupid locking error I wrote
  o update to klibc version 0.101, fixing the stdin bug
  o fix Makefile typo for USE_LSB install
  o allow dbus code to actually build again

Kay Sievers:
  o let udevsend build with klibc
  o udevd - config cleanup
  o udevd - cleanup and better timeout handling
  o fix possible buffer overflow
  o udevd - next round of fixes
  o udevinfo - missing options for man page
  o udev - trivial style cleanup


Summary of changes from v014 to v015
============================================

<mbuesch:freenet.de>:
  o LFS init script update

Greg Kroah-Hartman:
  o update klibc to version 0.98
  o clean up udevinfo on 'make clean'
  o add udevinfo man page to spec file
  o remove command line documentation from udev man page
  o create initial version of udevinfo man page
  o added URL to spec file
  o add udevinfo to udev.spec file
  o add udevinfo to install target of Makefile
  o rip out command line code from udev, now that we have udevinfo
  o udevinfo doesn't need to declare main_envp
  o move get_pair to udev_config.c because udevinfo doesn't need all of namedev.o
  o more makefile cleanups
  o move udevinfo into the main build and clean up the main Makefile a bit
  o clean up compiler warnings if building using klibc
  o make udevd only have one instance running at a time
  o new testd.block script for debugging
  o udevsnd : clean up message creation logic a bit
  o make bk ignore udevd and udevsend binaries
  o whitespace cleanups
  o remove TODO item about BUS value, as it is now done
  o add support for figuring out which device on the sysfs "chain" the rule applies to

Kay Sievers:
  o udevinfo - now a real program :)
  o udevd - cleanup and better timeout handling
  o udev - next round of udev event order daemon
  o fix udevd exec
  o udev - udevinfo with device chain walk
  o spilt udev into pieces


Summary of changes from v013 to v014
============================================

<ananthmg:rediffmail.com>:
  o libsysfs update for refresh + namedev.c changes

<christophe.varoqui:free.fr>:
  o udev-013/extras/multipath update

<flamingice:sourmilk.net>:
  o minor patch for devfs rules

Kay Sievers:
  o udev - program to query all device attributes to build a rule
  o set default owner/group in db - update
  o udev - reverse user query options
  o udev - kill %D from udev-test.pl
  o add udev logging to info log
  o udev - mention format string escape char in man page

Greg Kroah-Hartman:
  o misc code cleanups
  o fixup logging.h to handle different logging options properly
  o clean up the logging patch a bit to make the option more like the other options
  o remove the %D modifier as it is not longer needed
  o remove unneeded keyboard rule
  o add usb_host and pci_bus to the class blacklist
  o added input device rules to udev.rules and udev.rules.devfs
  o 013_bk mark

Hanna V. Linder:
  o set default owner/group in db
  o small cut n paste error fix

Patrick Mansfield:
  o update udev scsi_id to scsi_id 0.3


Summary of changes from v012 to v013
============================================

<eike-hotplug:sf-tec.de>:
  o LSB init script and other stuff

<elkropac:students.zcu.cz>:
  o fix udev directory for Debian init script

<tiggi:infa.abo.fi>:
  o udev 012 old gcc fixup

Christophe Saout:
  o add IGNORE rule type
  o small cleanup

Greg Kroah-Hartman:
  o update TODO with some new, small items
  o Cset exclude: greg@kroah.com|ChangeSet|20040113010256|48515
  o update the README in a few places
  o fix -d typo in the manpage update
  o Fix stupid gcc "optimization" of 1 character printk() calls.... Ick
  o oops, forgot to fix up the PROGRAM result from ID to RESULT in the config files
  o Add alsa device rules and a few other devfs rules
  o fix a few stale comments in namedev.c
  o convert the default rules files to the new format
  o convert the test shell scripts to the config file format
  o add bus test for usb-serial bus
  o Add some helpful messages if the user uses the older config file format
  o added dri rule to the default config file
  o added init.d udev script for debian
  o add a script that tests the IGNORE rule
  o add silly script that names cdrom drives based on the cd in them
  o add cdrom rule for ide cdrom
  o replace list_for_each with list_for_each_entry, saving a few lines of code
  o add a blacklist of class devices we do not want to look at

Kay Sievers:
  o fix klibc with printf() and gcc
  o udev - small script optimization
  o udev - introduce format escape char
  o udev - more CALLOUT is PROGRAM now
  o udev - CALLOUT is PROGRAM now
  o update documentation for new config file format
  o more advanced user query options
  o udev - simple debug tweak
  o udev - drop all methods :)
  o udev - advanced user query options
  o udev - Makefile error
  o udev - make exec_callout() reusable
  o udev - exec status fix for klibc
  o fix Silly udev script


Summary of changes from v011 to v012
============================================

<azarah:nosferatu.za.org>:
  o make symlink work properly if there is already a file in its place
  o Fix udev gcc-2.95.4 compat

<christophe.varoqui:free.fr>:
  o extras multipath update
  o extras multipath update

Kay Sievers:
  o mention user callable udev + options in man page
  o make udev user callable to query the database
  o depend on all .h files
  o cleanup namedev_parse debug text
  o extend exec_program[]
  o ide-devfs.sh update
  o fix for apply_format()
  o check for empty symlink string
  o 'ide' missing in bus_files[]
  o small trivial cleanup of latest changes

<mbuesch:freenet.de>:
  o introduce signal handler

<rml:ximian.com>:
  o udev spec file update

Greg Kroah-Hartman:
  o minor grammer fixes for the udev_vs_devfs document
  o move the dbus config file to etc/dbus-1/system.d/
  o move the config files to etc/udev to clean up main directory a bit
  o add Gentoo versions of the rules and permissions files
  o if using glibc, link dynamically, as no one like 500Kb udev binaries
  o minor change to udev_vs_devfs document
  o added udev vs devfs supid document to the tree
  o move the signal handling registration to after we have initialized enough stuff
  o make ide-devfs.sh executable in the tree
  o udev.permissions.debian - forgot the dm nodes
  o update the udev.permissions.debian file with new entries
  o added udev.init script for the Linux From Scratch project



Summary of changes from v010 to v011
============================================

<mbuesch:freenet.de>:
  o proper cleanup on udevdb_init() failure

<mh:nadir.org>:
  o patch udev 009-010 rpm spec file

<svetljo:gmx.de>:
  o fix udev sed Makefile usage

Greg Kroah-Hartman:
  o add documentation about the BUS key being optional for the LABEL rule
  o add tests for LABEL rule with a device that has no bus
  o Don't require the BUS value for the LABEL rule
  o If a LABEL rule has a BUS id, then we must check to see if the device is on a bus
  o add documentation about the BUS key being optional for the CALLOUT rule
  o If a CALLOUT rule has a BUS id, then we must check to see if the device is on a bus
  o Don't require the BUS value for the CALLOUT rule
  o add test for callout rule with a device that has no bus
  o 010_bk stamp
  o added different build options to the rpm udev.spec file
  o add pci to the bus_files list
  o check for empty line a bit better in the parser
  o more init script cleanups, the stop target now calls udev to cleanup instead of just removing the whole /udev directory
  o make udev init script run udev in the background to let startup go much faster
  o fix long delay for all devices in namedev


Summary of changes from v009 to v010
============================================

<ananth:in.ibm.com>:
  o change pgsize

<christophe.varoqui:free.fr>:
  o extras multipath update
  o extras multipath update
  o extras multipath update
  o extras multipath update

Kay Sievers:
  o fix udev-test.pl
  o small cleanup udev-remove.c
  o experimental CALLOUT script for devfs ide node creation with cd, disc, part
  o add any valid device
  o introduce format char 'k' for kernel-name
  o trivial make fixes
  o don't overwrite old config on install
  o udev-remove.c cleanups
  o bug in udev-remove.c
  o trivial cleanup parser changes

<roman.kagan:itep.ru>:
  o fix comment and whitespace handling in config files

Adam Kropelin:
  o Allow build with empty EXTRAS

Daniel E. F. Stekloff:
  o libsysfs 0.4.0 patch
  o fix scsi_id segfault with udev-009
  o add libsysfs docs

David T. Hollis:
  o mark config files as such in the rpm spec file

Greg Kroah-Hartman:
  o fix complier warning in namedev.c
  o add documentation for the new '%k' modifier (kernel name replacement)
  o add documentation about the multiple sysfs values that are now allowed for the LABEL rule
  o add tests for multi-file LABEL rules
  o add ability to have up to 5 SYSFS_ file/value pairs for the LABEL rule
  o Just live with a sleep(1) in namedev for now until libsysfs is fixed up
  o try to wait until the proper device file shows up in sysfs
  o remove unneeded TODO and FIXME entry
  o clean up the stand-alone tests to work properly on other people's machines
  o add tests to catch whitespace and comment config file parsing errors


Summary of changes from v008 to v009
============================================

<christophe.varoqui:free.fr>:
  o more extras/multipath changes
  o and more extras/multipath updates
  o more extras/multipath updates
  o yet more extras/multipath
  o more extras/multipath updates
  o extras/multipath update

<david:fubar.dk>:
  o D-BUS patch for udev-008

<eike-hotplug:sf-tec.de>:
  o add init.d/udev to "make install"
  o add init.d/udev to the spec file

Kay Sievers:
  o don't rely on field order in namedev_parse
  o get part of callout return string
  o remove '\n' from end of callout return
  o man-page mention multiple symlinks
  o allow multiple symlinks
  o cleanup man & remove symlink comment
  o experimental (very simple) SYMLINK creation
  o man page beauty
  o pattern match for label method
  o a bug in linefeed removal

<rml:ximian.com>:
  o remove udev from runlevels on uninstall
  o install initscript in udev rpm

Daniel E. F. Stekloff:
  o pre-libsysfs-0.4.0 patch

Greg Kroah-Hartman:
  o signal fixes due to klibc update
  o sync klibc with release 0.95
  o add mol permissions to the debian permissions file
  o update the FAQ with info about bad modprobe events from the devfs scheme
  o some cleanups due to the need for LABEL rules to use "SYSFS_" now
  o Add restart target to the etc/init.d/udev script
  o tweak the config file generation portion of the Makefile a bit
  o change devfs disk name rule from 'disk' to 'disc'
  o add vc support to udev.rules.devfs
  o added a devfs udev config file from Marco d'Itri <md@Linux.IT>
  o set default mode to 0600 to be safer
  o Makefile tweaks for the DBUS build
  o update the FAQ due to the latest devfs mess on lkml and also due to symlinks now working
  o document the different Makefile config options that we have
  o change USE_DBUS to DBUS in Makefile, and disable it by default as it's still to hard to build on all systems
  o fix formatting of udev_dbus.c to use tabs.  Also get it to build properly now
  o move all of the DBUS logic into one file and remove all of the #ifdef crud from the main code

Olaf Hering:
  o dump latest klibc into the udev build tree
  o use udevdir in udev.conf

Patrick Mansfield:
  o better allow builds of extras programs under udev
  o update udev extras/scsi_id to version 0.2


Summary of changes from v007 to v008
============================================

<azarah:nosferatu.za.org>:
  o more config file parsing robustness

<christophe.varoqui:free.fr>:
  o udev-007/extras/multipath update

Arnd Bergmann:
  o Build failure - missing linux/limits.h include?
  o Add format modifier for devfs like naming
  o klibc makefile fixes

Daniel E. F. Stekloff:
  o another patch for path problem
  o quick fix for libsysfs bus
  o libsysfs changes for sysfsutils 0.3.0

Greg Kroah-Hartman:
  o fix up some duplicated function compiler warnings in libsysfs
  o fix some compiler warnings in the tdb code
  o Added Kay's name to the man page
  o update the wildcard documentation in the man page to show the new styles supported
  o fix permission handling logic
  o enable default_mode ability to actually build
  o add support for the default_mode variable, as it is documented
  o show permissions and groups in the label_test
  o remove some items off of the TODO list, as they are now done
  o fix up the tests to work without all of the environ variables
  o get rid of the majority of the debug environment variables
  o Update the man page to show the new config file, it's format, and how to use it
  o fix up the tests to support the rules file name change
  o add support for a main udev config file, udev.conf
  o turn debugging messages off by default
  o split out the namedev config parsing logic to namedev_parse.c
  o rename namedev's get_attr() to be main namedev_name_device() as that's what it really is
  o add devfs like tty rules as an example in the default config file
  o operate on the rules in the order they are in the config file (within the rule type) instead of operating on them backwards.
  o Cset exclude: dsteklof@us.ibm.com|ChangeSet|20031126173159|56255
  o add test for checking the BUS value
  o fix problem where we were not looking at the BUS value
  o add scsi and pci bus links in the test sysfs tree
  o add test and documentation for new %D devfs format modifier
  o changed the default location of the database to /udev/.udev.tdb to be LSB compliant
  o get rid of functions in klibc_fixups that are now in klibc
  o sync up with the 0.84 version of klibc
  o fix udev init.d script to handle all class devices in sysfs
  o fix the test.block and test.tty scripts due to their moveing.  Also add a test.all script
  o 007_bk version change to Makefile

Kay Sievers:
  o pattern matching for namedev
  o catch replace device by wildcard
  o udev.8 tweak numeric id text
  o udev-test.pl add subdir test
  o namedev.c strcat tweak
  o overall whitespace + debug text conditioning
  o udev-test.pl - tweaks

Martin Hicks:
  o Add -nodefaultlibs while compiling against klibc

Olaf Hering:
  o ARCH detection for ppc

Patrick Mansfield:
  o fix udev parallel builds with klibc


Summary of changes from v006 to v007
============================================

<md:linux.it>:
  o fix segfault in parsing bad udev.permissions file

Greg Kroah-Hartman:
  o update default config file with a CALLOUT rule, and more documentation
  o updated the man page with the latest format specifier changes
  o added ability to put format specifiers in the CALLOUT program string
  o tweak udev-test.pl to report '0' errors if that's what happened
  o only build klibc_fixups.c if we are actually using klibc
  o add support for string group and string user names in udev.permissions
  o add getgrnam and getpwnam to klibc_fixups files
  o remove Makefile.klibc
  o add udev-test perl script from Kay Sievers <kay.sievers@vrfy.org> which blows away my puny shell scripts
  o added debian's version of udev.permissions
  o change to 006_bk version

Kay Sievers:
  o format char for CALLOUT output
  o more namedev whitespace cleanups
  o support arguments in callout exec
  o namedev.c - change order of fields in CALLOUT
  o namedev.c whitespace + debug text cleanup
  o man page with udev.permissions wildcard

Olaf Hering:
  o static klibc udev does not link against crt0.o

Summary of changes from v005 to v006
============================================

<chris_friesen:sympatico.ca>:
  o faster test scripts

Arnd Bergmann:
  o more robust config file parsing in namedev.c
  o add bus id modifier

Daniel E. F. Stekloff:
  o patch for libsysfs sysfs directory handling

Greg Kroah-Hartman:
  o add another line to udev.permissions in the proper format
  o tweak replace_test
  o fix permissions to work properly now
  o add real udev.permissions file to test directory
  o fix namedev.c to build with older version of gcc
  o add dumb test for all of the different modifiers
  o update the TODO list with more items that people can easily do
  o move the test.block and test.tty scripts to the test/ directory
  o add remove actions to the test scripts
  o turn DEBUG_PARSER off by default
  o add some documentation for the %b modifier to the default config file
  o fix make install rule for when the udev symlink is already there
  o change release target in makefile
  o change debug level on printf values for now
  o updated demo config file
  o add some documentation of the modifiers to the default config file
  o add demo config file
  o updated bk ignore list for klibc generated files
  o add printf option to label test to verify it works
  o fix up printf-like functionality due to previous changes
  o get the major/minor number before we name the device
  o add scsi_id "extra" program from Patrick Mansfield <patmans@us.ibm.com>
  o Add multipath "extra" program from Christophe Varoqui, <christophe.varoqui@free.fr>
  o trailing whitespace cleanups
  o splig LABEL and NUMBER into separate functions
  o add TOPO regression test
  o move TOPOLOGY rule to it's own function
  o fix bug where NUMBER and TOPOLOGY would not work for partitions
  o clean up the way we find the sysdevice for a block device for namedev
  o updated label test script (tests for partitions now.)
  o split REPLACE and CALLOUT into separate functions
  o add debug line for REPLACE call
  o add replace test
  o add more sysfs test tree files
  o change UDEV_SYSFS_PATH environment variable due to libsysfs change
  o fix bug in klibc's isspace function
  o fix udev-add.c to build properly with older versions of gcc
  o add prototype for ftruncate to klibc
  o Remove a few items from the TODO list that are already done
  o version number to 005_bk
  o pull some klibc stuff into the make Makefile to try to stay in sync
  o klibc build fixes

Kay Sievers:
  o apply permissions.conf support for wildcard and default name
  o man page with included placeholder list
  o implement printf-like placeholder support for NAME
  o more manpage tweaks
  o add support for subdirs
  o add uid/gid to nodes

Olaf Hering:
  o DESTDIR for udev

Paul Mundt:
  o Fixup path for kernel includes when building with klibc

Robert Love:
  o udev init script


Summary of changes from v004 to v005
============================================

<kay:vrfy.org>:
  o namedev.c comments + debug patch
  o man page update

Greg Kroah-Hartman:
  o ignore the klibc/linux symlink
  o add klibc linux symlink info to the README
  o get 'make release' to work properly again
  o added README info for how to build using klibc
  o turn off debugging if we are building with klibc
  o turn off debugging in namedev
  o added vsyslog support to klibc
  o add ftruncate to klibc
  o klibc specific tweaks
  o libsysfs does not need mntent.h in it's header file
  o udev build tweaks to tdb's spinlock code
  o klibc makefile changes
  o build tdb and libsysfs from the same makefile as udev
  o udev-add build cleanups for other libc versions
  o tweak tdb to build within udev better
  o make libsysfs spit debug messages to the same place as the rest of udev
  o make libsysfs build cleanly
  o updated bk ignore list
  o added klibc version 0.82 (cvs tree) to the udev tree
  o makefile fix for now
  o Merge greg@bucket:/home/greg/src/udev into kroah.com:/home/greg/src/udev
  o hm, makefile bug with so many files...  will fix later
  o regression tests starting to be added
  o fix LABEL bug for device files (not class files.)
  o more warning flags to the build
  o got rid of struct device_attr
  o rename namedev.permissions and namedev.config to udev.permissions and udev.config
  o fix dbg line in namedev.c
  o more overrides of config info with env variables if in test mode
  o Fix bug causing udev to sleep forever waiting for dev file to show up
  o change version to 004_bk
  o make config files, sysfs root, and udev root configurable from config variables

Robert Love:
  o udev: sleep_for_dev() bits
  o udev: another canidate for static


Summary of changes from v003 to v004
============================================

Daniel E. F. Stekloff:
  o new version of libsysfs patch

Greg Kroah-Hartman:
  o 004 release
  o major database cleanups
  o Changed test.block and test.tty to take ACTION from the command line
  o don't sleep if 'dev' file is already present on device add
  o fix comment about how the "dev" file is made up
  o more database work.  Now we only store the info we really need right now
  o add BUS= bug to TODO list so it will not get forgotten
  o spec file changes
  o test.block changes
  o ok, rpm likes the "_" character instead of "-" better
  o change the version to 003-bk to keep things sane with people using the bk tree
  o got "remove of named devices" working
  o fix segfaults when dealing with partitions

Kay Sievers:
  o man file update
  o man page update

Robert Love:
  o udev: mode should be mode_t
  o udev: trivial trivialities
  o udev: cool test scripts again
  o udev spec file symlink support
  o udev: cool test scripts
  o udev spec file bits


Summary of changes from v0.2 to v003
============================================

Daniel E. F. Stekloff:
  o udevdb patch
  o udevdb prototype

Greg Kroah-Hartman:
  o update the spec file for the new version and install process
  o fix makefile release rule to not drop tdb.h file
  o Add FAQ for udev
  o removed AUTHORS and INSTALL files as they were pretty pointless
  o copyright updates
  o Add AUTHORS and INSTALL files
  o TODO updates
  o Updatd the README
  o updated the TODO list
  o add udev man page (basically just a place holder for now.)
  o added uninstall support
  o added install target for makefile so people don't have to do it by hand anymore
  o add version to debug log on startup
  o tell the user what mknod() we are trying to do
  o add dbg_parse() to cut down on parse file debugging statements
  o put config files and database in /etc/udev by default
  o add ols 2003 udev paper to docs/
  o clean up some debugging stuff in namedev.c
  o do not build the tdb binary programs, only the objects
  o merge tdb into the build process
  o Added tdb code from latest cvs version in the samba tree
  o added my name to the .spec file
  o minor cleanups
  o cleanup the mknod code a bit
  o remove mknod callout
  o handle new major:minor format of dev files that showed up in 2.6.0-test2-bk3 or so
  o oops, everything was getting created as 000 mode, try to fix this up, but fail...
  o more test stuff

Olaf Hering:
  o print udev pid

Patrick Mansfield:
  o add callout config type to udev

Paul Mundt:
  o Fix TDB cross compilation
  o udev spec file
  o udev/libsysfs cross compile fixes


Summary of changes from v0.1 to v0.2
============================================

Greg Kroah-Hartman:
  o more test stuff
  o removed unneeded stuff from udev.h
  o added 0.2 change log info
  o start working on label support, and fix some segfaults for block devices
  o test config file changes
  o add NUMBER support (basically same logic as TOPOLOGY, perhaps we should
    merge this...)
  o added topology support
  o got REPLACE to work properly
  o make struct config_device contain a struct device_attr instead of
    duplicating the mess
  o block test
  o split the tests up into different files
  o split udev main logic into udev-add and udev-remove
  o Clean up the namedev interface a bit, making the code smaller
  o bk: update ignore list
  o update the tests to handle block devices too
  o add initial libsysfs support
  o added libsysfs to the build
  o added libsysfs code from sysutils-0.1.1-071803 release
  o namedev config files are fully parsed
  o more permission tests
  o make log_message spit out warnings so I don't have to spend forever
    chasing down stupid bugs that aren't there...
  o added klibc makefile
  o Initial namedev parsing of config files
  o sleep for 2 seconds to give the kernel a chance to actually create the
    files we need
  o pick a better default UDEV_ROOT
  o fix up the test to actually work
  o added more documentation in README and TODO files


Summary of changes up to v0.1
============================================

Greg Kroah-Hartman:
  o added more documentation in README and TODO files
  o updated the documentation
  o cleaned up the makefile a bit
  o remove now works!
  o restructure code to be able to actually get remove_node() to work
  o Creating nodes actually works
  o added stupid test script for debugging
  o added initial documentation and gpl license
  o enabled debugging
  o updated ignore list
  o added initial files
  o fixed up config
  o Initial repository create
  o BitKeeper file /home/greg/src/udev/udev/ChangeSet

