From owner-freebsd-bugs@FreeBSD.ORG Wed Apr 16 03:10:01 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A36AF1065670 for ; Wed, 16 Apr 2008 03:10:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 85E618FC18 for ; Wed, 16 Apr 2008 03:10:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m3G3A1FB004559 for ; Wed, 16 Apr 2008 03:10:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m3G3A1bR004558; Wed, 16 Apr 2008 03:10:01 GMT (envelope-from gnats) Resent-Date: Wed, 16 Apr 2008 03:10:01 GMT Resent-Message-Id: <200804160310.m3G3A1bR004558@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Mike Meyer Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7029D106566B for ; Wed, 16 Apr 2008 03:05:02 +0000 (UTC) (envelope-from mwm@mired.org) Received: from mired.org (student.mired.org [66.92.153.77]) by mx1.freebsd.org (Postfix) with ESMTP id DCFD58FC1B for ; Wed, 16 Apr 2008 03:05:01 +0000 (UTC) (envelope-from mwm@mired.org) Received: (qmail 8128 invoked by uid 1001); 15 Apr 2008 22:37:32 -0400 Message-Id: <20080416023732.8127.qmail@mired.org> Date: 15 Apr 2008 22:37:32 -0400 From: Mike Meyer To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: bin/122811: the daily_clean_disks scripts walks file systems it shouldn't X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Mike Meyer List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Apr 2008 03:10:01 -0000 >Number: 122811 >Category: bin >Synopsis: the daily_clean_disks scripts walks file systems it shouldn't >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Apr 16 03:10:01 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Mike Meyer >Release: FreeBSD 7.0-STABLE amd64 >Organization: Meyer Consulting >Environment: System: FreeBSD bhuda.mired.org 7.0-STABLE FreeBSD 7.0-STABLE #0: Tue Apr 8 01:24:21 EDT 2008 mwm@bhuda.mired.org:/usr/src/sys/amd64/compile/BHUDA amd64 >Description: The daily clean disks script tries to use the find -prune and -delete flags to together, which is documented (though obscurely) as not working: -delete is documented as implying depth-first traversal, as with -d, and -prune is documented as having no effect if the -d option was specified. This means that, while the perioud daily-clean-disks script tries to limit itself to locally mounted file systems and read-write file systems, it will actually fails to do so. >How-To-Repeat: Run the clean-disks periodic on a system with non-local file systems mounted, and watch it walk them. >Fix: The attached patch changes adds a new knob - daily_clean_disks_fs_types, and individually walks file systems of those types if they aren't read-only. Only in /usr/src/etc/defaults: Makefile diff -ru /usr/src/etc/defaults/periodic.conf defaults/periodic.conf --- /usr/src/etc/defaults/periodic.conf 2008-01-27 03:07:14.000000000 -0500 +++ defaults/periodic.conf 2008-04-15 22:27:22.758031816 -0400 @@ -40,6 +40,7 @@ daily_clean_disks_files="[#,]* .#* a.out *.core *.CKP .emacs_[0-9]*" daily_clean_disks_days=3 # If older than this daily_clean_disks_verbose="YES" # Mention files deleted +daily_clean_disks_fs_types="ufs,zfs" # File system types to clean # 110.clean-tmps daily_clean_tmps_enable="NO" # Delete stuff daily diff -ru /usr/src/etc/periodic/daily/100.clean-disks periodic/daily/100.clean-disks --- /usr/src/etc/periodic/daily/100.clean-disks 2001-04-25 08:11:54.000000000 -0400 +++ periodic/daily/100.clean-disks 2008-04-03 16:15:55.000000000 -0400 @@ -41,7 +41,10 @@ print=;; esac - rc=$(find / \( ! -fstype local -o -fstype rdonly \) -a -prune -o \ + disks=$(mount -t $daily_clean_disks_fs_types \ + | sed -e 's/.* on //' -e 's/ *(.*//' -e '/read-only/d') + echo $disks + rc=$(find -x $disks \ \( $args \) -atime +$daily_clean_disks_days -delete $print | tee /dev/stderr | wc -l) [ -z "$print" ] && rc=0 Only in /usr/src/etc/periodic/daily: Makefile Only in /usr/src/etc/periodic/daily: type >Release-Note: >Audit-Trail: >Unformatted: