Package: collectd Version: 4.6.3-1 Severity: normal In the default configuration, collectd's df plugin will collect statistics for all devices, including NFS mounts and other network filesystems.
If a laptop has collectd on it and is suspended via pm-suspend with some NFS mounts, the following often happens: - Network is taken down. - collectd wakes up and calls statfs(2) on each mounted filesystem - Hangs on the NFS mount, since the network is down. - The kernel fails to suspend collectd, and the sleep fails. - Accidentially still powered on laptop melts in its bag or causes plane to crash into Hudson river. ;-) When this happens, I see this in dmesg: [12127.392595] runnable tasks: [12127.392597] task PID tree-key switches prio exec-runtime sum-exec sum-sleep [12127.392600] ---------------------------------------------------------------------------------------------------------- [12127.392669] R pm-suspend 17121 1380454.770503 94 120 0 0 0.000000 0.000000 0.000000 / [12127.392684] [12127.392720] collectd [12127.392814] [12127.392817] Restarting tasks ... done. Unmounting the network filesystems before suspend is probably wise, but it's easy to forget to do that and sometimes you just want to suspend with a network filesystem mounted, since remounting it on resume would be hard (ie, might need a password for sshfs). So this is, arguably, a bug in collectd. It would be much nicer if its default config could avoid accessing network filesystems. IMHO. Less IMHO, if I configure collectd like this: # Only list local devices, no network stuff. <Plugin df> Device "/dev/hda1" IgnoreSelected false </Plugin> It still does this. [pid 18790] statfs64("/", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=7404175, f_bfree=1494139, f_bavail=1494139, f_files=3768320, f_ffree=3064836, f_fsid={-866525212, 419953648}, f_namelen=255, f_frsize=4096}) = 0 [pid 18794] read(7, "grep\0statfs\0", 4096) = 12 [pid 18790] statfs64("/lib/init/rw", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=128263, f_bfree=128263, f_bavail=128263, f_files=128263, f_ffree=128258, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/proc", 84, {f_type="PROC_SUPER_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/sys", 84, {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/dev", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=2560, f_bfree=2524, f_bavail=2524, f_files=128263, f_ffree=127038, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/dev/shm", 84, {f_type=0x1021994, f_bsize=4096, f_blocks=128263, f_bfree=128263, f_bavail=128263, f_files=128263, f_ffree=128262, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/dev/pts", 84, {f_type="DEVPTS_SUPER_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/sys/fs/fuse/connections", 84, {f_type=0x65735543, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0 [pid 18790] statfs64("/home/joey/mnt", 84, {f_type=0x65735546, f_bsize=0, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=0, f_frsize=0}) = 0 And that *is* a bug, I'm sure. dh.c runs this code much later than seems to be necessary: if (ignorelist_match (il_fstype, mnt_ptr->type)) continue; if (ignorelist_match (il_mountpoint, mnt_ptr->dir)) continue; I think that should definitly be moved to above the statfs call. And then I *suggest* the default config be changed to something like: <Plugin df> FSType "nfs" IgnoreSelected true </Plugin> -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.31-rc3-486 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages collectd depends on: ii cdebconf [debconf-2.0] 0.146 Debian Configuration Management Sy ii debconf [debconf-2.0] 1.5.27 Debian configuration management sy ii libc6 2.9-25 GNU C Library: Shared libraries ii librrd4 1.3.8-1 Time-series data storage and displ Versions of packages collectd recommends: ii iptables 1.4.4-2 administration tools for packet fi ii libatk1.0-0 1.26.0-1 The ATK accessibility toolkit ii libcairo2 1.8.8-2 The Cairo 2D vector graphics libra ii libcurl3-gnutls 7.19.5-1 Multi-protocol file transfer libra ii libdbi0 0.8.2-3 Database Independent Abstraction L ii libdbus-1-3 1.2.16-2 simple interprocess messaging syst ii libdbus-glib-1-2 0.82-1 simple interprocess messaging syst ii libesmtp5 1.0.4-2 LibESMTP SMTP client library ii libfontconfig1 2.6.0-4 generic font configuration library ii libfreetype6 2.3.9-5 FreeType 2 font engine, shared lib ii libglib2.0-0 2.20.4-1 The GLib library of C routines ii libgtk2.0-0 2.16.5-1 The GTK+ graphical user interface ii libhal1 0.5.13-3 Hardware Abstraction Layer - share ii libmysqlclient15off 5.0.84-1 MySQL database client library ii libnotify1 [libnotify1-gt 0.4.5-1 sends desktop notifications to a n ii libopenipmi0 2.0.16-1 Intelligent Platform Management In ii liboping0 1.3.2-1 C/C++ library to generate ICMP ECH ii libpango1.0-0 1.24.5-1 Layout and rendering of internatio ii libpcap0.8 1.0.0-2 system interface for user-level pa ii libperl5.10 5.10.0-25 Shared Perl library ii libpq5 8.4.0-2+b1 PostgreSQL C client library ii libsensors3 1:2.10.8-1 library to read temperature/voltag ii libsnmp15 5.4.1~dfsg-12 SNMP (Simple Network Management Pr ii libssl0.9.8 0.9.8k-4 SSL shared libraries ii libupsclient1 2.4.1-3 network UPS tools - client library ii libvirt0 0.6.5-3 library for interfacing with diffe ii libxml2 2.7.3.dfsg-2.1 GNOME XML library ii lm-sensors 1:3.1.1-3 utilities to read temperature/volt ii perl 5.10.0-25 Larry Wall's Practical Extraction ii rrdtool 1.3.8-1 Time-series data storage and displ Versions of packages collectd suggests: ii apache2-mpm-worker [httpd-cg 2.2.12-1 Apache HTTP Server - high speed th pn collectd-dev <none> (no description available) pn hddtemp <none> (no description available) ii libconfig-general-perl 2.42-1 Generic Configuration Module ii libhtml-parser-perl 3.62-1 collection of modules that parse H ii libregexp-common-perl 2.122-1 Provide commonly requested regular ii librrds-perl 1.3.8-1 Time-series data storage and displ ii liburi-perl 1.37+dfsg-1 Manipulates and accesses URI strin pn mbmon <none> (no description available) -- debconf information excluded -- see shy jo
signature.asc
Description: Digital signature