From owner-svn-src-projects@FreeBSD.ORG Wed Feb 17 03:04:31 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 7B765106568B; Wed, 17 Feb 2010 03:04:31 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4FF5C8FC1D; Wed, 17 Feb 2010 03:04:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1H34V73014869; Wed, 17 Feb 2010 03:04:31 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1H34VWL014867; Wed, 17 Feb 2010 03:04:31 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201002170304.o1H34VWL014867@svn.freebsd.org> From: Jeff Roberson Date: Wed, 17 Feb 2010 03:04:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: 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: Wed, 17 Feb 2010 03:04:31 -0000 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. 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();