Date: Wed, 17 Feb 2010 03:04:31 +0000 (UTC) From: Jeff Roberson <jeff@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r203981 - projects/suj/head/sbin/tunefs Message-ID: <201002170304.o1H34VWL014867@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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();
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002170304.o1H34VWL014867>