From owner-svn-src-projects@FreeBSD.ORG Thu Feb 18 13:59:06 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17B44106566C; Thu, 18 Feb 2010 13:59:06 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id C82D08FC16; Thu, 18 Feb 2010 13:59:05 +0000 (UTC) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id 6895146B3B; Thu, 18 Feb 2010 08:59:05 -0500 (EST) Date: Thu, 18 Feb 2010 13:59:05 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Jeff Roberson In-Reply-To: <201002170304.o1H34VWL014867@svn.freebsd.org> Message-ID: References: <201002170304.o1H34VWL014867@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r203981 - projects/suj/head/sbin/tunefs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2010 13:59:06 -0000 On Wed, 17 Feb 2010, Jeff Roberson wrote: > Author: jeff > Date: Wed Feb 17 03:04:31 2010 > New Revision: 203981 > URL: http://svn.freebsd.org/changeset/base/203981 > > Log: > - Fix clearing of the immutable journal flags so it may be more easily > removed by administrators. > - Set the NODUMP flag as suggested by rwatson. FYI, dump(8) will still back up files with NODUMP set by default when doing a level 0 dump, so it might also be desirable for dump to detect and ignore journal files while backing up. (Perhaps we already do this for snapshots...?) Robert N M Watson Computer Laboratory University of Cambridge > > Modified: > projects/suj/head/sbin/tunefs/tunefs.c > > Modified: projects/suj/head/sbin/tunefs/tunefs.c > ============================================================================== > --- projects/suj/head/sbin/tunefs/tunefs.c Wed Feb 17 01:14:28 2010 (r203980) > +++ projects/suj/head/sbin/tunefs/tunefs.c Wed Feb 17 03:04:31 2010 (r203981) > @@ -600,6 +600,7 @@ journal_findfile(void) > { > struct ufs1_dinode *dp1; > struct ufs2_dinode *dp2; > + ino_t ino; > int mode; > void *ip; > int i; > @@ -618,9 +619,9 @@ journal_findfile(void) > for (i = 0; i < NDADDR; i++) { > if (dp1->di_db[i] == 0) > break; > - if (dir_search(dp1->di_db[i], > - sblksize(&sblock, (off_t)dp1->di_size, i)) != 0) > - return (-1); > + if ((ino = dir_search(dp1->di_db[i], > + sblksize(&sblock, (off_t)dp1->di_size, i))) != 0) > + return (ino); > } > } else { > if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { > @@ -630,9 +631,9 @@ journal_findfile(void) > for (i = 0; i < NDADDR; i++) { > if (dp2->di_db[i] == 0) > break; > - if (dir_search(dp2->di_db[i], > - sblksize(&sblock, (off_t)dp2->di_size, i)) != 0) > - return (-1); > + if ((ino = dir_search(dp2->di_db[i], > + sblksize(&sblock, (off_t)dp2->di_size, i))) != 0) > + return (ino); > } > } > > @@ -831,10 +832,11 @@ journal_clear(void) > void *ip; > > ino = journal_findfile(); > - if (ino <= 0) { > + if (ino == (ino_t)-1 || ino == 0) { > warnx("Journal file does not exist"); > return; > } > + printf("Clearing journal flags from inode %d\n", ino); > if (getino(&disk, &ip, ino, &mode) != 0) { > warn("Failed to get journal inode"); > return; > @@ -872,11 +874,13 @@ journal_alloc(int64_t size) > * If the journal file exists we can't allocate it. > */ > ino = journal_findfile(); > - if (ino > 0) > + if (ino == (ino_t)-1) > + return (-1); > + if (ino > 0) { > warnx("Journal file %s already exists, please remove.", > SUJ_FILE); > - if (ino != 0) > return (-1); > + } > /* > * If the user didn't supply a size pick one based on the filesystem > * size constrained with hardcoded MIN and MAX values. We opt for > @@ -930,13 +934,13 @@ journal_alloc(int64_t size) > dp1->di_size = size; > dp1->di_mode = IFREG | IREAD; > dp1->di_nlink = 1; > - dp1->di_flags = SF_IMMUTABLE | SF_NOUNLINK; > + dp1->di_flags = SF_IMMUTABLE | SF_NOUNLINK | UF_NODUMP; > } else { > bzero(dp2, sizeof(*dp2)); > dp2->di_size = size; > dp2->di_mode = IFREG | IREAD; > dp2->di_nlink = 1; > - dp2->di_flags = SF_IMMUTABLE | SF_NOUNLINK; > + dp2->di_flags = SF_IMMUTABLE | SF_NOUNLINK | UF_NODUMP; > } > for (i = 0; i < NDADDR && resid; i++, resid--) { > blk = journal_balloc(); >