--- readahead-list-0.20050517.0220.orig/debian/readahead.postinst +++ readahead-list-0.20050517.0220/debian/readahead.postinst @@ -0,0 +1,49 @@ +#!/bin/sh -e +# This script can be called in the following ways: +# +# After the package was installed: +# configure +# +# +# If prerm fails during upgrade or fails on failed upgrade: +# abort-upgrade +# +# If prerm fails during deconfiguration of a package: +# abort-deconfigure in-favour +# removing +# +# If prerm fails during replacement due to conflict: +# abort-remove in-favour + + +# Remove old lists +rm_old_lists() +{ + rm -f /etc/readahead/readahead /etc/readahead/readahead.new +} + +# Remove existing rc symlinks +rm_rc_symlinks() +{ + update-rc.d -f readahead remove +} + + +case "$1" in + configure) + if dpkg --compare-versions "$2" lt "1:0.20050517.0220-0ubuntu1"; then + rm_rc_symlinks + fi + ;; + + abort-upgrade|abort-deconfigure|abort-remove) + ;; + + *) + echo "$0 called with unknown argument \`$1'" 1>&2 + exit 1 + ;; +esac + +#DEBHELPER# +exit 0 --- readahead-list-0.20050517.0220.orig/debian/readahead.dirs +++ readahead-list-0.20050517.0220/debian/readahead.dirs @@ -0,0 +1 @@ +etc/readahead --- readahead-list-0.20050517.0220.orig/debian/rules +++ readahead-list-0.20050517.0220/debian/rules @@ -0,0 +1,148 @@ +#!/usr/bin/make -f +# debian/rules for the readahead-list package +# Copyright © 2006 Canonical Ltd. +# Author: Scott James Remnant + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +export DH_OPTIONS + +CFLAGS = -Wall -g +CXXFLAGS = -Wall -g + +# Disable optimisations if noopt found in $DEB_BUILD_OPTIONS +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 + CXXFLAGS += -O0 +else + CFLAGS += -O2 + CXXFLAGS += -O2 +endif + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + confflags += --build=$(DEB_HOST_GNU_TYPE) +else + confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) +endif + + +# Apply patches to the package +patch: patch-stamp +patch-stamp: + dh_testdir + @patches=debian/patches/*.patch; for patch in $$patches; do \ + echo "Applying $$patch"; \ + patch -stuN -p1 < $$patch || exit 1; \ + done + touch $@ + +# Remove patches from the package +unpatch: + dh_testdir + @if test -f patch-stamp; then \ + patches=debian/patches/*.patch; \ + for patch in $$patches; do \ + reversepatches="$$patch $$reversepatches"; \ + done; \ + for patch in $$reversepatches; do \ + echo "Reversing $$patch"; \ + patch -suRf -p1 < $$patch || exit 1; \ + done; \ + rm -f patch-stamp; \ + fi + + +# Build the package +build: patch-stamp build-stamp +build-stamp: + dh_testdir + + ./configure $(confflags) \ + CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \ + --prefix=/usr \ + --sbindir=/sbin \ + --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + --sysconfdir=/etc \ + --enable-dependency-tracking + + $(MAKE) + + touch $@ + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + + # Install the boot list + install -m 644 -o root -g root debian/boot.list \ + debian/readahead/etc/readahead/boot + + # Generate the desktop list from the boot list + egrep "^/(usr|var)/" debian/boot.list \ + > debian/readahead/etc/readahead/desktop + chown root:root debian/readahead/etc/readahead/desktop + chmod 644 debian/readahead/etc/readahead/desktop + +binary: binary-arch binary-indep + +# Build architecture-independent files here. +binary-indep: DH_OPTIONS=-i +binary-indep: build install + dh_testdir + dh_testroot + dh_install + dh_installchangelogs + dh_installdocs + dh_compress + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +# Build architecture-dependent files here. +binary-arch: DH_OPTIONS=-a +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp + dh_installchangelogs ChangeLog + dh_installdocs + dh_installinit --no-start -- start 01 S . + dh_installinit --name=readahead-desktop --no-start -- start 39 S . + dh_installinit --name=stop-readahead --no-start -- start 99 2 3 4 5 . + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_makeshlibs + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + + +# Clean up the mess we made +clean: clean-source unpatch +clean-source: + dh_testdir + rm -f build-stamp + + -$(MAKE) clean distclean + + dh_clean + + +.PHONY: patch unpatch build install binary-indep binary-arch binary \ + clean clean-source --- readahead-list-0.20050517.0220.orig/debian/readahead.install +++ readahead-list-0.20050517.0220/debian/readahead.install @@ -0,0 +1,4 @@ +sbin/readahead-list +sbin/readahead-watch +usr/share/man/man8/readahead-list.8 +usr/share/man/man8/readahead-watch.8 --- readahead-list-0.20050517.0220.orig/debian/readahead.init +++ readahead-list-0.20050517.0220/debian/readahead.init @@ -0,0 +1,69 @@ +#!/bin/sh -e +### BEGIN INIT INFO +# Provides: readahead +# Required-Start: +# Required-Stop: +# X-Start-Before: mountkernfs hostname +# Default-Start: S +# Default-Stop: +# Short-Description: init script for readahead +### END INIT INFO + +# Check the package is still installed +[ -x /sbin/readahead-list ] || exit 0 + +# Get LSB functions +. /lib/lsb/init-functions +. /etc/default/rcS + + +# Remember that any major changes to this script need to also be made to +# readahead-desktop.init + +# Remove the boot list to disable this readhead phase +[ -r /etc/readahead/boot ] || exit 0 + +case "$1" in + start|restart|force-reload) + # This can take a while + if type usplash_write >/dev/null 2>&1; then + usplash_write "TIMEOUT 360" || true + fi + + # If "profile" is placed on the kernel command-line we watch the boot + # sequence and generate new readahead lists, rather than read the lists + if ! grep -q "profile" /proc/cmdline; then + log_begin_msg "Reading files needed to boot..." + if /sbin/start-stop-daemon --start --quiet \ + --pidfile /var/run/readahead-list.bogus \ + --startas /sbin/readahead-list -- -s /etc/readahead/boot; then + log_end_msg 0 + else + log_end_msg $? + fi + else + echo 524288 > /proc/sys/fs/inotify/max_user_watches + + log_begin_msg "Preparing to profile boot sequence..." + if /sbin/start-stop-daemon --start --quiet \ + --pidfile /var/run/readahead-watch.bogus \ + --startas /sbin/readahead-watch -- -o /etc/readahead/boot; then + log_end_msg 0 + else + log_end_msg $? || true + fi + fi + + if type usplash_write >/dev/null 2>&1; then + usplash_write "TIMEOUT 15" || true + fi + ;; + stop) + ;; + *) + echo "Usage: /etc/init.d/readahead {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 --- readahead-list-0.20050517.0220.orig/debian/README.Debian +++ readahead-list-0.20050517.0220/debian/README.Debian @@ -0,0 +1 @@ +Readahead should not be used for files stored on NFS currently. --- readahead-list-0.20050517.0220.orig/debian/copyright +++ readahead-list-0.20050517.0220/debian/copyright @@ -0,0 +1,22 @@ +This is the Ubuntu package of readahead-list, a utility to read files +into the page cache. + +Copyright © 2005 Robin Hugh Johnson + +Available from: + http://research.iat.sfu.ca/custom-software/readahead-list/ + +Licence: + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +On Ubuntu systems, the complete text of the GNU General Public License +can be found in ‘/usr/share/common-licenses/GPL’. --- readahead-list-0.20050517.0220.orig/debian/stop-readahead.init +++ readahead-list-0.20050517.0220/debian/stop-readahead.init @@ -0,0 +1,45 @@ +#!/bin/sh -e +### BEGIN INIT INFO +# Provides: stop-readahead +# Required-Start: $all readahead-desktop +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: init script for stopping readahead profiling +### END INIT INFO + +# Check the package is still installed +[ -x /sbin/readahead-list ] || exit 0 + +# Get LSB functions +. /lib/lsb/init-functions +. /etc/default/rcS + +# This is only necessary if "profile" was on the kernel command-line, +# and thus readahead-watch is running. +grep -q "profile" /proc/cmdline || exit 0 + + +case "$1" in + start) + if [ -f /var/run/readahead-watch-boot.pid ]; then + /sbin/start-stop-daemon --stop --quiet --oknodo \ + --pidfile /var/run/readahead-watch-boot.pid + + rm -f /var/run/readahead-watch-boot.pid + fi + + /sbin/start-stop-daemon --stop --quiet --oknodo \ + --pidfile /var/run/readahead-watch.pid + + rm -f /var/run/readahead-watch.pid + ;; + stop|restart|force-reload) + ;; + *) + echo "Usage: /etc/init.d/stop-readahead {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 --- readahead-list-0.20050517.0220.orig/debian/control +++ readahead-list-0.20050517.0220/debian/control @@ -0,0 +1,20 @@ +Source: readahead-list +Section: admin +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Petter Reinholdtsen +Uploaders: Julian Andres Klode +Build-Depends: debhelper (>= 4.1.16) +Standards-Version: 3.7.3 + +Package: readahead +Architecture: any +Depends: ${shlibs:Depends} +Description: read files into the page cache + readahead-list is an updated and enhanced version of the original readahead + utility. + . + It allows the user to specify a set of files to be read into the page cache + to accelerate first time loading of programs, typically during the boot + sequence. + --- readahead-list-0.20050517.0220.orig/debian/readahead-desktop.init +++ readahead-list-0.20050517.0220/debian/readahead-desktop.init @@ -0,0 +1,83 @@ +#!/bin/sh -e +### BEGIN INIT INFO +# Provides: readahead-desktop +# Required-Start: $local_fs readahead +# Required-Stop: +# X-Start-Before: $network +# Default-Start: S +# Default-Stop: +# Short-Description: init script for readahead (second stage) +### END INIT INFO + +# Check the package is still installed +[ -x /sbin/readahead-list ] || exit 0 + +# Get LSB functions +. /lib/lsb/init-functions +. /etc/default/rcS + + +# Remember that any major changes to this script need to also be made to +# readahead.init + +# Remove the desktop list to disable this readhead phase +[ -r /etc/readahead/desktop ] || exit 0 + +case "$1" in + start|restart|force-reload) + # This script is only run if /usr or /var are on a different + # filesystem. + if mountpoint -q /usr; then + dirs="$dirs /usr" + fi + if mountpoint -q /var; then + dirs="$dirs /var" + fi + + [ -n "$dirs" ] || exit 0 + + # This can take a while + if type usplash_write >/dev/null 2>&1; then + usplash_write "TIMEOUT 360" || true + fi + + # If "profile" is placed on the kernel command-line we watch the boot + # sequence and generate new readahead lists, rather than read the lists + if ! grep -q "profile" /proc/cmdline; then + log_begin_msg "Reading files needed to boot (second stage)..." + if /sbin/start-stop-daemon --start --quiet \ + --pidfile /var/run/readahead-list.bogus \ + --startas /sbin/readahead-list -- -s /etc/readahead/desktop; then + log_end_msg 0 + else + log_end_msg $? + fi + else + # Move the first stage's pid file so we can still kill it later + mv /var/run/readahead-watch.pid /var/run/readahead-watch-boot.pid + + # Just watch the newly mounted directories + log_begin_msg "Preparing to profile boot sequence (second stage)..." + if /sbin/start-stop-daemon --start --quiet \ + --pidfile /var/run/readahead-watch.bogus \ + --startas /sbin/readahead-watch \ + -- -o /etc/readahead/desktop $dirs; then + log_end_msg 0 + else + log_end_msg $? || true + fi + fi + + if type usplash_write >/dev/null 2>&1; then + usplash_write "TIMEOUT 15" || true + fi + ;; + stop) + ;; + *) + echo "Usage: /etc/init.d/readahead {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 --- readahead-list-0.20050517.0220.orig/debian/boot.list +++ readahead-list-0.20050517.0220/debian/boot.list @@ -0,0 +1,710 @@ +/lib/ld-2.9.so +/lib/libacl.so.1.1.0 +/lib/libattr.so.1.1.0 +/lib/libblkid.so.1.0 +/lib/libcap.so.2.11 +/lib/libcom_err.so.2.1 +/lib/libdbus-1.so.3.4.0 +/lib/libe2p.so.2.3 +/lib/libext2fs.so.2.4 +/lib/libgcc_s.so.1 +/lib/libgcrypt.so.11.4.4 +/lib/libgpg-error.so.0.3.0 +/lib/libkeyutils-1.2.so +/lib/libncurses.so.5.7 +/lib/libnss_mdns.so.2 +/lib/libpam.so.0.81.12 +/lib/libpcre.so.3.12.1 +/lib/libpcsclite.so.1.0.0 +/lib/libproc-3.2.7.so +/lib/libselinux.so.1 +/lib/libsepol.so.1 +/lib/libudev.so.0.2.0 +/lib/libusb-0.1.so.4.4.4 +/lib/libuuid.so.1.2 +/lib/libvolume_id.so.1.1.0 +/lib/libwrap.so.0.7.6 +/lib/libz.so.1.2.3.3 +/lib/dbus-1.0/dbus-daemon-launch-helper +/lib/i686/cmov/libcrypto.so.0.9.8 +/lib/i686/cmov/libssl.so.0.9.8 +/lib/init/bootclean.sh +/lib/init/mount-functions.sh +/lib/init/readlink +/lib/init/splash-functions +/lib/init/splash-functions-base +/lib/init/usplash-fsck-functions.sh +/lib/init/vars.sh +/lib/linux-sound-base/noOSS.modprobe.conf +/lib/lsb/init-functions +/lib/udev/alsa-utils +/lib/udev/ata_id +/lib/udev/fstab_import +/lib/udev/path_id +/lib/udev/scsi_id +/lib/udev/usb_id +/lib/udev/vol_id +/lib/terminfo/l/linux +/lib/tls/i686/cmov/libc-2.9.so +/lib/tls/i686/cmov/libcrypt-2.9.so +/lib/tls/i686/cmov/libdl-2.9.so +/lib/tls/i686/cmov/libm-2.9.so +/lib/tls/i686/cmov/libnsl-2.9.so +/lib/tls/i686/cmov/libnss_compat-2.9.so +/lib/tls/i686/cmov/libnss_files-2.9.so +/lib/tls/i686/cmov/libnss_nis-2.9.so +/lib/tls/i686/cmov/libpthread-2.9.so +/lib/tls/i686/cmov/libresolv-2.9.so +/lib/tls/i686/cmov/librt-2.9.so +/lib/tls/i686/cmov/libutil-2.9.so +/lib/udev/rules.d/40-alsa.rules +/lib/udev/rules.d/40-hplip.rules +/lib/udev/rules.d/40-ia64.rules +/lib/udev/rules.d/40-infiniband.rules +/lib/udev/rules.d/40-isdn.rules +/lib/udev/rules.d/40-libpisock9.rules +/lib/udev/rules.d/40-pilot-links.rules +/lib/udev/rules.d/40-ppc.rules +/lib/udev/rules.d/40-xserver-xorg-input-wacom.rules +/lib/udev/rules.d/40-zaptel.rules +/lib/udev/rules.d/45-fuse.rules +/lib/udev/rules.d/45-libmtp8.rules +/lib/udev/rules.d/50-firmware.rules +/lib/udev/rules.d/50-udev-default.rules +/lib/udev/rules.d/60-cdrom_id.rules +/lib/udev/rules.d/60-persistent-input.rules +/lib/udev/rules.d/60-persistent-serial.rules +/lib/udev/rules.d/60-persistent-storage-tape.rules +/lib/udev/rules.d/60-persistent-storage.rules +/lib/udev/rules.d/60-persistent-v4l.rules +/lib/udev/rules.d/61-persistent-storage-edd.rules +/lib/udev/rules.d/62-bluez-hid2hci.rules +/lib/udev/rules.d/64-device-mapper.rules +/lib/udev/rules.d/65-dmsetup.rules +/lib/udev/rules.d/75-cd-aliases-generator.rules +/lib/udev/rules.d/75-persistent-net-generator.rules +/lib/udev/rules.d/77-nm-probe-modem-capabilities.rules +/lib/udev/rules.d/79-fstab_import.rules +/lib/udev/rules.d/80-drivers.rules +/lib/udev/rules.d/85-alsa-utils.rules +/lib/udev/rules.d/85-brltty.rules +/lib/udev/rules.d/85-hdparm.rules +/lib/udev/rules.d/85-hplj10xx.rules +/lib/udev/rules.d/85-hwclock.rules +/lib/udev/rules.d/85-ifupdown.rules +/lib/udev/rules.d/85-pcmcia.rules +/lib/udev/rules.d/85-regulatory.rules +/lib/udev/rules.d/90-hal.rules +/lib/udev/rules.d/95-udev-late.rules +/bin/bash +/bin/cat +/bin/chgrp +/bin/chmod +/bin/chown +/bin/cp +/bin/dash +/bin/date +/bin/dbus-uuidgen +/bin/dd +/bin/df +/bin/dmesg +/bin/echo +/bin/egrep +/bin/fgconsole +/bin/grep +/bin/gzip +/bin/hostname +/bin/ld_static +/bin/ln +/bin/ls +/bin/lsmod +/bin/mkdir +/bin/mknod +/bin/mktemp +/bin/mount +/bin/mountpoint +/bin/mv +/bin/ps +/bin/readlink +/bin/rm +/bin/rmdir +/bin/run-parts +/bin/sed +/bin/sleep +/bin/stty +/bin/touch +/bin/true +/bin/umount +/bin/uname +/bin/which +/usr/lib/gconv/gconv-modules.cache +/etc/timezone +/etc/passwd +/etc/modules +/etc/anacrontab +/etc/brltty.conf +/etc/crontab +/etc/e2fsck.conf +/etc/gai.conf +/etc/network/interfaces +/etc/hostname +/etc/hosts +/etc/host.conf +/etc/issue +/etc/fstab +/etc/locale.alias +/etc/lsb-base-logging.sh +/etc/motd.tail +/etc/nsswitch.conf +/etc/rc.local +/etc/scsi_id.config +/etc/services +/etc/sysctl.conf +/etc/syslog.conf +/etc/ConsoleKit/seats.d/00-primary.seat +/etc/NetworkManager/nm-system-settings.conf +/etc/X11/Xwrapper.config +/etc/X11/default-display-manager +/etc/acpi/power.sh +/etc/acpi/events/ac +/etc/acpi/events/asus-a6u-touchpad +/etc/acpi/events/asus-brightness-down +/etc/acpi/events/asus-brightness-up +/etc/acpi/events/asus-eee-volume-down +/etc/acpi/events/asus-eee-volume-mute +/etc/acpi/events/asus-eee-volume-up +/etc/acpi/events/asus-internet +/etc/acpi/events/asus-lock +/etc/acpi/events/asus-media-eject +/etc/acpi/events/asus-media-next +/etc/acpi/events/asus-media-play-pause +/etc/acpi/events/asus-media-prev +/etc/acpi/events/asus-media-stop +/etc/acpi/events/asus-rotate +/etc/acpi/events/asus-touchpad +/etc/acpi/events/asus-video +/etc/acpi/events/asus-volume-down +/etc/acpi/events/asus-volume-mute +/etc/acpi/events/asus-volume-up +/etc/acpi/events/asus-wireless +/etc/acpi/events/asus-wireless-2 +/etc/acpi/events/asus-wireless-off +/etc/acpi/events/asus-wireless-on +/etc/acpi/events/battery +/etc/acpi/events/ibm-wireless +/etc/acpi/events/lenovo-touchpad +/etc/acpi/events/lidbtn +/etc/acpi/events/panasonic-brightness-down +/etc/acpi/events/panasonic-brightness-up +/etc/acpi/events/panasonic-hibernatebtn +/etc/acpi/events/panasonic-lockbtn +/etc/acpi/events/panasonic-mute +/etc/acpi/events/panasonic-sleepbtn +/etc/acpi/events/panasonic-volume-down +/etc/acpi/events/panasonic-volume-up +/etc/acpi/events/powerbtn +/etc/acpi/events/sleepbtn +/etc/acpi/events/sony-eject +/etc/acpi/events/sony-mute +/etc/acpi/events/sony-sleep +/etc/acpi/events/sony-volume-down +/etc/acpi/events/sony-volume-up +/etc/acpi/events/thinkpad-cmos +/etc/acpi/events/thinkpad-thinkpad +/etc/acpi/events/tosh-battery +/etc/acpi/events/tosh-hibernate +/etc/acpi/events/tosh-ibutton +/etc/acpi/events/tosh-lock +/etc/acpi/events/tosh-mail +/etc/acpi/events/tosh-media +/etc/acpi/events/tosh-next +/etc/acpi/events/tosh-play +/etc/acpi/events/tosh-prev +/etc/acpi/events/tosh-stop +/etc/acpi/events/tosh-wireless +/etc/acpi/events/tosh-www +/etc/acpi/events/video_brightnessdown +/etc/acpi/events/video_brightnessup +/etc/acpi/events/videobtn +/etc/acpi/start.d/10-save-dmidecode.sh +/etc/acpi/start.d/60-asus-wireless-led.sh +/etc/acpi/start.d/90-hdparm.sh +/etc/apparmor/rc.apparmor.functions +/etc/apparmor/subdomain.conf +/etc/apparmor.d/gdm-guest-session +/etc/apparmor.d/sbin.dhclient3 +/etc/apparmor.d/usr.sbin.cupsd +/etc/apparmor.d/usr.sbin.tcpdump +/etc/apparmor.d/abstractions/authentication +/etc/apparmor.d/abstractions/base +/etc/apparmor.d/abstractions/bash +/etc/apparmor.d/abstractions/dbus +/etc/apparmor.d/abstractions/fonts +/etc/apparmor.d/abstractions/kerberosclient +/etc/apparmor.d/abstractions/likewise +/etc/apparmor.d/abstractions/mdns +/etc/apparmor.d/abstractions/nameservice +/etc/apparmor.d/abstractions/nis +/etc/apparmor.d/abstractions/perl +/etc/apparmor.d/abstractions/smbpass +/etc/apparmor.d/abstractions/user-tmp +/etc/apparmor.d/abstractions/winbind +/etc/apparmor.d/abstractions/wutmp +/etc/apparmor.d/tunables/global +/etc/apparmor.d/tunables/home +/etc/apparmor.d/tunables/proc +/etc/avahi/avahi-daemon.conf +/etc/avahi/hosts +/etc/bluetooth/audio.conf +/etc/bluetooth/input.conf +/etc/bluetooth/main.conf +/etc/bluetooth/network.conf +/etc/bluetooth/rfcomm.conf +/etc/cron.d/anacron +/etc/cron.d/update-motd +/etc/cups/cupsd.conf +/etc/cups/mime.convs +/etc/cups/mime.types +/etc/cups/oopstops.convs +/etc/cups/oopstops.types +/etc/cups/pstopdf.convs +/etc/cups/raw.convs +/etc/cups/raw.types +/etc/dbus-1/system.conf +/etc/dbus-1/system.d/ConsoleKit.conf +/etc/dbus-1/system.d/NetworkManager.conf +/etc/dbus-1/system.d/avahi-dbus.conf +/etc/dbus-1/system.d/bluetooth.conf +/etc/dbus-1/system.d/com.ubuntu.DeviceDriver.conf +/etc/dbus-1/system.d/com.ubuntu.ScreenResolution.Mechanism.conf +/etc/dbus-1/system.d/com.ubuntu.SystemService.conf +/etc/dbus-1/system.d/com.ubuntu.checkbox.conf +/etc/dbus-1/system.d/hal.conf +/etc/dbus-1/system.d/newprinternotification.conf +/etc/dbus-1/system.d/nm-applet.conf +/etc/dbus-1/system.d/nm-avahi-autoipd.conf +/etc/dbus-1/system.d/nm-dhcp-client.conf +/etc/dbus-1/system.d/nm-dispatcher.conf +/etc/dbus-1/system.d/nm-system-settings.conf +/etc/dbus-1/system.d/obex-data-server.conf +/etc/dbus-1/system.d/org.freedesktop.PolicyKit.conf +/etc/dbus-1/system.d/org.gnome.CPUFreqSelector.conf +/etc/dbus-1/system.d/org.gnome.ClockApplet.Mechanism.conf +/etc/dbus-1/system.d/org.gnome.GConf.Defaults.conf +/etc/dbus-1/system.d/system-tools-backends.conf +/etc/dbus-1/system.d/wpa_supplicant.conf +/etc/dbus-1/system.d/xorg-server.conf +/etc/default/acpi-support +/etc/default/acpid +/etc/default/apmd +/etc/default/avahi-daemon +/etc/default/bluetooth +/etc/default/brltty +/etc/default/cron +/etc/default/cups +/etc/default/dbus +/etc/default/devpts +/etc/default/hal +/etc/default/kernel-helper-rc +/etc/default/klogd +/etc/default/linux-restricted-modules-common +/etc/default/pulseaudio +/etc/default/rsync +/etc/default/saned +/etc/default/syslogd +/etc/default/tmpfs +/etc/default/ufw +/etc/gdm/gdm.conf +/etc/gdm/gdm.conf-custom +/etc/init.d/NetworkManager +/etc/init.d/acpi-support +/etc/init.d/acpid +/etc/init.d/alsa-utils +/etc/init.d/anacron +/etc/init.d/apmd +/etc/init.d/apparmor +/etc/init.d/atd +/etc/init.d/avahi-daemon +/etc/init.d/binfmt-support +/etc/init.d/bluetooth +/etc/init.d/bootlogs.sh +/etc/init.d/bootmisc.sh +/etc/init.d/brltty +/etc/init.d/checkfs.sh +/etc/init.d/checkroot.sh +/etc/init.d/console-setup +/etc/init.d/cron +/etc/init.d/cups +/etc/init.d/dbus +/etc/init.d/dns-clean +/etc/init.d/gdm +/etc/init.d/hal +/etc/init.d/hostname.sh +/etc/init.d/hotkey-setup +/etc/init.d/keyboard-setup +/etc/init.d/klogd +/etc/init.d/laptop-mode +/etc/init.d/linux-restricted-modules-common +/etc/init.d/module-init-tools +/etc/init.d/mountall-bootclean.sh +/etc/init.d/mountall.sh +/etc/init.d/mountdevsubfs.sh +/etc/init.d/mountnfs-bootclean.sh +/etc/init.d/mountnfs.sh +/etc/init.d/mountoverflowtmp +/etc/init.d/mtab.sh +/etc/init.d/networking +/etc/init.d/pcmciautils +/etc/init.d/policykit +/etc/init.d/pppd-dns +/etc/init.d/procps +/etc/init.d/pulseaudio +/etc/init.d/rc.local +/etc/init.d/readahead +/etc/init.d/readahead-desktop +/etc/init.d/rmnologin +/etc/init.d/rsync +/etc/init.d/saned +/etc/init.d/screen-cleanup +/etc/init.d/stop-readahead +/etc/init.d/sysklogd +/etc/init.d/system-tools-backends +/etc/init.d/udev +/etc/init.d/udev-finish +/etc/init.d/ufw +/etc/init.d/urandom +/etc/init.d/usplash +/etc/init.d/x11-common +/etc/laptop-mode/laptop-mode.conf +/etc/modprobe.d/alsa-base.conf +/etc/modprobe.d/blacklist-ath_pci.conf +/etc/modprobe.d/blacklist-firewire.conf +/etc/modprobe.d/blacklist-framebuffer.conf +/etc/modprobe.d/blacklist-modem.conf +/etc/modprobe.d/blacklist-watchdog.conf +/etc/modprobe.d/blacklist.conf +/etc/modprobe.d/libpisock9.conf +/etc/localtime +/etc/network/if-up.d/avahi-daemon +/etc/network/if-up.d/mountnfs +/etc/network/if-up.d/ntpdate +/etc/pm/config.d/00sleep_module +/etc/ppp/ip-down.d/0000usepeerdns +/etc/ppp/ip-down.d/0dns-down +/etc/sysctl.d/10-console-messages.conf +/etc/sysctl.d/10-network-security.conf +/etc/udev/udev.conf +/etc/ufw/ufw.conf +/etc/wpa_supplicant/ifupdown.sh +/etc/ld.so.cache +/etc/default/locale +/etc/default/rcS +/etc/blkid.tab +/etc/X11/xorg.conf +/etc/group +/etc/default/console-setup +/etc/udev/rules.d/70-persistent-cd.rules +/etc/udev/rules.d/70-persistent-net.rules +/usr/bin/X +/usr/bin/basename +/usr/bin/clear +/usr/bin/cut +/usr/bin/dirname +/usr/bin/expr +/usr/bin/find +/usr/bin/hal-get-property +/usr/bin/hal-set-property +/usr/bin/hal-setup-keymap +/usr/bin/head +/usr/bin/lspci +/usr/bin/mawk +/usr/bin/md5sum +/usr/bin/mkfifo +/usr/bin/perl +/usr/bin/pm-is-supported +/usr/bin/rfcomm +/usr/bin/savelog +/usr/bin/stat +/usr/bin/tail +/usr/bin/tput +/usr/bin/tr +/usr/bin/wc +/usr/bin/xargs +/usr/lib/libICE.so.6.3.0 +/usr/lib/libORBit-2.so.0.1.0 +/usr/lib/libSM.so.6.0.0 +/usr/lib/libX11.so.6.2.0 +/usr/lib/libXau.so.6.0.0 +/usr/lib/libXcomposite.so.1.0.0 +/usr/lib/libXcursor.so.1.0.2 +/usr/lib/libXdamage.so.1.1.0 +/usr/lib/libXdmcp.so.6.0.0 +/usr/lib/libXext.so.6.4.0 +/usr/lib/libXfixes.so.3.1.0 +/usr/lib/libXfont.so.1.4.1 +/usr/lib/libXi.so.6.0.0 +/usr/lib/libXinerama.so.1.0.0 +/usr/lib/libXrandr.so.2.2.0 +/usr/lib/libXrender.so.1.3.0 +/usr/lib/libasound.so.2.0.0 +/usr/lib/libatk-1.0.so.0.2609.1 +/usr/lib/libavahi-client.so.3.2.4 +/usr/lib/libavahi-common.so.3.5.0 +/usr/lib/libavahi-core.so.5.0.5 +/usr/lib/libbluetooth.so.3.2.1 +/usr/lib/libcairo.so.2.10800.6 +/usr/lib/libcups.so.2 +/usr/lib/libdaemon.so.0.4.0 +/usr/lib/libdbus-glib-1.so.2.1.0 +/usr/lib/libdirect-1.0.so.0.1.0 +/usr/lib/libdirectfb-1.0.so.0.1.0 +/usr/lib/libdns_sd.so.1.0.0 +/usr/lib/libdrm.so.2.4.0 +/usr/lib/libdrm_intel.so.1.0.0 +/usr/lib/libexpat.so.1.5.2 +/usr/lib/libfontconfig.so.1.3.0 +/usr/lib/libfontenc.so.1.0.0 +/usr/lib/libfreetype.so.6.3.20 +/usr/lib/libfusion-1.0.so.0.1.0 +/usr/lib/libgconf-2.so.4.1.5 +/usr/lib/libgdbm.so.3.0.0 +/usr/lib/libgdk-x11-2.0.so.0.1600.1 +/usr/lib/libgdk_pixbuf-2.0.so.0.1600.1 +/usr/lib/libgio-2.0.so.0.2000.1 +/usr/lib/libglib-2.0.so.0.2000.1 +/usr/lib/libgmodule-2.0.so.0.2000.1 +/usr/lib/libgnutls.so.26.4.6 +/usr/lib/libgobject-2.0.so.0.2000.1 +/usr/lib/libgssapi_krb5.so.2.2 +/usr/lib/libgthread-2.0.so.0.2000.1 +/usr/lib/libgtk-x11-2.0.so.0.1600.1 +/usr/lib/libgvfscommon.so.0.0.0 +/usr/lib/libhal-storage.so.1.0.0 +/usr/lib/libhal.so.1.0.0 +/usr/lib/libk5crypto.so.3.1 +/usr/lib/libkrb5.so.3.3 +/usr/lib/libkrb5support.so.0.1 +/usr/lib/liblber-2.4.so.2.4.1 +/usr/lib/libldap_r-2.4.so.2.4.1 +/usr/lib/libnl.so.1.1 +/usr/lib/libnm-util.so.1.0.0 +/usr/lib/libnm_glib.so.0.1.0 +/usr/lib/libnspr4.so +/usr/lib/libnss3.so +/usr/lib/libnssutil3.so +/usr/lib/libpango-1.0.so.0.2400.1 +/usr/lib/libpangocairo-1.0.so.0.2400.1 +/usr/lib/libpangoft2-1.0.so.0.2400.1 +/usr/lib/libpaper.so.1.1.2 +/usr/lib/libpci.so.3.0.0 +/usr/lib/libpciaccess.so.0.10.2 +/usr/lib/libpixman-1.so.0.13.2 +/usr/lib/libplc4.so +/usr/lib/libplds4.so +/usr/lib/libpng12.so.0.27.0 +/usr/lib/libpolkit-dbus.so.2.0.0 +/usr/lib/libpolkit.so.2.0.0 +/usr/lib/libpulse.so.0.7.1 +/usr/lib/libsasl2.so.2.0.22 +/usr/lib/libslp.so.1.0.1 +/tmp/.X0-lock +/usr/lib/libsmbios.so.2.1.0 +/usr/lib/libsmime3.so +/usr/lib/libssl3.so +/usr/lib/libstdc++.so.6.0.10 +/usr/lib/libtasn1.so.3.0.16 +/usr/lib/libxcb-render-util.so.0.0.0 +/usr/lib/libxcb-render.so.0.0.0 +/usr/lib/libxcb.so.1.1.0 +/usr/lib/NetworkManager/libnm-settings-plugin-ifupdown.so +/usr/lib/NetworkManager/libnm-settings-plugin-keyfile.so +/usr/lib/alsa-lib/libasound_module_conf_pulse.so +/usr/sbin/avahi-daemon +/usr/sbin/dmidecode +/usr/sbin/hid2hci +/usr/sbin/kernel-helper +/usr/sbin/laptop-detect +/usr/sbin/syslogd-listfiles +/usr/sbin/update-binfmts +/usr/lib/bluetooth/plugins/audio.so +/usr/lib/bluetooth/plugins/hal.so +/usr/lib/bluetooth/plugins/input.so +/usr/lib/bluetooth/plugins/netlink.so +/usr/lib/bluetooth/plugins/network.so +/usr/lib/bluetooth/plugins/serial.so +/usr/lib/bluetooth/plugins/service.so +/usr/lib/gio/modules/libgiogconf.so +/usr/lib/gio/modules/libgioremote-volume-monitor.so +/usr/lib/gio/modules/libgvfsdbus.so +/usr/lib/perl/5.10.0/Errno.pm +/usr/lib/perl/5.10.0/Fcntl.pm +/usr/lib/perl/5.10.0/POSIX.pm +/usr/lib/perl/5.10.0/XSLoader.pm +/usr/lib/perl/5.10.0/re.pm +/usr/lib/locale/en_GB.utf8/LC_ADDRESS +/usr/lib/locale/en_GB.utf8/LC_COLLATE +/usr/lib/locale/en_GB.utf8/LC_CTYPE +/usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION +/usr/lib/locale/en_GB.utf8/LC_MEASUREMENT +/usr/lib/locale/en_GB.utf8/LC_MONETARY +/usr/lib/locale/en_GB.utf8/LC_NAME +/usr/lib/locale/en_GB.utf8/LC_NUMERIC +/usr/lib/locale/en_GB.utf8/LC_PAPER +/usr/lib/locale/en_GB.utf8/LC_TELEPHONE +/usr/lib/locale/en_GB.utf8/LC_TIME +/usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES +/usr/share/acpi-support/power-funcs +/usr/share/acpi-support/state-funcs +/usr/share/alsa/alsa.conf +/usr/share/alsa/bluetooth.conf +/usr/share/alsa/pulse.conf +/usr/lib/perl/5.10.0/auto/Fcntl/Fcntl.so +/usr/lib/perl/5.10.0/auto/POSIX/POSIX.so +/usr/lib/perl/5.10.0/auto/POSIX/autosplit.ix +/usr/lib/perl/5.10.0/auto/POSIX/load_imports.al +/usr/lib/pm-utils/module.d/kernel +/usr/share/perl/5.10.0/AutoLoader.pm +/usr/share/perl/5.10.0/Carp.pm +/usr/share/perl/5.10.0/Exporter.pm +/usr/share/perl/5.10.0/constant.pm +/usr/share/perl/5.10.0/overload.pm +/usr/share/perl/5.10.0/strict.pm +/usr/share/perl/5.10.0/vars.pm +/usr/share/perl/5.10.0/warnings.pm +/usr/share/perl/5.10.0/Exporter/Heavy.pm +/usr/share/perl/5.10.0/Getopt/Long.pm +/usr/share/perl/5.10.0/Text/Tabs.pm +/usr/share/perl/5.10.0/Text/Wrap.pm +/usr/share/perl/5.10.0/Tie/Hash.pm +/usr/share/perl/5.10.0/warnings/register.pm +/usr/lib/pm-utils/defaults +/usr/lib/pm-utils/functions +/usr/lib/pm-utils/pm-functions +/usr/share/perl5/Binfmt/Format.pm +/usr/share/perl5/Binfmt/Lib.pm +/usr/lib/xorg/modules/libexa.so +/usr/lib/xorg/modules/libfb.so +/usr/lib/xorg/modules/libvgahw.so +/usr/lib/xorg/modules/drivers/intel_drv.so +/usr/lib/xorg/modules/extensions/libdbe.so +/usr/lib/xorg/modules/extensions/libdri.so +/usr/lib/xorg/modules/extensions/libdri2.so +/usr/lib/xorg/modules/extensions/libextmod.so +/usr/lib/xorg/modules/extensions/libglx.so +/usr/lib/xorg/modules/extensions/librecord.so +/usr/share/misc/pci.ids +/usr/share/ufw/ufw-init-functions +/usr/share/cups/banners/classified +/usr/share/cups/banners/confidential +/usr/share/cups/banners/secret +/usr/share/cups/banners/standard +/usr/share/cups/banners/topsecret +/usr/share/cups/banners/unclassified +/usr/share/cups/mime/command.types +/usr/share/cups/mime/cpdftocps.convs +/usr/share/cups/mime/imagetopdf.convs +/usr/share/cups/mime/imagetopdf.types +/usr/share/cups/mime/pdf.types +/usr/share/cups/mime/pdftopdf.convs +/usr/share/cups/mime/pdftoraster.convs +/usr/share/cups/mime/pstoraster.convs +/usr/share/cups/mime/texttopdf.convs +/usr/share/dbus-1/system-services/com.ubuntu.DeviceDriver.service +/usr/share/dbus-1/system-services/com.ubuntu.ScreenResolution.Mechanism.service +/usr/share/dbus-1/system-services/com.ubuntu.SystemService.service +/usr/share/dbus-1/system-services/com.ubuntu.checkbox.service +/usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service +/usr/share/dbus-1/system-services/org.freedesktop.ConsoleKit.service +/usr/share/dbus-1/system-services/org.freedesktop.NetworkManagerSystemSettings.service +/usr/share/dbus-1/system-services/org.freedesktop.PolicyKit.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.GroupsConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.HostsConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.IfacesConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.NFSConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.NTPConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.Platform.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.SMBConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.ServicesConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.TimeConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.UserConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.UsersConfig.service +/usr/share/dbus-1/system-services/org.freedesktop.SystemToolsBackends.service +/usr/share/dbus-1/system-services/org.freedesktop.nm_dispatcher.service +/usr/share/dbus-1/system-services/org.gnome.CPUFreqSelector.service +/usr/share/dbus-1/system-services/org.gnome.ClockApplet.Mechanism.service +/usr/share/dbus-1/system-services/org.gnome.GConf.Defaults.service +/usr/share/xserver-xorg/pci/apm.ids +/usr/share/xserver-xorg/pci/ark.ids +/usr/share/xserver-xorg/pci/chips.ids +/usr/share/xserver-xorg/pci/cirrus.ids +/usr/share/xserver-xorg/pci/geode.ids +/usr/share/xserver-xorg/pci/i128.ids +/usr/share/xserver-xorg/pci/i740.ids +/usr/share/xserver-xorg/pci/intel.ids +/usr/share/xserver-xorg/pci/mach64.ids +/usr/share/xserver-xorg/pci/mga.ids +/usr/share/xserver-xorg/pci/neomagic.ids +/usr/share/xserver-xorg/pci/nv.ids +/usr/share/xserver-xorg/pci/openchrome.ids +/usr/share/xserver-xorg/pci/r128.ids +/usr/share/xserver-xorg/pci/radeon.ids +/usr/share/xserver-xorg/pci/rendition.ids +/usr/share/xserver-xorg/pci/s3.ids +/usr/share/xserver-xorg/pci/s3virge.ids +/usr/share/xserver-xorg/pci/savage.ids +/usr/share/xserver-xorg/pci/siliconmotion.ids +/usr/share/xserver-xorg/pci/sis.ids +/usr/share/xserver-xorg/pci/tdfx.ids +/usr/share/xserver-xorg/pci/trident.ids +/usr/share/xserver-xorg/pci/tseng.ids +/usr/share/xserver-xorg/pci/vmware.ids +/usr/share/xserver-xorg/pci/voodoo.ids +/sbin/acpi_available +/sbin/alsactl +/sbin/apm_available +/sbin/apparmor_parser +/sbin/findfs +/sbin/fsck +/sbin/fsck.ext3 +/sbin/hdparm +/sbin/ifconfig +/sbin/ifup +/sbin/killall5 +/sbin/logsave +/sbin/lrm-manager +/sbin/modprobe +/sbin/on_ac_power +/sbin/runlevel +/sbin/start-stop-daemon +/sbin/swapon +/sbin/sysctl +/sbin/telinit +/sbin/udevadm +/sbin/usplash_write +/usr/lib/hal/debian-setup-keyboard +/usr/lib/hal/hal-acl-tool +/usr/lib/hal/hal-storage-cleanup-all-mountpoints +/usr/lib/hal/hal-system-power-pm-is-supported +/usr/lib/hal/hald-probe-input +/usr/lib/hal/hald-probe-serial +/usr/lib/hal/hald-probe-storage +/usr/lib/hal/hald-probe-video4linux +/usr/lib/hal/hald-probe-volume +/usr/share/gvfs/remote-volume-monitors/gphoto2.monitor +/usr/share/gvfs/remote-volume-monitors/hal.monitor +/usr/share/zoneinfo/Europe/London +/usr/share/locale-langpack/en_GB/LC_MESSAGES/gdm.mo +/usr/share/locale-langpack/en_GB/LC_MESSAGES/glib20.mo +/usr/share/locale-langpack/en_GB/LC_MESSAGES/grep.mo +/usr/share/locale-langpack/en_GB/LC_MESSAGES/libc.mo +/usr/share/locale-langpack/en_GB/LC_MESSAGES/upstart.mo +/var/log/dmesg.0 +/var/lib/acpi-support/powerstate +/var/lib/dbus/machine-id +/var/cache/hald/fdi-cache +/var/lib/binfmts/cli +/var/lib/binfmts/python2.6 +/var/cache/cups/job.cache +/var/lib/misc/usb.ids +/var/lib/alsa/asound.state +/var/log/gdm/:0.log.1 --- readahead-list-0.20050517.0220.orig/debian/changelog +++ readahead-list-0.20050517.0220/debian/changelog @@ -0,0 +1,226 @@ +readahead-list (1:0.20050517.0220-1ubuntu5) jaunty; urgency=low + + * Regenerate boot.list using an installation of 20090414.2, excluding + kernel modules. + + -- Scott James Remnant Mon, 20 Apr 2009 12:51:28 +0100 + +readahead-list (1:0.20050517.0220-1ubuntu4) intrepid; urgency=low + + * Regenerate boot.list using an installation of 20081026, excluding + kernel modules. + + -- Scott James Remnant Mon, 27 Oct 2008 12:02:41 +0000 + +readahead-list (1:0.20050517.0220-1ubuntu3) intrepid; urgency=low + + * Regenerate boot.list using an installation of 20081021.5. + * Begin excluding kernel modules from readahead list. + + -- Scott James Remnant Tue, 21 Oct 2008 23:44:59 +0100 + +readahead-list (1:0.20050517.0220-1ubuntu2) intrepid; urgency=low + + * Regenerate boot.list using an installation of 20080918. + + * Increase inotify watches before profiling to get a more accurate + profile. + + -- Scott James Remnant Wed, 24 Sep 2008 11:39:58 -0700 + +readahead-list (1:0.20050517.0220-1ubuntu1) intrepid; urgency=low + + * Rebase the package against the same version from Debian (which was + taken from ours anyway), including the minor changes made in that + changelog. + + * Fix maintainer field to match Ubuntu policy, rather than contain the + address of someone unlikely to respond to mails. LP: #273880. + * Move Mathias's g++ 4.3 build fix into the debian/patches directory, + we _do_ have a patch system. + + -- Scott James Remnant Wed, 24 Sep 2008 07:14:48 -0700 + +readahead-list (1:0.20050517.0220-1) unstable; urgency=low + + * Initial upload based on Ubuntu package version + 1:0.20050517.0220-0ubuntu11 (Closes: #325885). + * Include Julian Andres Klode as uploader, as he intended + to upload this package half a year ago. + * Update standards-version to 3.7.3. No changes needed. + * Add LSB dependency information to init.d scripts. + * Make sure to run init.d/stop-readahead in runlevels 3, 4 and 5 too. + * Drop transitional package readahead-list used on Ubuntu. + * Add patch 51-readahead-watch-mansect.patch to fix manual page + section for readahead-list(8). + + -- Petter Reinholdtsen Sat, 12 Jan 2008 18:48:12 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu14) hardy; urgency=low + + * Regenerate boot.list using an installation of 20080421. + + -- Scott James Remnant Mon, 21 Apr 2008 23:13:42 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu13) hardy; urgency=low + + * Regenerate boot.list using a slightly modified installation of 20080410. + + -- Scott James Remnant Thu, 10 Apr 2008 20:50:31 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu12) hardy; urgency=low + + * Fix build failure with g++-4.3. + + -- Matthias Klose Thu, 24 Jan 2008 10:25:43 +0000 + +readahead-list (1:0.20050517.0220-0ubuntu11) gutsy; urgency=low + + * Regenerate boot.list using an installation of 20071010. + + -- Scott James Remnant Thu, 11 Oct 2007 15:59:09 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu10) gutsy; urgency=low + + * Regenerate boot.list using an installation of 20071002. + + -- Scott James Remnant Wed, 03 Oct 2007 19:52:09 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu9) feisty; urgency=low + + * Regenerate boot.list using an installation of 20070412. + + -- Scott James Remnant Fri, 13 Apr 2007 16:39:24 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu8) feisty; urgency=low + + * Handle the readahead lists being removed, exiting silently; fixing both + the bug where them being missing causes it to fail -- and also the + request for it to be easy to disable. LP: #65793. + + * Regenerate boot.list using an installation of Feisty Beta. + + -- Scott James Remnant Wed, 28 Mar 2007 13:54:44 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu7) edgy; urgency=low + + * Regenerate boot.list using an installation of Edgy RC. + + -- Scott James Remnant Fri, 20 Oct 2006 17:53:13 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu6) edgy; urgency=low + + * Regenerate boot.list using an installation of Edgy Beta. + + -- Scott James Remnant Thu, 5 Oct 2006 16:52:25 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu5) edgy; urgency=low + + * Increase the usplash timeout now it's in the foreground + + -- Scott James Remnant Thu, 21 Sep 2006 03:39:40 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu4) edgy; urgency=low + + * Regenerate boot.list using an installation of Edgy Knot 3. + + * Add -s option to readahead-list that sorts the files by device, block + and inode before processing. + * Sort the files on boot, as the order in the lists is always wrong after + the first upgrade; the cost is not noticeable even with accurate lists. + + * Run readahead in the foreground, not the background. It appears that + this is just as fast, and in fact usually faster because we don't end + up reading files twice. + + -- Scott James Remnant Wed, 20 Sep 2006 05:09:10 +0100 + +readahead-list (1:0.20050517.0220-0ubuntu3) dapper; urgency=low + + * Regenerate source package, it appears an earlier version with a typo + in the rules file got uploaded. + + -- Scott James Remnant Fri, 24 Feb 2006 12:44:42 +0000 + +readahead-list (1:0.20050517.0220-0ubuntu2) dapper; urgency=low + + * readahead.init: + - Remove old code left in by accident. + - Avoid timing out usplash if we can, after all that needs profiling too. + - Really write the list when profiling. + * readahead-desktop.init: + - New script for people with /usr or /var on different disks (hi, seb!) + - Watches just the newly mounted filesystems + * stop-readahead.init: + - Another new script to stop readahead-watch processes and cause them + to sort and write out their lists. + + * 50-readahead-watch.patch: + - Fix the pid filename to be "readahead-watch.pid" instead. + - When terminating iterate all open files and note whether any of them + are opened for writing, eradicates those from the list we saw get + opened but not closed. (Yes, you, Xorg.0.log) + - Sort the file list by the on-disk block position if we can, rather + than just dev/ino. + + * Refresh the lists using the new scripts and tools to make them rather + more sensible. + + -- Scott James Remnant Thu, 23 Feb 2006 15:43:45 +0000 + +readahead-list (1:0.20050517.0220-0ubuntu1) dapper; urgency=low + + * New upstream release: + - fix assert on gcc-3.3 + - source code cleanup. + * Fix up packaging: + - clean up and remove generated cruft. + - put full licence preample into debian/copyright (from my template). + - put in a patch system (copy my template rules) + * Move readahead-list into /sbin so it's actually on seb's root filesystem. + + * 50-readahead-watch.patch: + - adds a new readahead-watch tool that uses inotify to watch the + filesystem for open events, used for profiling the boot sequence + - removed the filelist-order tool from the package + + -- Scott James Remnant Mon, 20 Feb 2006 15:54:28 +0000 + +readahead-list (1:0.20050328.0142-0ubuntu4) breezy; urgency=low + + * Install missing list of files to read ahead. + + -- Tollef Fog Heen Fri, 16 Sep 2005 09:24:55 +0200 + +readahead-list (1:0.20050328.0142-0ubuntu3) breezy; urgency=low + + * Don't start/restart readahead on upgrades, as that is silly. + + -- Tollef Fog Heen Thu, 15 Sep 2005 19:50:23 +0200 + +readahead-list (1:0.20050328.0142-0ubuntu2) breezy; urgency=low + + * Make an empty readahead-list package which Depends on readahead. This + should solve any transitional problems. + + -- Tollef Fog Heen Thu, 15 Sep 2005 12:28:42 +0200 + +readahead-list (1:0.20050328.0142-0ubuntu1) breezy; urgency=low + + * We need to add an epoch to be newer than the older readahead. + + -- Tollef Fog Heen Tue, 13 Sep 2005 11:30:27 +0200 + +readahead-list (0.20050328.0142-1ubuntu1) breezy; urgency=low + + * Make the binary package be called readahead, to work around apt + problem, Ubuntu #14842, adjust Provides et al appropriately + * Remove g++ 4 stuff from build-deps as this is default already. + + -- Tollef Fog Heen Tue, 13 Sep 2005 09:58:59 +0200 + +readahead-list (0.20050328.0142-1) breezy; urgency=low + + * First upload. + + -- Thom May Mon, 11 Apr 2005 19:39:04 +0000 --- readahead-list-0.20050517.0220.orig/debian/compat +++ readahead-list-0.20050517.0220/debian/compat @@ -0,0 +1 @@ +4 --- readahead-list-0.20050517.0220.orig/debian/patches/51-readahead-watch-mansect.patch +++ readahead-list-0.20050517.0220/debian/patches/51-readahead-watch-mansect.patch @@ -0,0 +1,9 @@ +unchanged: +--- readahead-list-0.20050517.0220.orig/doc/readahead-list.8.in ++++ readahead-list-0.20050517.0220/doc/readahead-list.8.in +@@ -1,4 +1,4 @@ +-.TH READAHEAD-LIST: "1" "March 2005" "readahead-list: @PACKAGE_VERSION@" "User Commands" ++.TH READAHEAD-LIST: "8" "March 2005" "readahead-list: @PACKAGE_VERSION@" "User Commands" + .SH NAME + readahead-list: \- manual page for readahead-list: @PACKAGE_VERSION@ + .SH SYNOPSIS --- readahead-list-0.20050517.0220.orig/debian/patches/50-readahead-watch.patch +++ readahead-list-0.20050517.0220/debian/patches/50-readahead-watch.patch @@ -0,0 +1,888 @@ +diff -ruNp readahead-list-0.20050517.0220~/doc/Makefile.am readahead-list-0.20050517.0220/doc/Makefile.am +--- readahead-list-0.20050517.0220~/doc/Makefile.am 2005-03-28 07:13:30.000000000 +0100 ++++ readahead-list-0.20050517.0220/doc/Makefile.am 2006-02-23 15:46:35.000000000 +0000 +@@ -8,8 +8,8 @@ + # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the + # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +-man_MANS = filelist-order.1 readahead-list.8 +-EXTRA_DIST = filelist-order.1.in readahead-list.8.in ++man_MANS = filelist-order.1 readahead-list.8 readahead-watch.8 ++EXTRA_DIST = filelist-order.1.in readahead-list.8.in readahead-watch.8.in + CLEANFILES = $(man_MANS) + SUFFIXES = .in + +diff -ruNp readahead-list-0.20050517.0220~/doc/Makefile.in readahead-list-0.20050517.0220/doc/Makefile.in +--- readahead-list-0.20050517.0220~/doc/Makefile.in 2005-05-17 03:34:20.000000000 +0100 ++++ readahead-list-0.20050517.0220/doc/Makefile.in 2006-02-23 15:46:35.000000000 +0000 +@@ -154,8 +154,8 @@ sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +-man_MANS = filelist-order.1 readahead-list.8 +-EXTRA_DIST = filelist-order.1.in readahead-list.8.in ++man_MANS = filelist-order.1 readahead-list.8 readahead-watch.8 ++EXTRA_DIST = filelist-order.1.in readahead-list.8.in readahead-watch.8.in + CLEANFILES = $(man_MANS) + SUFFIXES = .in + all: all-am +diff -ruNp readahead-list-0.20050517.0220~/doc/readahead-watch.8.in readahead-list-0.20050517.0220/doc/readahead-watch.8.in +--- readahead-list-0.20050517.0220~/doc/readahead-watch.8.in 1970-01-01 01:00:00.000000000 +0100 ++++ readahead-list-0.20050517.0220/doc/readahead-watch.8.in 2006-02-23 15:46:35.000000000 +0000 +@@ -0,0 +1,10 @@ ++.TH READAHEAD-WATCH: "8" "Feburary 2006" "readahead-watch: @PACKAGE_VERSION@" "User Commands" ++.SH NAME ++readahead-watch: \- manual page for readahead-watch: @PACKAGE_VERSION@ ++.SH SYNOPSIS ++.B readahead-watch ++[\fB-o\fR \fIOUTPUT\-FILE\fR] [\fIMOUNT\-POINT\fR]... ++.SH DESCRIPTION ++Watches the mount points given, or the root filesystem, for files opened ++during the boot sequence and closed without writing to them. Orders the ++list by on-disk position and then writes it to the output file. +diff -ruNp readahead-list-0.20050517.0220~/src/Makefile.am readahead-list-0.20050517.0220/src/Makefile.am +--- readahead-list-0.20050517.0220~/src/Makefile.am 2005-03-28 07:25:00.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/Makefile.am 2006-02-23 15:46:35.000000000 +0000 +@@ -11,8 +11,9 @@ + #DEFAULT_INCLUDES = -I/usr/src/linux/include + + bin_PROGRAMS = filelist-order +-sbin_PROGRAMS = readahead-list ++sbin_PROGRAMS = readahead-list readahead-watch + filelist_order_SOURCES = filelist-order.cxx + readahead_list_SOURCES = readahead-list.c ++readahead_watch_SOURCES = readahead-watch.c inotify.h inotify-syscalls.h + + CLEANFILES = core +diff -ruNp readahead-list-0.20050517.0220~/src/Makefile.in readahead-list-0.20050517.0220/src/Makefile.in +--- readahead-list-0.20050517.0220~/src/Makefile.in 2005-05-17 03:34:20.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/Makefile.in 2006-02-23 15:46:35.000000000 +0000 +@@ -26,7 +26,7 @@ + + #DEFAULT_INCLUDES = -I/usr/src/linux/include + +-SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) ++SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) $(readahead_watch_SOURCES) + + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ +@@ -51,7 +51,7 @@ POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ + bin_PROGRAMS = filelist-order$(EXEEXT) +-sbin_PROGRAMS = readahead-list$(EXEEXT) ++sbin_PROGRAMS = readahead-list$(EXEEXT) readahead-watch$(EXEEXT) + subdir = src + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +@@ -71,6 +71,9 @@ filelist_order_LDADD = $(LDADD) + am_readahead_list_OBJECTS = readahead-list.$(OBJEXT) + readahead_list_OBJECTS = $(am_readahead_list_OBJECTS) + readahead_list_LDADD = $(LDADD) ++am_readahead_watch_OBJECTS = readahead-watch.$(OBJEXT) ++readahead_watch_OBJECTS = $(am_readahead_watch_OBJECTS) ++readahead_watch_LDADD = $(LDADD) + DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) + depcomp = $(SHELL) $(top_srcdir)/config/depcomp + am__depfiles_maybe = depfiles +@@ -83,8 +86,8 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_IN + CXXLD = $(CXX) + CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +-SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) +-DIST_SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) ++SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) $(readahead_watch_SOURCES) ++DIST_SOURCES = $(filelist_order_SOURCES) $(readahead_list_SOURCES) $(readahead_watch_SOURCES) + ETAGS = etags + CTAGS = ctags + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +@@ -182,6 +185,7 @@ sysconfdir = @sysconfdir@ + target_alias = @target_alias@ + filelist_order_SOURCES = filelist-order.cxx + readahead_list_SOURCES = readahead-list.c ++readahead_watch_SOURCES = readahead-watch.c inotify.h inotify-syscalls.h + CLEANFILES = core + all: all-am + +@@ -268,6 +272,9 @@ filelist-order$(EXEEXT): $(filelist_orde + readahead-list$(EXEEXT): $(readahead_list_OBJECTS) $(readahead_list_DEPENDENCIES) + @rm -f readahead-list$(EXEEXT) + $(LINK) $(readahead_list_LDFLAGS) $(readahead_list_OBJECTS) $(readahead_list_LDADD) $(LIBS) ++readahead-watch$(EXEEXT): $(readahead_watch_OBJECTS) $(readahead_watch_DEPENDENCIES) ++ @rm -f readahead-watch$(EXEEXT) ++ $(LINK) $(readahead_watch_LDFLAGS) $(readahead_watch_OBJECTS) $(readahead_watch_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +@@ -277,6 +284,7 @@ distclean-compile: + + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filelist-order.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readahead-list.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readahead-watch.Po@am__quote@ + + .c.o: + @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +diff -ruNp readahead-list-0.20050517.0220~/src/inotify-syscalls.h readahead-list-0.20050517.0220/src/inotify-syscalls.h +--- readahead-list-0.20050517.0220~/src/inotify-syscalls.h 1970-01-01 01:00:00.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/inotify-syscalls.h 2006-02-23 15:46:35.000000000 +0000 +@@ -0,0 +1,85 @@ ++#ifndef _LINUX_INOTIFY_SYSCALLS_H ++#define _LINUX_INOTIFY_SYSCALLS_H ++ ++#include ++#include ++#include ++ ++#if defined(__i386__) ++# define __NR_inotify_init 291 ++# define __NR_inotify_add_watch 292 ++# define __NR_inotify_rm_watch 293 ++#elif defined(__x86_64__) ++# define __NR_inotify_init 253 ++# define __NR_inotify_add_watch 254 ++# define __NR_inotify_rm_watch 255 ++#elif defined(__alpha__) ++# define __NR_inotify_init 444 ++# define __NR_inotify_add_watch 445 ++# define __NR_inotify_rm_watch 446 ++#elif defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__) ++# define __NR_inotify_init 275 ++# define __NR_inotify_add_watch 276 ++# define __NR_inotify_rm_watch 277 ++#elif defined(__sparc__) || defined (__sparc64__) ++# define __NR_inotify_init 151 ++# define __NR_inotify_add_watch 152 ++# define __NR_inotify_rm_watch 156 ++#elif defined (__ia64__) ++# define __NR_inotify_init 1277 ++# define __NR_inotify_add_watch 1278 ++# define __NR_inotify_rm_watch 1279 ++#elif defined (__s390__) || defined (__s390x__) ++# define __NR_inotify_init 284 ++# define __NR_inotify_add_watch 285 ++# define __NR_inotify_rm_watch 286 ++#elif defined (__arm__) ++# define __NR_inotify_init 316 ++# define __NR_inotify_add_watch 317 ++# define __NR_inotify_rm_watch 318 ++#elif defined (__SH4__) ++# define __NR_inotify_init 290 ++# define __NR_inotify_add_watch 291 ++# define __NR_inotify_rm_watch 292 ++#elif defined (__SH5__) ++# define __NR_inotify_init 318 ++# define __NR_inotify_add_watch 319 ++# define __NR_inotify_rm_watch 320 ++#else ++# warning "Unsupported architecture" ++#endif ++ ++#if defined(__i386__) || defined(__x86_64) || defined(__alpha__) || defined(__ppc__) || defined(__sparc__) || defined(__powerpc__) || defined(__powerpc64__) || defined(__ia64__) || defined(__s390__) ++static inline int inotify_init (void) ++{ ++ return syscall (__NR_inotify_init); ++} ++ ++static inline int inotify_add_watch (int fd, const char *name, __u32 mask) ++{ ++ return syscall (__NR_inotify_add_watch, fd, name, mask); ++} ++ ++static inline int inotify_rm_watch (int fd, __u32 wd) ++{ ++ return syscall (__NR_inotify_rm_watch, fd, wd); ++} ++#else ++static inline int inotify_init (void) ++{ ++ return -1; ++} ++ ++static inline int inotify_add_watch (int fd, const char *name, __u32 mask) ++{ ++ return -1; ++} ++ ++static inline int inotify_rm_watch (int fd, __u32 wd) ++{ ++ return -1; ++} ++ ++#endif ++ ++#endif /* _LINUX_INOTIFY_SYSCALLS_H */ +diff -ruNp readahead-list-0.20050517.0220~/src/inotify.h readahead-list-0.20050517.0220/src/inotify.h +--- readahead-list-0.20050517.0220~/src/inotify.h 1970-01-01 01:00:00.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/inotify.h 2006-02-23 15:46:35.000000000 +0000 +@@ -0,0 +1,113 @@ ++/* ++ * Inode based directory notification for Linux ++ * ++ * Copyright (C) 2005 John McCutchan ++ */ ++ ++#ifndef _LINUX_INOTIFY_H ++#define _LINUX_INOTIFY_H ++ ++#include ++ ++/* ++ * struct inotify_event - structure read from the inotify device for each event ++ * ++ * When you are watching a directory, you will receive the filename for events ++ * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd. ++ */ ++struct inotify_event { ++ __s32 wd; /* watch descriptor */ ++ __u32 mask; /* watch mask */ ++ __u32 cookie; /* cookie to synchronize two events */ ++ __u32 len; /* length (including nulls) of name */ ++ char name[0]; /* stub for possible name */ ++}; ++ ++/* the following are legal, implemented events that user-space can watch for */ ++#define IN_ACCESS 0x00000001 /* File was accessed */ ++#define IN_MODIFY 0x00000002 /* File was modified */ ++#define IN_ATTRIB 0x00000004 /* Metadata changed */ ++#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */ ++#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */ ++#define IN_OPEN 0x00000020 /* File was opened */ ++#define IN_MOVED_FROM 0x00000040 /* File was moved from X */ ++#define IN_MOVED_TO 0x00000080 /* File was moved to Y */ ++#define IN_CREATE 0x00000100 /* Subfile was created */ ++#define IN_DELETE 0x00000200 /* Subfile was deleted */ ++#define IN_DELETE_SELF 0x00000400 /* Self was deleted */ ++#define IN_MOVE_SELF 0x00000800 /* Self was moved */ ++ ++/* the following are legal events. they are sent as needed to any watch */ ++#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ ++#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ ++#define IN_IGNORED 0x00008000 /* File was ignored */ ++ ++/* helper events */ ++#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */ ++#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ ++ ++/* special flags */ ++#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */ ++#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */ ++#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */ ++#define IN_ISDIR 0x40000000 /* event occurred against dir */ ++#define IN_ONESHOT 0x80000000 /* only send event once */ ++ ++/* ++ * All of the events - we build the list by hand so that we can add flags in ++ * the future and not break backward compatibility. Apps will get only the ++ * events that they originally wanted. Be sure to add new events here! ++ */ ++#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ ++ IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ ++ IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \ ++ IN_MOVE_SELF) ++ ++#ifdef __KERNEL__ ++ ++#include ++#include ++#include ++ ++#ifdef CONFIG_INOTIFY ++ ++extern void inotify_inode_queue_event(struct inode *, __u32, __u32, ++ const char *); ++extern void inotify_dentry_parent_queue_event(struct dentry *, __u32, __u32, ++ const char *); ++extern void inotify_unmount_inodes(struct list_head *); ++extern void inotify_inode_is_dead(struct inode *); ++extern u32 inotify_get_cookie(void); ++ ++#else ++ ++static inline void inotify_inode_queue_event(struct inode *inode, ++ __u32 mask, __u32 cookie, ++ const char *filename) ++{ ++} ++ ++static inline void inotify_dentry_parent_queue_event(struct dentry *dentry, ++ __u32 mask, __u32 cookie, ++ const char *filename) ++{ ++} ++ ++static inline void inotify_unmount_inodes(struct list_head *list) ++{ ++} ++ ++static inline void inotify_inode_is_dead(struct inode *inode) ++{ ++} ++ ++static inline u32 inotify_get_cookie(void) ++{ ++ return 0; ++} ++ ++#endif /* CONFIG_INOTIFY */ ++ ++#endif /* __KERNEL __ */ ++ ++#endif /* _LINUX_INOTIFY_H */ +diff -ruNp readahead-list-0.20050517.0220~/src/readahead-watch.c readahead-list-0.20050517.0220/src/readahead-watch.c +--- readahead-list-0.20050517.0220~/src/readahead-watch.c 1970-01-01 01:00:00.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/readahead-watch.c 2006-02-23 18:13:15.000000000 +0000 +@@ -0,0 +1,554 @@ ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define _GNU_SOURCE ++#include ++ ++#include "inotify.h" ++#include "inotify-syscalls.h" ++ ++ ++/* Where to write our pid file */ ++#define PID_FILE "/var/run/readahead-watch.pid" ++ ++/* Size of buffer to read inotify events from. */ ++#define BUF_LEN 16384 ++ ++ ++/* To watch a directory we also need to watch all its children, we do ++ * this breadth-first and non-recursively for speed and efficiency reasons. ++ * ++ * This is the structure we use to hold the queue, we store the dev_t so ++ * we don't accidentally traverse onto different filesystems like /proc. ++ */ ++struct queue { ++ char *path; ++ dev_t dev; ++ struct queue *next; ++}; ++ ++/* Once we're watching a directory we need to keep its path in memory and ++ * associate that with the watch descriptor because the event only contains ++ * the latter. ++ * ++ * This is the structure we use for that. ++ */ ++struct watch { ++ char *path; ++ int wd; ++ ++ struct watch *next; ++}; ++ ++/* For every file accessed we want to know whether it was closed within the ++ * boot sequence, and whether it was written to. We store these as an array ++ * of members of this structure, which one member for each file. ++ */ ++struct opened { ++ char *path; ++ dev_t dev; ++ ino_t ino; ++ int block; ++ ++ int closed; ++ int written; ++}; ++ ++ ++/* Program name */ ++const char *program_name = NULL; ++ ++/* Set to non-zero by the SIGTERM handler so the main loop exits */ ++static int finish = 0; ++ ++/* List of active directory watches */ ++static struct watch *watches = NULL; ++ ++/* Array of files opened */ ++static struct opened *opened = NULL; ++static int opened_len = 0; ++ ++/* Inotify file descriptor */ ++static int inotify_fd = -1; ++ ++ ++/* Command-line options */ ++static const char opts[] = "o:"; ++static const struct option longopts[] = { ++ { "output", required_argument, NULL, 'o' }, ++ { "help", no_argument, NULL, 0400 + 'h' }, ++ { "version", no_argument, NULL, 0400 + 'v' }, ++ { NULL, no_argument, NULL, 0 } ++}; ++ ++ ++/* Forward prototypes */ ++static void watch_directory (const char *path); ++static void process_events (const char *buf, ssize_t len); ++static void file_modes (void); ++static void find_blocks (void); ++static void write_list (const char *path); ++ ++ ++static void ++print_usage (void) ++{ ++ printf ("Usage: %s [OPTION]... DIR...\n", program_name); ++ printf ("Generates readahead lists by watching open events with inotify.\n"); ++ printf ("\n"); ++ printf ("Mandatory arguments to long options are mandatory for short options too.\n"); ++ printf ("\n"); ++ printf ("Options:\n" ++ " -o, --output=FILE write output to this file.\n" ++ " --help display this help and exit.\n" ++ " --version output version information and exit.\n"); ++ printf ("\n"); ++ printf ("Report bugs to \n"); ++} ++ ++static void ++suggest_help (void) ++{ ++ fprintf (stderr, "Try `%s --help' for more information.\n", ++ program_name); ++} ++ ++static void ++print_version (void) ++{ ++ printf ("%s 1.0\n", program_name); ++ printf ("Written by Scott James Remnant.\n"); ++ printf ("\n"); ++ printf ("Copyright (C) 2006 Canonical ltd.\n"); ++ printf ("This is free software; see the source for copying conditions. There is NO\n" ++ "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); ++} ++ ++static void ++signal_handler (int signum) ++{ ++ switch (signum) { ++ case SIGTERM: ++ finish = 1; ++ break; ++ } ++} ++ ++static void ++become_daemon (void) ++{ ++ FILE *pid_file; ++ pid_t pid; ++ ++ pid = fork (); ++ switch (pid) { ++ case -1: ++ /* Error - print reason and exit */ ++ fprintf (stderr, "%s: unable to become a daemon: %s\n", ++ program_name, strerror (errno)); ++ exit (1); ++ case 0: ++ /* Child - carry on in main flow */ ++ break; ++ default: ++ /* Parent - write child pid and exit */ ++ pid_file = fopen (PID_FILE, "w"); ++ if (pid_file) { ++ fprintf (pid_file, "%d\n", pid); ++ fclose (pid_file); ++ } ++ ++ exit (0); ++ } ++ ++ /* Become session leader */ ++ setsid (); ++ ++ /* Change working directory */ ++ chdir ("/"); ++ ++ /* Clear file creation mask */ ++ umask (0133); ++} ++ ++ ++int ++main (int argc, ++ char *argv[]) ++{ ++ const char *output_file = NULL; ++ int opt; ++ ++ program_name = argv[0]; ++ ++ while ((opt = getopt_long (argc, argv, opts, longopts, NULL)) != -1) { ++ switch (opt) { ++ case 'o': ++ output_file = optarg; ++ break; ++ case 0400 + 'h': ++ print_usage (); ++ return 0; ++ case 0400 + 'v': ++ print_version (); ++ return 0; ++ case '?': ++ suggest_help (); ++ return 2; ++ default: ++ /* Not reached */ ++ abort(); ++ } ++ } ++ ++ if (! output_file) { ++ fprintf (stderr, "%s: no output file specified\n", ++ program_name); ++ suggest_help (); ++ return 2; ++ } ++ ++ ++ /* Initialise inotify */ ++ inotify_fd = inotify_init (); ++ if (inotify_fd < 0) { ++ fprintf (stderr, "%s: failed to initialise inotify: %s\n", ++ program_name, strerror (errno)); ++ return 1; ++ } ++ ++ /* Watch directories on the command line, or / if none specified */ ++ if (optind >= argc) ++ watch_directory ("/"); ++ for (opt = optind; opt < argc; opt++) ++ watch_directory (argv[opt]); ++ ++ ++ /* Initialisation complete, go into the background */ ++ become_daemon (); ++ ++ /* Setup signals */ ++ signal (SIGTERM, signal_handler); ++ ++ while (! finish) { ++ char buf[BUF_LEN]; ++ ssize_t len; ++ ++ /* Read events from the inotify socket */ ++ len = read (inotify_fd, buf, BUF_LEN); ++ if (len > 0) { ++ process_events (buf, len); ++ } else if (errno != EINTR) { ++ break; ++ } ++ } ++ ++ /* Figure out whether any of the still-open files are opened for ++ * writing ++ */ ++ file_modes (); ++ ++ /* Find the on-disk block of all the files */ ++ find_blocks (); ++ ++ write_list (output_file); ++ ++ return 0; ++} ++ ++static void ++watch_directory (const char *path) ++{ ++ struct stat statbuf; ++ struct dirent *dirent; ++ struct queue *queue, *end; ++ DIR *dir; ++ int wd; ++ ++ if (lstat (path, &statbuf) < 0) ++ return; ++ ++ if (! S_ISDIR (statbuf.st_mode)) ++ return; ++ ++ queue = end = malloc (sizeof (struct queue)); ++ queue->path = strdup (path); ++ queue->dev = statbuf.st_dev; ++ queue->next = NULL; ++ ++ for (; queue; queue = queue->next) { ++ struct watch *watch; ++ ++ /* Add a watch on the directory */ ++ wd = inotify_add_watch (inotify_fd, queue->path, ++ IN_OPEN | IN_CLOSE | IN_CREATE); ++ if (wd < 0) ++ continue; ++ ++ watch = malloc (sizeof (struct watch)); ++ watch->path = queue->path; ++ watch->wd = wd; ++ watch->next = watches; ++ watches = watch; ++ ++ /* Queue sub-directories for adding */ ++ dir = opendir (queue->path); ++ if (! dir) ++ continue; ++ ++ while ((dirent = readdir (dir)) != NULL) { ++ char subdir[PATH_MAX]; ++ ++ if (! strcmp (dirent->d_name, ".")) ++ continue; ++ if (! strcmp (dirent->d_name, "..")) ++ continue; ++ ++ strcpy (subdir, queue->path); ++ if (strcmp (queue->path, "/")) ++ strcat (subdir, "/"); ++ strcat (subdir, dirent->d_name); ++ ++ if (lstat (subdir, &statbuf) < 0) ++ continue; ++ ++ if (! S_ISDIR (statbuf.st_mode)) ++ continue; ++ ++ if (statbuf.st_dev != queue->dev) ++ continue; ++ ++ end->next = malloc (sizeof (struct queue)); ++ ++ end = end->next; ++ end->path = strdup (subdir); ++ end->dev = statbuf.st_dev; ++ end->next = NULL; ++ } ++ ++ closedir (dir); ++ } ++} ++ ++static void ++process_events (const char *buf, ++ ssize_t len) ++{ ++ ssize_t start; ++ ++ /* Process events */ ++ start = 0; ++ while (start < len) { ++ struct inotify_event event; ++ struct stat statbuf; ++ struct watch *watch; ++ const char *filename; ++ char path[PATH_MAX]; ++ int i; ++ ++ /* Copy the event */ ++ memcpy (&event, &buf[start], sizeof (event)); ++ start += sizeof (event); ++ filename = &buf[start]; ++ start += event.len; ++ ++ /* Find the watch descriptor */ ++ for (watch = watches; watch; watch = watch->next) ++ if (watch->wd == event.wd) ++ break; ++ if (! watch) ++ continue; ++ ++ /* Make a copy of the complete path */ ++ strcpy (path, watch->path); ++ if (strcmp (watch->path, "/")) ++ strcat (path, "/"); ++ if (event.len) ++ strcat (path, filename); ++ ++ /* Watch newly created directories */ ++ if (event.mask & IN_CREATE) ++ watch_directory (path); ++ ++ /* Discard events not directly an open or close */ ++ if (! event.mask & (IN_OPEN | IN_CLOSE)) ++ continue; ++ ++ ++ /* Find an existing record for the file */ ++ for (i = 0; i < opened_len; i++) ++ if (! strcmp (opened[i].path, path)) ++ break; ++ ++ /* No record found, make a new one */ ++ if (i == opened_len) { ++ if (lstat (path, &statbuf) < 0) ++ continue; ++ ++ /* Only count regular files */ ++ if (! S_ISREG (statbuf.st_mode)) ++ continue; ++ ++ opened_len++; ++ ++ opened = realloc (opened, sizeof (struct opened) * opened_len); ++ opened[i].path = strdup (path); ++ opened[i].dev = statbuf.st_dev; ++ opened[i].ino = statbuf.st_ino; ++ opened[i].closed = 0; ++ opened[i].written = 0; ++ } ++ ++ if (event.mask & IN_OPEN) ++ opened[i].closed = 0; ++ if (event.mask & IN_CLOSE) ++ opened[i].closed = 1; ++ if (event.mask & IN_CLOSE_WRITE) ++ opened[i].written = 1; ++ } ++} ++ ++static void ++file_modes (void) ++{ ++ DIR *proc; ++ struct dirent *dirent; ++ ++ /* Iterate /proc and look at each process's fd directory */ ++ proc = opendir ("/proc"); ++ if (! proc) ++ return; ++ ++ while ((dirent = readdir (proc)) != NULL) { ++ DIR *procfd; ++ struct dirent *fdent; ++ char fddir[PATH_MAX]; ++ ++ if (! isdigit (dirent->d_name[0])) ++ continue; ++ ++ sprintf (fddir, "/proc/%s/fd", dirent->d_name); ++ procfd = opendir (fddir); ++ if (! procfd) ++ continue; ++ ++ while ((fdent = readdir (procfd))) { ++ struct stat statbuf; ++ char link[PATH_MAX], path[PATH_MAX]; ++ int len, i; ++ ++ if (! strcmp (fdent->d_name, ".")) ++ continue; ++ if (! strcmp (fdent->d_name, "..")) ++ continue; ++ ++ /* Follow the link to find the filename */ ++ sprintf (link, "%s/%s", fddir, fdent->d_name); ++ len = readlink (link, path, sizeof (path)); ++ if (len <= 0) ++ continue; ++ ++ /* Ignore sockets and pipes */ ++ path[len] = '\0'; ++ if (path[0] != '/') ++ continue; ++ ++ if (lstat (path, &statbuf) < 0) ++ continue; ++ ++ /* Ignore anything not open for writing */ ++ if (! (statbuf.st_mode & S_IWUSR)) ++ continue; ++ ++ /* Now look for it in the "still open" list ++ * and update the written flag ++ */ ++ for (i = 0; i < opened_len; i++) ++ if ((opened[i].dev == statbuf.st_dev) ++ && (opened[i].ino == statbuf.st_ino)) ++ opened[i].written = 1; ++ } ++ ++ closedir (procfd); ++ } ++ ++ closedir (proc); ++} ++ ++static void ++find_blocks (void) ++{ ++ int i; ++ ++ for (i = 0; i < opened_len; i++) { ++ int fd; ++ ++ /* Open the file, this is why we do this outside of the ++ * inotify event processing; we'd end up processing our ++ * own events! ++ */ ++ fd = open (opened[i].path, O_RDONLY); ++ if (fd < 0) ++ continue; ++ ++ /* Scary ioctl shit */ ++ opened[i].block = 0; ++ ioctl (fd, FIBMAP, &(opened[i].block)); ++ ++ close (fd); ++ } ++} ++ ++static int ++opened_cmp (const struct opened *a, ++ const struct opened *b) ++{ ++ if (a->dev < b->dev) ++ return -1; ++ if (a->dev > b->dev) ++ return 1; ++ if (a->block < b->block) ++ return -1; ++ if (a->block > b->block) ++ return 1; ++ if (a->ino < b->ino) ++ return -1; ++ if (a->ino > b->ino) ++ return 1; ++ ++ return 0; ++} ++ ++static void ++write_list (const char *path) ++{ ++ FILE *fd; ++ int i; ++ ++ /* Sort the list by device and inode number */ ++ qsort (opened, opened_len, sizeof (struct opened), ++ (int (*)(const void *, const void *))opened_cmp); ++ ++ fd = fopen (path, "w"); ++ if (! fd) ++ return; ++ ++ for (i = 0; i < opened_len; i++) ++ if (! opened[i].written) ++ fprintf (fd, "%s\n", opened[i].path); ++ ++ fclose (fd); ++} --- readahead-list-0.20050517.0220.orig/debian/patches/10-readahead-list-sort.patch +++ readahead-list-0.20050517.0220/debian/patches/10-readahead-list-sort.patch @@ -0,0 +1,165 @@ +diff -ruNp readahead-list-0.20050517.0220~/src/readahead-list.c readahead-list-0.20050517.0220/src/readahead-list.c +--- readahead-list-0.20050517.0220~/src/readahead-list.c 2005-04-25 22:46:51.000000000 +0100 ++++ readahead-list-0.20050517.0220/src/readahead-list.c 2006-09-19 16:30:07.000000000 +0100 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -32,6 +33,7 @@ + #include + #include + #include <../config.h> ++#include + + static char* program_name = "readahead-list"; + static char* program_header = "$Header: /var/cvsroot/infrastructure/readahead-list/src/readahead-list.c,v 1.4 2005/04/25 21:46:51 robbat2 Exp $"; +@@ -42,15 +44,87 @@ static int flag_debug = 0; + static int flag_verbose = 0; + static int flag_version = 0; + static int flag_help = 0; ++static int flag_sort = 0; + + static struct option long_options[] = { + {"verbose", 0, &flag_verbose, 1}, + {"debug", 0, &flag_debug, 1}, + {"version", 0, &flag_version, 1}, + {"help", 0, &flag_help, 1}, ++ {"sort", 0, &flag_sort, 1}, + {0, 0, 0, 0} + }; +-static char* short_options = "vdhV"; ++static char* short_options = "vdhVs"; ++ ++ ++struct file { ++ char *path; ++ dev_t dev; ++ ino_t ino; ++ int block; ++}; ++ ++static struct file *files = NULL; ++static int files_len = 0; ++ ++void add_file(char *filename) { ++#define __FUNCTION__ "process_file" ++ int fd; ++ struct stat buf; ++ ++ if (!filename) ++ return; ++ ++ if(flag_debug) { ++ fprintf(stderr,"%s:%s:%d:Attempting to add readhead file: %s\n",__FILE__,__FUNCTION__,__LINE__,filename); ++ } ++ ++ fd = open(filename,O_RDONLY); ++ if (fd<0) { ++ if(flag_debug) { ++ fprintf(stderr,"%s:%s:%d:failed to open file: %s\n",__FILE__,__FUNCTION__,__LINE__,filename); ++ } ++ return; ++ } ++ ++ if (fstat(fd, &buf)<0) { ++ if(flag_debug) { ++ fprintf(stderr,"%s:%s:%d:failed to fstat file: %s\n",__FILE__,__FUNCTION__,__LINE__,filename); ++ } ++ close(fd); ++ return; ++ } ++ ++ files = realloc (files, sizeof (struct file) * (files_len + 1)); ++ files[files_len].path = strdup (filename); ++ files[files_len].dev = buf.st_dev; ++ files[files_len].ino = buf.st_ino; ++ files[files_len].block = 0; ++ ++ /* Scary ioctl shit */ ++ ioctl(fd, FIBMAP, &(files[files_len].block)); ++ files_len++; ++ ++ close(fd); ++} ++ ++static int ++files_cmp (const struct file *a, const struct file *b) { ++ if (a->dev < b->dev) ++ return -1; ++ if (a->dev > b->dev) ++ return 1; ++ if (a->block < b->block) ++ return -1; ++ if (a->block > b->block) ++ return 1; ++ if (a->ino < b->ino) ++ return -1; ++ if (a->ino > b->ino) ++ return 1; ++ ++ return 0; ++} + + void process_file(char *filename) { + #define __FUNCTION__ "process_file" +@@ -103,6 +177,16 @@ void process_file(char *filename) { + #undef __FUNCTION__ + } + ++void process_sorted_files() { ++ int i; ++ ++ qsort (files, files_len, sizeof (struct file), ++ (int (*)(const void *, const void *))files_cmp); ++ ++ for (i = 0; i < files_len; i++) ++ process_file(files[i].path); ++} ++ + #define MAXPATH 2048 + void process_files(char* filename) { + #define __FUNCTION__ "process_files" +@@ -166,7 +250,11 @@ void process_files(char* filename) { + buffer[next-iter]='\0'; + // we allow # as the first character in a line, to show comments + if(buffer[0] != '#') { +- process_file(buffer); ++ if (flag_sort) { ++ add_file(buffer); ++ } else { ++ process_file(buffer); ++ } + } + } + iter = next + 1; +@@ -239,6 +327,7 @@ int main(int argc, char **argv) { + case 1: // debug + case 2: // version + case 3: // help ++ case 4: // sort + break; + default: + command_error(); +@@ -257,6 +346,9 @@ int main(int argc, char **argv) { + case 'V': + flag_version = 1; + break; ++ case 's': ++ flag_sort = 1; ++ break; + default: + command_error(); + } +@@ -274,6 +366,8 @@ int main(int argc, char **argv) { + for (i=optind; i + #include + #include ++#include + + #include + #include