[Ocfs2-tools-commits] smushran commits r357 - trunk/mkfs.ocfs2

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Wed Nov 3 13:26:42 CST 2004


Author: smushran
Date: 2004-11-03 13:26:40 -0600 (Wed, 03 Nov 2004)
New Revision: 357

Removed:
   trunk/mkfs.ocfs2/mkfs2.c
   trunk/mkfs.ocfs2/mkfs_utils.c
   trunk/mkfs.ocfs2/mkfs_utils.h
Modified:
   trunk/mkfs.ocfs2/Makefile
Log:
reversing my mkfs spilt up

Modified: trunk/mkfs.ocfs2/Makefile
===================================================================
--- trunk/mkfs.ocfs2/Makefile	2004-11-02 04:42:58 UTC (rev 356)
+++ trunk/mkfs.ocfs2/Makefile	2004-11-03 19:26:40 UTC (rev 357)
@@ -11,7 +11,7 @@
 
 CFLAGS = $(OPTS) $(WARNINGS) 
 
-SBIN_PROGRAMS = mkfs.ocfs2 mkfs2.ocfs2 tunefs.ocfs2
+SBIN_PROGRAMS = mkfs.ocfs2
 
 LIBOCFS2_CFLAGS = -I$(TOPDIR)/libocfs2/include
 LIBOCFS2_LIBS = -L$(TOPDIR)/libocfs2 -locfs2
@@ -33,12 +33,6 @@
 mkfs.ocfs2: $(OBJS)
 	$(LINK) $(LIBOCFS2_LIBS) $(COM_ERR_LIBS)
 
-mkfs2.ocfs2: mkfs2.o mkfs_utils.o
-	$(LINK) $(LIBOCFS2_LIBS) $(COM_ERR_LIBS)
-
-tunefs.ocfs2: tunefs.o mkfs_utils.o
-	$(LINK) $(LIBOCFS2_LIBS) $(COM_ERR_LIBS)
-
 readdir: readdir.o
 	$(LINK) 
 

Deleted: trunk/mkfs.ocfs2/mkfs2.c
===================================================================
--- trunk/mkfs.ocfs2/mkfs2.c	2004-11-02 04:42:58 UTC (rev 356)
+++ trunk/mkfs.ocfs2/mkfs2.c	2004-11-03 19:26:40 UTC (rev 357)
@@ -1,491 +0,0 @@
-/* -*- mode: c; c-basic-offset: 8; -*-
- * vim: noexpandtab sw=8 ts=8 sts=0:
- *
- * mkfs.c
- *
- * OCFS2 format utility
- *
- * Copyright (C) 2004 Oracle Corporation.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License, version 2,  as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 021110-1307, USA.
- *
- * Authors: Manish Singh, Kurt Hackel
- */
-
-#include <mkfs.h>
-#include <mkfs_utils.h>
-
-static State *get_state(int argc, char **argv);
-static void usage(const char *progname);
-static void version(const char *progname);
-extern char *optarg;
-extern int optind, opterr, optopt;
-
-SystemFileInfo system_files[] = {
-	{ "bad_blocks", SFI_OTHER, 1, 0 },
-	{ "global_inode_alloc", SFI_CHAIN, 1, 0 },
-	{ "dlm", SFI_DLM, 1, 0 },
-	{ "global_bitmap", SFI_BITMAP, 1, 0 },
-	{ "orphan_dir", SFI_OTHER, 1, 1 },
-	{ "extent_alloc:%04d", SFI_CHAIN, 0, 0 },
-	{ "inode_alloc:%04d", SFI_CHAIN, 0, 0 },
-	{ "journal:%04d", SFI_JOURNAL, 0, 0 },
-	{ "local_alloc:%04d", SFI_LOCAL_ALLOC, 0, 0 }
-};
-
-int
-main(int argc, char **argv)
-{
-	State *s;
-	SystemFileDiskRecord *record[NUM_SYSTEM_INODES];
-	SystemFileDiskRecord global_alloc_rec;
-	SystemFileDiskRecord crap_rec;
-	SystemFileDiskRecord superblock_rec;
-	SystemFileDiskRecord root_dir_rec;
-	SystemFileDiskRecord system_dir_rec;
-	int i, j, num;
-	DirData *orphan_dir;
-	DirData *root_dir;
-	DirData *system_dir;
-	uint32_t need;
-	uint64_t allocated;
-	SystemFileDiskRecord *tmprec;
-	char fname[SYSTEM_FILE_NAME_MAX];
-
-	setbuf(stdout, NULL);
-	setbuf(stderr, NULL);
-
-	s = get_state(argc, argv);
-
-	open_device(s);
-
-	fill_defaults(s);  
-
-	adjust_volume_size(s);
-
-	generate_uuid (s);
-
-	create_generation(s);
-
-	print_state (s);
-
-	check_32bit_blocks (s);
-
-	init_record(s, &global_alloc_rec, SFI_OTHER, 0);
-	global_alloc_rec.extent_off = 0;
-	global_alloc_rec.extent_len = s->volume_size_in_bytes;
-
-	init_record(s, &superblock_rec, SFI_OTHER, 0);
-	init_record(s, &root_dir_rec, SFI_OTHER, 1);
-	init_record(s, &system_dir_rec, SFI_OTHER, 1);
-
-	for (i = 0; i < NUM_SYSTEM_INODES; i++) {
-		num = system_files[i].global ? 1 : s->initial_nodes;
-		record[i] = do_malloc(s, sizeof(SystemFileDiskRecord) * num);
-
-		for (j = 0; j < num; j++) {
-			init_record(s, &record[i][j],
-				    system_files[i].type, system_files[i].dir);
-		}
-	}
-
-	root_dir = alloc_directory(s);
-	system_dir = alloc_directory(s);
-	orphan_dir = alloc_directory(s);
-
-	need = (s->volume_size_in_clusters + 7) >> 3;
-	need = ((need + s->cluster_size - 1) >> s->cluster_size_bits) << s->cluster_size_bits;
-
-	if (need > BITMAP_WARNING_LEN)
-		fprintf(stderr, "WARNING: bitmap is very large, consider using "
-				"a larger cluster size and/or\na smaller "
-				"volume\n");
-
-	if (!s->quiet)
-		printf("Creating bitmaps: ");
-
-	tmprec = &(record[GLOBAL_BITMAP_SYSTEM_INODE][0]);
-	tmprec->extent_off = 0;
-	tmprec->extent_len = need;
-
-	s->global_bm = initialize_bitmap (s, s->volume_size_in_clusters,
-					  s->cluster_size_bits,
-					  "global bitmap", tmprec,
-					  &global_alloc_rec);
-
-	/*
-	 * Set all bits up to and including the superblock.
-	 */
-	alloc_bytes_from_bitmap(s, (OCFS2_SUPER_BLOCK_BLKNO + 1) << s->blocksize_bits,
-				s->global_bm, &(crap_rec.extent_off),
-				&(crap_rec.extent_len));
-
-	/*
-	 * Alloc a placeholder for the future global chain allocator
-	 */
-	alloc_from_bitmap(s, 1, s->global_bm, &(crap_rec.extent_off),
-                          &(crap_rec.extent_len));
-
-	/*
-	 * Now allocate the global inode alloc group
-	 */
-	tmprec = &(record[GLOBAL_INODE_ALLOC_SYSTEM_INODE][0]);
-
-	need = blocks_needed(s);
-	alloc_bytes_from_bitmap(s, need << s->blocksize_bits,
-                                s->global_bm,
-                                &(crap_rec.extent_off),
-                                &(crap_rec.extent_len));
-
-	s->system_group =
-		initialize_alloc_group(s, "system inode group", tmprec,
-				       crap_rec.extent_off >> s->blocksize_bits,
-				       0,
-                                       crap_rec.extent_len >> s->cluster_size_bits,
-				       s->cluster_size / s->blocksize);
-
-	tmprec->group = s->system_group;
-	tmprec->chain_off =
-		tmprec->group->gd->bg_blkno << s->blocksize_bits;
-
-	if (!s->quiet)
-		printf("done\n");
-
-	if (!s->quiet)
-		printf("Writing superblock: ");
-
-	superblock_rec.fe_off = (uint64_t)OCFS2_SUPER_BLOCK_BLKNO << s->blocksize_bits;
-
-	alloc_from_bitmap (s, 1, s->global_bm,
-			   &root_dir_rec.extent_off,
-			   &root_dir_rec.extent_len);
-
-	root_dir_rec.fe_off = alloc_inode(s, &root_dir_rec.suballoc_bit);
-	root_dir->record = &root_dir_rec;
-
-	add_entry_to_directory(s, root_dir, ".", root_dir_rec.fe_off, OCFS2_FT_DIR);
-	add_entry_to_directory(s, root_dir, "..", root_dir_rec.fe_off, OCFS2_FT_DIR);
-
-	need = system_dir_blocks_needed(s);
-	alloc_from_bitmap (s, need, s->global_bm, &system_dir_rec.extent_off, &system_dir_rec.extent_len);
-	system_dir_rec.fe_off = alloc_inode(s, &system_dir_rec.suballoc_bit);
-	system_dir->record = &system_dir_rec;
-	add_entry_to_directory(s, system_dir, ".", system_dir_rec.fe_off, OCFS2_FT_DIR);
-	add_entry_to_directory(s, system_dir, "..", system_dir_rec.fe_off, OCFS2_FT_DIR);
-
-	for (i = 0; i < NUM_SYSTEM_INODES; i++) {
-		num = (system_files[i].global) ? 1 : s->initial_nodes;
-
-		for (j = 0; j < num; j++) {
-			record[i][j].fe_off = alloc_inode(s, &(record[i][j].suballoc_bit));
-			sprintf(fname, system_files[i].name, j);
-			add_entry_to_directory(s, system_dir, fname,
-					       record[i][j].fe_off,
-					       system_files[i].dir ? OCFS2_FT_DIR
-							           : OCFS2_FT_REG_FILE);
-		}
-	}
-
-	/* back when we initialized the alloc group we hadn't allocated
-	 * an inode for the global allocator yet */
-	tmprec = &(record[GLOBAL_INODE_ALLOC_SYSTEM_INODE][0]);
-	s->system_group->gd->bg_parent_dinode = 
-		cpu_to_le64(tmprec->fe_off >> s->blocksize_bits);
-
-	tmprec = &(record[DLM_SYSTEM_INODE][0]);
-	need = (AUTOCONF_BLOCKS(s->initial_nodes, 32) +
-		PUBLISH_BLOCKS(s->initial_nodes, 32) +
-		VOTE_BLOCKS(s->initial_nodes, 32));
-	alloc_from_bitmap(s, need, s->global_bm, &tmprec->extent_off, &tmprec->extent_len);
-	tmprec->file_size = need << s->blocksize_bits;
-
-	tmprec = &record[ORPHAN_DIR_SYSTEM_INODE][0];
-	orphan_dir->record = tmprec;
-	alloc_from_bitmap(s, 1, s->global_bm, &tmprec->extent_off, &tmprec->extent_len);
-	add_entry_to_directory(s, orphan_dir, ".", tmprec->fe_off, OCFS2_FT_DIR);
-	add_entry_to_directory(s, orphan_dir, "..", system_dir_rec.fe_off, OCFS2_FT_DIR);
-
-	tmprec = s->global_bm->bm_record;
-	alloc_bytes_from_bitmap(s, tmprec->extent_len, s->global_bm,
-				&(tmprec->extent_off), &allocated);
-
-	format_leading_space(s);
-	format_superblock(s, &superblock_rec, &root_dir_rec, &system_dir_rec);
-
-	if (!s->quiet)
-		printf("done\n");
-
-	if (!s->quiet)
-		printf("Writing system files: ");
-
-	format_file(s, &root_dir_rec);
-	format_file(s, &system_dir_rec);
-
-	for (i = 0; i < NUM_SYSTEM_INODES; i++) {
-		num = system_files[i].global ? 1 : s->initial_nodes;
-		for (j = 0; j < num; j++) {
-			tmprec = &(record[i][j]);
-			if (system_files[i].type == SFI_JOURNAL) {
-				alloc_bytes_from_bitmap(s, s->journal_size_in_bytes,
-							s->global_bm,
-							&(tmprec->extent_off),
-							&(tmprec->extent_len));
-				replacement_journal_create(s, tmprec->extent_off);
-				tmprec->file_size = tmprec->extent_len;
-			}
-
-			format_file(s, tmprec);
-		}
-	}
-
-	write_bitmap_data(s, s->global_bm);
-	write_group_data(s, s->system_group);
-
-	write_directory_data(s, root_dir);
-	write_directory_data(s, system_dir);
-	write_directory_data(s, orphan_dir);
-
-	if (!s->quiet)
-		printf("done\n");
-
-	if (!s->quiet)
-		printf("Writing autoconfig header: ");
-
-	write_autoconfig_header(s, &record[DLM_SYSTEM_INODE][0]);
-
-	if (!s->quiet)
-		printf("done\n");
-
-	close_device(s);
-
-	if (!s->quiet)
-		printf("%s successful\n\n", s->progname);
-
-	return 0;
-}
-
-static State *
-get_state(int argc, char **argv)
-{
-	char *progname;
-	unsigned int blocksize = 0;
-	unsigned int cluster_size = 0;
-	char *vol_label = NULL;
-	unsigned int initial_nodes = 0;
-	char *dummy;
-	State *s;
-	int c;
-	int verbose = 0, quiet = 0;
-	int show_version = 0;
-	char *device_name;
-	int ret;
-	uint64_t val;
-	uint64_t journal_size_in_bytes = 0;
-	uint64_t max_journal_size = 500 * ONE_MEGA_BYTE;
-
-	static struct option long_options[] = {
-		{ "blocksize", 1, 0, 'b' },
-		{ "clustersize", 1, 0, 'c' },
-		{ "label", 1, 0, 'L' },
-		{ "nodes", 1, 0, 'n' },
-		{ "verbose", 0, 0, 'v' },
-		{ "quiet", 0, 0, 'q' },
-		{ "version", 0, 0, 'V' },
-		{ "journalsize", 0, 0, 'j'},
-		{ 0, 0, 0, 0}
-	};
-
-	if (argc && *argv)
-		progname = basename(argv[0]);
-	else
-		progname = strdup("mkfs.ocfs2");
-
-	while (1) {
-		c = getopt_long(argc, argv, "b:c:L:n:j:vqV", long_options, 
-				NULL);
-
-		if (c == -1)
-			break;
-
-		switch (c) {
-		case 'b':
-			ret = get_number(optarg, &val);
-
-			if (ret ||
-			    val < OCFS2_MIN_BLOCKSIZE ||
-			    val > OCFS2_MAX_BLOCKSIZE) {
-				com_err(progname, 0,
-					"Invalid blocksize %s: "
-					"must be between %d and %d bytes",
-					optarg,
-					OCFS2_MIN_BLOCKSIZE,
-					OCFS2_MAX_BLOCKSIZE);
-				exit(1);
-			}
-
-			blocksize = (unsigned int) val;
-			break;
-
-		case 'c':
-			ret = get_number(optarg, &val);
-
-			if (ret ||
-			    val < MIN_CLUSTER_SIZE ||
-			    val > MAX_CLUSTER_SIZE) {
-				com_err(progname, 0,
-					"Invalid cluster size %s: "
-					"must be between %d and %d bytes",
-					optarg,
-					MIN_CLUSTER_SIZE,
-					MAX_CLUSTER_SIZE);
-				exit(1);
-			}
-
-			cluster_size = (unsigned int) val;
-			break;
-
-		case 'L':
-			vol_label = strdup(optarg);
-
-			if (strlen(vol_label) >= MAX_VOL_LABEL_LEN) {
-				com_err(progname, 0,
-					"Volume label too long: must be less "
-					"than %d characters",
-					MAX_VOL_LABEL_LEN);
-				exit(1);
-			}
-
-			break;
-
-		case 'n':
-			initial_nodes = strtoul(optarg, &dummy, 0);
-
-			if (initial_nodes > OCFS2_MAX_NODES || *dummy != '\0') {
-				com_err(progname, 0,
-					"Initial nodes must be no more than %d",
-					OCFS2_MAX_NODES);
-				exit(1);
-			} else if (initial_nodes < 2) {
-				com_err(progname, 0,
-					"Initial nodes must be at least 2");
-				exit(1);
-			}
-
-			break;
-
-		case 'j':
-			ret = get_number(optarg, &val);
-
-			if (ret || 
-			    val < OCFS2_MIN_JOURNAL_SIZE ||
-			    val > max_journal_size) {
-				com_err(progname, 0,
-					"Invalid journal size %s: must be "
-					"between %d and %"PRIu64" bytes",
-					optarg,
-					OCFS2_MIN_JOURNAL_SIZE,
-					max_journal_size);
-				exit(1);
-			}
-
-			journal_size_in_bytes = val;
-
-			break;
-
-		case 'v':
-			verbose = 1;
-			break;
-
-		case 'q':
-			quiet = 1;
-			break;
-
-		case 'V':
-			show_version = 1;
-			break;
-
-		default:
-			usage(progname);
-			break;
-		}
-	}
-
-	if ((optind == argc) && !show_version)
-		usage(progname);
-
-	device_name = argv[optind];
-	optind++;
-
-	if (optind < argc) {
-		unsigned long val;
-
-		val = strtoul(argv[optind], &dummy, 0);
-
-		if ((*dummy) || (val > 0xffffffffUL)) {
-			com_err(progname, 0, "Block count bad - %s",
-				argv[optind]);
-			exit(1);
-		}
-
-		optind++;
-	}
-
-	if (optind < argc)
-		usage(progname);
-
-	if (!quiet || show_version)
-		version(progname);
-
-	if (show_version)
-		exit(0);
-
-	s = malloc(sizeof(State));
-	memset(s, 0, sizeof(State));
-
-	s->progname      = progname;
-
-	s->verbose       = verbose;
-	s->quiet         = quiet;
-
-	s->blocksize     = blocksize;
-	s->cluster_size  = cluster_size;
-	s->vol_label     = vol_label;
-	s->initial_nodes = initial_nodes;
-
-	s->device_name   = strdup(device_name);
-
-	s->fd            = -1;
-
-	s->format_time   = time(NULL);
-
-	s->journal_size_in_bytes = journal_size_in_bytes;
-
-	return s;
-}
-
-static void
-usage(const char *progname)
-{
-	fprintf(stderr, "Usage: %s [-b blocksize] [-c cluster-size] [-L volume-label]\n"
-			"\t[-n number-of-nodes] [-j journal-size] [-qvV] device [blocks-count]\n",
-			progname);
-	exit(0);
-}
-
-static void
-version(const char *progname)
-{
-	fprintf(stderr, "%s %s\n", progname, VERSION);
-}

Deleted: trunk/mkfs.ocfs2/mkfs_utils.c
===================================================================
--- trunk/mkfs.ocfs2/mkfs_utils.c	2004-11-02 04:42:58 UTC (rev 356)
+++ trunk/mkfs.ocfs2/mkfs_utils.c	2004-11-03 19:26:40 UTC (rev 357)
@@ -1,1009 +0,0 @@
-/* -*- mode: c; c-basic-offset: 8; -*-
- * vim: noexpandtab sw=8 ts=8 sts=0:
- *
- * mkfs_utils.c
- *
- * OCFS2 format utility
- *
- * Copyright (C) 2004 Oracle Corporation.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License, version 2,  as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 021110-1307, USA.
- *
- * Authors: Manish Singh, Kurt Hackel
- */
-
-#include <mkfs.h>
-#include <mkfs_utils.h>
-
-int
-get_number(char *arg, uint64_t *res)
-{
-	char *ptr = NULL;
-	uint64_t num;
-
-	num = strtoull(arg, &ptr, 0);
-
-	if ((ptr == arg) || (num == UINT64_MAX))
-		return(-EINVAL);
-
-	switch (*ptr) {
-	case '\0':
-		break;
-
-	case 'g':
-	case 'G':
-		num *= 1024;
-		/* FALL THROUGH */
-
-	case 'm':
-	case 'M':
-		num *= 1024;
-		/* FALL THROUGH */
-
-	case 'k':
-	case 'K':
-		num *= 1024;
-		/* FALL THROUGH */
-
-	case 'b':
-	case 'B':
-		break;
-
-	default:
-		return -EINVAL;
-	}
-
-	*res = num;
-
-	return 0;
-}
-
-/* stolen from e2fsprogs */
-uint64_t figure_journal_size(uint64_t size, State *s)
-{
-	unsigned int j_blocks;
-
-	if (s->volume_size_in_blocks < 2048) {
-		fprintf(stderr,	"Filesystem too small for a journal\n");
-		exit(1);
-	}
-
-	if (size > 0) {
-		j_blocks = size >> s->blocksize_bits;
-		/* mke2fs knows about free blocks at this point, but
-		 * we don't so lets just take a wild guess as to what
-		 * the fs overhead we're looking at will be. */
-		if ((j_blocks * s->initial_nodes + 1024) > 
-		    s->volume_size_in_blocks) {
-			fprintf(stderr, 
-				"Journal size too big for filesystem.\n");
-			exit(1);
-		}
-		return size;
-	}
-
-	if (s->volume_size_in_blocks < 32768)
-		j_blocks = 1024;
-	else if (s->volume_size_in_blocks < 262144)
-		j_blocks = 4096;
-	else
-		j_blocks = 8192;
-
-	return j_blocks << s->blocksize_bits;
-}
-
-void
-fill_defaults(State *s)
-{
-	size_t pagesize;
-	errcode_t err;
-	uint32_t ret;
-
-	pagesize = getpagesize();
-
-	s->pagesize_bits = get_bits(s, pagesize);
-
-	if (!s->blocksize)
-		s->blocksize = 4096;
-
-	if (!s->volume_size_in_blocks) {
-		err = ocfs2_get_device_size(s->device_name, s->blocksize, &ret);
-		s->volume_size_in_blocks = ret;
-	}
-
-	s->volume_size_in_bytes = s->volume_size_in_blocks * s->blocksize;
-
-	if (!s->blocksize) {
-		if (s->volume_size_in_bytes <= 1024 * 1024 * 3) {
-			s->blocksize = 512;
-		} else {
-			int shift = 30;
-
-			while (s->blocksize > 1024) {
-				if (s->volume_size_in_bytes >= 1U << shift)
-					break;
-				s->blocksize >>= 1;
-				shift--;
-			}
-		}
-
-		err = ocfs2_get_device_size(s->device_name, s->blocksize, &ret);
-		s->volume_size_in_blocks = ret;
-
-		s->volume_size_in_bytes =
-			s->volume_size_in_blocks * s->blocksize;
-	}
-
-	s->blocksize_bits = get_bits(s, s->blocksize);
-
-	if (!s->cluster_size) {
-		uint32_t volume_size, cluster_size, cluster_size_bits, need;
-
-		for (cluster_size = MIN_CLUSTER_SIZE;
-		     cluster_size < AUTO_CLUSTER_SIZE;
-		     cluster_size <<= 1) {
-			cluster_size_bits = get_bits(s, cluster_size);
-
-			volume_size =
-				s->volume_size_in_bytes >> cluster_size_bits;
-
-			need = (volume_size + 7) >> 3;
-			need = ((need + cluster_size - 1) >>
-				cluster_size_bits) << cluster_size_bits;
-
-			if (need <= BITMAP_AUTO_MAX) 
-				break;
-		}
-
-		s->cluster_size = cluster_size;
-	}
-
-	s->cluster_size_bits = get_bits(s, s->cluster_size);
-
-	s->volume_size_in_clusters = s->volume_size_in_bytes >> s->cluster_size_bits;
-	s->volume_size_in_blocks = (s->volume_size_in_clusters << s->cluster_size_bits) >> s->blocksize_bits;
-	
-	s->reserved_tail_size = 0;
-
-	if (!s->initial_nodes) {
-		s->initial_nodes =
-			initial_nodes_for_volume(s->volume_size_in_bytes);
-	}
-
-	if (!s->vol_label) {
-		  s->vol_label = strdup("");
-	}
-
-	s->journal_size_in_bytes = figure_journal_size(s->journal_size_in_bytes, s);
-}
-
-int
-get_bits(State *s, int num)
-{
-	int i, bits = 0;
-
-	for (i = 32; i >= 0; i--) {
-		if (num == (1U << i))
-			bits = i;
-	}
-
-	if (bits == 0) {
-		com_err(s->progname, 0,
-			"Could not get bits for number %d", num);
-		exit(1);
-	}
-
-	return bits;
-}
-
-void *
-do_malloc(State *s, size_t size)
-{
-	void *buf;
-
-	buf = malloc(size);
-
-	if (buf == NULL) {
-		com_err(s->progname, 0,
-			"Could not allocate %lu bytes of memory",
-			(unsigned long)size);
-		exit(1);
-	}
-
-	return buf;
-}
-
-void
-do_pwrite(State *s, const void *buf, size_t count, uint64_t offset)
-{
-	ssize_t ret;
-
-	ret = pwrite64(s->fd, buf, count, offset);
-
-	if (ret == -1) {
-		com_err(s->progname, 0, "Could not write: %s",
-			strerror(errno));
-		exit(1);
-	}
-}
-
-AllocGroup *
-initialize_alloc_group(State *s, char *name,
-		       SystemFileDiskRecord *alloc_inode,
-		       uint64_t blkno, uint16_t chain,
-		       uint16_t cpg, uint16_t bpc)
-{
-	AllocGroup *group;
-
-	group = do_malloc(s, sizeof(AllocGroup));
-	memset(group, 0, sizeof(AllocGroup));
-
-	group->gd = do_malloc(s, s->blocksize);
-	memset(group->gd, 0, s->blocksize);
-
-	strcpy(group->gd->bg_signature, OCFS2_GROUP_DESC_SIGNATURE);
-	group->gd->bg_generation = cpu_to_le32(s->vol_generation);
-	group->gd->bg_size = (uint32_t)ocfs2_group_bitmap_size(s->blocksize);
-	group->gd->bg_bits = cpg * bpc;
-	group->gd->bg_chain = chain;
-	group->gd->bg_parent_dinode = alloc_inode->fe_off;
-	group->gd->bg_blkno = blkno;
-
-	/* First bit set to account for the descriptor block */
-	ocfs2_set_bit(0, group->gd->bg_bitmap);
-	group->gd->bg_free_bits_count = group->gd->bg_bits - 1;
-
-	alloc_inode->bi.total_bits = group->gd->bg_bits;
-	alloc_inode->bi.used_bits = alloc_inode->bi.total_bits -
-		group->gd->bg_free_bits_count;
-	group->alloc_inode = alloc_inode;
-
-	group->name = strdup(name);
-
-	return group;
-}
-
-AllocBitmap *
-initialize_bitmap(State *s, uint32_t bits, uint32_t unit_bits,
-		  const char *name, SystemFileDiskRecord *bm_record,
-		  SystemFileDiskRecord *alloc_record)
-{
-	AllocBitmap *bitmap;
-	uint64_t bitmap_len = bm_record->extent_len;
-
-	bitmap = do_malloc(s, sizeof(AllocBitmap));
-	memset(bitmap, 0, sizeof(AllocBitmap));
-
-	bitmap->buf = memalign(s->blocksize, bitmap_len);
-	memset(bitmap->buf, 0, bitmap_len);
-
-	bitmap->valid_bits = bits;
-	bitmap->unit_bits = unit_bits;
-	bitmap->unit = 1 << unit_bits;
-	bitmap->name = strdup(name);
-
-	bm_record->file_size = bitmap_len;
-	bm_record->fe_off = 0ULL;
-
-	bm_record->bi.used_bits = 0;
-	bm_record->bi.total_bits = bits;
-
-	alloc_record->file_size = bits << unit_bits;
-	alloc_record->fe_off = 0ULL;
-
-	bitmap->bm_record = bm_record;
-	bitmap->alloc_record = alloc_record;
-
-	return bitmap;
-}
-
-#if 0
-static void
-destroy_bitmap(AllocBitmap *bitmap)
-{
-	free(bitmap->buf);
-	free(bitmap);
-}
-#endif
-
-int
-find_clear_bits(AllocBitmap *bitmap, uint32_t num_bits, uint32_t offset)
-{
-	uint32_t next_zero, off, count = 0, size, first_zero = -1;
-	void *buf;
-
-	buf = bitmap->buf;
-	size = bitmap->valid_bits;
-	off = offset;
-
-	while ((size - off + count >= num_bits) &&
-	       (next_zero = ocfs2_find_next_bit_clear(buf, size, off)) != size) {
-		if (next_zero >= bitmap->valid_bits)
-			break;
-
-		if (next_zero != off) {
-			first_zero = next_zero;
-			off = next_zero + 1;
-			count = 0;
-		} else {
-			off++;
-			if (count == 0)
-				first_zero = next_zero;
-		}
-
-		count++;
-
-		if (count == num_bits)
-			goto bail;
-	}
-
-	first_zero = -1;
-
-bail:
-	if (first_zero != (uint32_t)-1 && first_zero > bitmap->valid_bits) {
-		fprintf(stderr, "erf... first_zero > bitmap->valid_bits "
-				"(%d > %d)", first_zero, bitmap->valid_bits);
-		first_zero = -1;
-	}
-
-	return first_zero;
-}
-
-int
-alloc_bytes_from_bitmap(State *s, uint64_t bytes, AllocBitmap *bitmap,
-			uint64_t *start, uint64_t *num)
-{
-	uint32_t num_bits = 0;
-
-	num_bits = (bytes + bitmap->unit - 1) >> bitmap->unit_bits;
-
-	return alloc_from_bitmap(s, num_bits, bitmap, start, num);
-}
-
-int
-alloc_from_bitmap(State *s, uint64_t num_bits, AllocBitmap *bitmap,
-		  uint64_t *start, uint64_t *num)
-{
-	uint32_t start_bit = 0;
-	void *buf;
-
-	start_bit = find_clear_bits(bitmap, num_bits, 0);
-
-	if (start_bit == (uint32_t)-1) {
-		com_err(s->progname, 0,
-			"Could not allocate %"PRIu64" bits from %s bitmap",
-			num_bits, bitmap->name);
-		exit(1);
-	}
-
-	*start = ((uint64_t)start_bit) << bitmap->unit_bits;
-	*num = ((uint64_t)num_bits) << bitmap->unit_bits;
-
-	buf = do_malloc(s, *num);
-	memset(buf, 0, *num);
-
-	do_pwrite(s, buf, *num, *start);
-
-	bitmap->bm_record->bi.used_bits += num_bits;
-
-	while (num_bits--) {
-		ocfs2_set_bit(start_bit, bitmap->buf);
-		start_bit++;
-	}
-
-	free(buf);
-
-	return 0;
-}
-
-int alloc_from_group(State *s, uint16_t count,
-			    AllocGroup *group, uint64_t *start_blkno,
-			    uint16_t *num_bits)
-{
-	uint16_t start_bit, end_bit;
-
-	start_bit = ocfs2_find_first_bit_clear(group->gd->bg_bitmap,
-					       group->gd->bg_bits);
-
-	while (start_bit < group->gd->bg_bits) {
-		end_bit = ocfs2_find_next_bit_set(group->gd->bg_bitmap,
-						  group->gd->bg_bits,
-						  start_bit);
-		if ((end_bit - start_bit) >= count) {
-			*num_bits = count;
-			for (*num_bits = 0; *num_bits < count; *num_bits += 1) {
-				ocfs2_set_bit(start_bit + *num_bits,
-					      group->gd->bg_bitmap);
-			}
-			group->gd->bg_free_bits_count -= *num_bits;
-			group->alloc_inode->bi.used_bits += *num_bits;
-			*start_blkno = group->gd->bg_blkno + start_bit;
-			return 0;
-		}
-		start_bit = end_bit;
-	}
-
-	com_err(s->progname, 0,
-		"Could not allocate %"PRIu16" bits from %s alloc group",
-		count, group->name);
-	exit(1);
-
-	return 1;
-}
-
-uint64_t
-alloc_inode(State *s, uint16_t *suballoc_bit)
-{
-	uint64_t ret;
-	uint16_t num;
-
-	alloc_from_group(s, 1, s->system_group,
-			 &ret, &num);
-
-        *suballoc_bit = (int)(ret - s->system_group->gd->bg_blkno);
-
-        /* Did I mention I hate this code? */
-	return (ret << s->blocksize_bits);
-}
-
-DirData *
-alloc_directory(State *s)
-{
-	DirData *dir;
-
-	dir = do_malloc(s, sizeof(DirData));
-	memset(dir, 0, sizeof(DirData));
-
-	return dir;
-}
-
-void
-add_entry_to_directory(State *s, DirData *dir, char *name, uint64_t byte_off,
-		       uint8_t type)
-{
-	struct ocfs2_dir_entry *de, *de1;
-	int new_rec_len;
-	void *new_buf, *p;
-	int new_size, rec_len, real_len;
-
-	new_rec_len = OCFS2_DIR_REC_LEN(strlen(name));
-
-	if (dir->buf) {
-		de = (struct ocfs2_dir_entry *)(dir->buf + dir->last_off);
-		rec_len = le16_to_cpu(de->rec_len);
-		real_len = OCFS2_DIR_REC_LEN(de->name_len);
-
-		if ((le64_to_cpu(de->inode) == 0 && rec_len >= new_rec_len) ||
-		    (rec_len >= real_len + new_rec_len)) {
-			if (le64_to_cpu(de->inode)) {
-				de1 =(struct ocfs2_dir_entry *) ((char *) de + real_len);
-				de1->rec_len = cpu_to_le16(le16_to_cpu(de->rec_len) - real_len);
-				de->rec_len = cpu_to_le16(real_len);
-				de = de1;
-			}
-
-			goto got_it;
-		}
-
-		new_size = dir->record->file_size + s->blocksize;
-	} else {
-		new_size = s->blocksize;
-	}
-
-	new_buf = memalign(s->blocksize, new_size);
-
-	if (new_buf == NULL) {
-		com_err(s->progname, 0, "Failed to grow directory");
-		exit(1);
-	}
-
-	if (dir->buf) {
-		memcpy(new_buf, dir->buf, dir->record->file_size);
-		free(dir->buf);
-		p = new_buf + dir->record->file_size;
-		memset(p, 0, s->blocksize);
-	} else {
-		p = new_buf;
-		memset(new_buf, 0, new_size);
-	}
-
-	dir->buf = new_buf;
-	dir->record->file_size = new_size;
-
-	de = (struct ocfs2_dir_entry *)p;
-	de->inode = 0;
-	de->rec_len = cpu_to_le16(s->blocksize);
-
-got_it:
-	de->name_len = strlen(name);
-
-	de->inode = cpu_to_le64(byte_off >> s->blocksize_bits);
-
-	de->file_type = type;
-
-        strcpy(de->name, name);
-
-        dir->last_off = ((char *)de - (char *)dir->buf);
-
-        if (type == OCFS2_FT_DIR)
-                dir->record->links++;
-}
-
-uint32_t
-blocks_needed(State *s)
-{
-	uint32_t num;
-
-	num = LEADING_SPACE_BLOCKS;
-	num += SUPERBLOCK_BLOCKS;
-	num += FILE_ENTRY_BLOCKS;
-	num += AUTOCONF_BLOCKS(s->initial_nodes, 32);
-	num += PUBLISH_BLOCKS(s->initial_nodes, 32);
-	num += VOTE_BLOCKS(s->initial_nodes, 32);
-	num += (s->initial_nodes * NUM_LOCAL_SYSTEM_FILES);
-	num += SLOP_BLOCKS;
-
-	return num;
-}
-
-uint32_t
-system_dir_blocks_needed(State *s)
-{
-	int bytes_needed = 0;
-	int each = OCFS2_DIR_REC_LEN(SYSTEM_FILE_NAME_MAX);
-	int entries_per_block = s->blocksize / each;
-
-	bytes_needed = (blocks_needed(s) + entries_per_block -
-			1 / entries_per_block) << s->blocksize_bits;
-
-	return (bytes_needed + s->cluster_size - 1) >> s->cluster_size_bits;
-}
-
-void
-adjust_volume_size(State *s)
-{
-	uint32_t max;
-	uint64_t vsize = s->volume_size_in_bytes -
-		(MIN_RESERVED_TAIL_BLOCKS << s->blocksize_bits);
-
-	max = MAX(s->pagesize_bits, s->blocksize_bits);
-	max = MAX(max, s->cluster_size_bits);
-
-	vsize >>= max;
-	vsize <<= max;
-
-	s->volume_size_in_blocks = vsize >> s->blocksize_bits;
-	s->volume_size_in_clusters = vsize >> s->cluster_size_bits;
-	s->reserved_tail_size = s->volume_size_in_bytes - vsize;
-	s->volume_size_in_bytes = vsize;
-}
-
-/* this will go away once we have patches to jbd to support 64bit blocks.
- * ocfs2 will only fail mounts when it finds itself asked to mount a large
- * device in a kernel that doesn't have a smarter jbd. */
-void
-check_32bit_blocks(State *s)
-{
-	uint64_t max = UINT32_MAX;
-       
-	if (s->volume_size_in_blocks <= max)
-		return;
-
-	fprintf(stderr, "ERROR: jbd can only store block numbers in 32 bits. "
-		"%s can hold %"PRIu64" blocks which overflows this limit. "
-		"Consider increasing the block size or decreasing the device "
-		"size.\n", s->device_name, s->volume_size_in_blocks);
-	exit(1);
-}
-
-void
-format_superblock(State *s, SystemFileDiskRecord *rec,
-		  SystemFileDiskRecord *root_rec, SystemFileDiskRecord *sys_rec)
-{
-	ocfs2_dinode *di;
-	uint64_t super_off = rec->fe_off;
-
-	di = do_malloc(s, s->blocksize);
-	memset(di, 0, s->blocksize);
-
-	strcpy(di->i_signature, OCFS2_SUPER_BLOCK_SIGNATURE);
-	di->i_suballoc_node = cpu_to_le16((__u16)-1);
-	di->i_suballoc_bit = cpu_to_le16((__u16)-1);
-
-	di->i_atime = 0;
-	di->i_ctime = cpu_to_le64(s->format_time);
-	di->i_mtime = cpu_to_le64(s->format_time);
-	di->i_blkno = cpu_to_le64(super_off >> s->blocksize_bits);
-	di->i_flags = cpu_to_le32(OCFS2_VALID_FL | OCFS2_SYSTEM_FL |
-				  OCFS2_SUPER_BLOCK_FL);
-	di->i_clusters = s->volume_size_in_clusters;
-	di->id2.i_super.s_major_rev_level = cpu_to_le16(OCFS2_MAJOR_REV_LEVEL);
-	di->id2.i_super.s_minor_rev_level = cpu_to_le16(OCFS2_MINOR_REV_LEVEL);
-	di->id2.i_super.s_root_blkno = cpu_to_le64(root_rec->fe_off >> s->blocksize_bits);
-	di->id2.i_super.s_system_dir_blkno = cpu_to_le64(sys_rec->fe_off >> s->blocksize_bits);
-	di->id2.i_super.s_mnt_count = 0;
-	di->id2.i_super.s_max_mnt_count = cpu_to_le16(OCFS2_DFL_MAX_MNT_COUNT);
-	di->id2.i_super.s_state = 0;
-	di->id2.i_super.s_errors = 0;
-	di->id2.i_super.s_lastcheck = cpu_to_le64(s->format_time);
-	di->id2.i_super.s_checkinterval = cpu_to_le32(OCFS2_DFL_CHECKINTERVAL);
-	di->id2.i_super.s_creator_os = cpu_to_le32(OCFS2_OS_LINUX);
-	di->id2.i_super.s_blocksize_bits = cpu_to_le32(s->blocksize_bits);
-	di->id2.i_super.s_clustersize_bits = cpu_to_le32(s->cluster_size_bits);
-	di->id2.i_super.s_max_nodes = cpu_to_le32(s->initial_nodes);
-
-	strcpy(di->id2.i_super.s_label, s->vol_label);
-	memcpy(di->id2.i_super.s_uuid, s->uuid, 16);
-
-	do_pwrite(s, di, s->blocksize, super_off);
-	free(di);
-}
-
-int 
-ocfs2_clusters_per_group(int block_size, int cluster_size_bits)
-{
-	int bytes;
-
-	switch (block_size) {
-	case (4096):
-	case (2048):
-		bytes = 4 * ONE_MEGA_BYTE;
-		break;
-	case (1024):
-		bytes = 2 * ONE_MEGA_BYTE;
-		break;
-	case (512):
-	default:
-		bytes = ONE_MEGA_BYTE;
-		break;
-	}
-
-	return(bytes >> cluster_size_bits);
-}
-
-void
-format_file(State *s, SystemFileDiskRecord *rec)
-{
-	ocfs2_dinode *di;
-	int mode;
-	uint32_t clusters;
-
-	mode = rec->dir ? 0755 | S_IFDIR : 0644 | S_IFREG;
-
-	clusters = (rec->extent_len + s->cluster_size - 1) >> s->cluster_size_bits;
-
-	di = do_malloc(s, s->blocksize);
-	memset(di, 0, s->blocksize);
-
-	strcpy(di->i_signature, OCFS2_INODE_SIGNATURE);
-	di->i_generation = cpu_to_le32(s->vol_generation);
-	di->i_suballoc_node = cpu_to_le16(-1);
-        di->i_suballoc_bit = cpu_to_le16(rec->suballoc_bit);
-	di->i_blkno = cpu_to_le64(rec->fe_off >> s->blocksize_bits);
-	di->i_uid = 0;
-	di->i_gid = 0;
-	di->i_size = cpu_to_le64(rec->file_size);
-	di->i_mode = cpu_to_le16(mode);
-	di->i_links_count = cpu_to_le16(rec->links);
-	di->i_flags = cpu_to_le32(rec->flags);
-	di->i_atime = di->i_ctime = di->i_mtime = cpu_to_le64(s->format_time);
-	di->i_dtime = 0;
-	di->i_clusters = cpu_to_le32(clusters);
-
-	if (rec->flags & OCFS2_LOCAL_ALLOC_FL) {
-		di->id2.i_lab.la_size =
-			cpu_to_le16(ocfs2_local_alloc_size(s->blocksize));
-		goto write_out;
-	}
-
-	if (rec->flags & OCFS2_BITMAP_FL) {
-		di->id1.bitmap1.i_used = cpu_to_le32(rec->bi.used_bits);
-		di->id1.bitmap1.i_total = cpu_to_le32(rec->bi.total_bits);
-	}
-
-	if (rec->flags & OCFS2_CHAIN_FL) {
-		di->id2.i_chain.cl_count = 
-			cpu_to_le16(ocfs2_chain_recs_per_inode(s->blocksize));
-		di->id2.i_chain.cl_cpg = 
-			cpu_to_le16(ocfs2_clusters_per_group(s->blocksize, 
-						 s->cluster_size_bits));
-		di->id2.i_chain.cl_bpc = 
-			cpu_to_le16(s->cluster_size / s->blocksize);
-		di->id2.i_chain.cl_next_free_rec = 0;
-
-		if (rec->chain_off) {
-			di->id2.i_chain.cl_next_free_rec =
-				cpu_to_le16(1);
-			di->id2.i_chain.cl_recs[0].c_free =
-				cpu_to_le16(rec->group->gd->bg_free_bits_count);
-			di->id2.i_chain.cl_recs[0].c_total =
-				cpu_to_le16(rec->group->gd->bg_bits);
-			di->id2.i_chain.cl_recs[0].c_blkno =
-				cpu_to_le64(rec->chain_off >> s->blocksize_bits);
-                        di->id2.i_chain.cl_cpg =
-                            cpu_to_le16(rec->group->gd->bg_bits /
-                                        le16_to_cpu(di->id2.i_chain.cl_bpc));
-			di->i_clusters =
-                            cpu_to_le64(di->id2.i_chain.cl_cpg);
-			di->i_size =
-                            cpu_to_le64(di->i_clusters << s->cluster_size_bits);
-		}
-		goto write_out;
-	}
-	di->id2.i_list.l_count =
-		cpu_to_le16(ocfs2_extent_recs_per_inode(s->blocksize));
-	di->id2.i_list.l_next_free_rec = 0;
-	di->id2.i_list.l_tree_depth = 0;
-
-	if (rec->extent_len) {
-		di->id2.i_list.l_next_free_rec = cpu_to_le16(1);
-		di->id2.i_list.l_recs[0].e_cpos = 0;
-		di->id2.i_list.l_recs[0].e_clusters = cpu_to_le32(clusters);
-		di->id2.i_list.l_recs[0].e_blkno =
-			cpu_to_le64(rec->extent_off >> s->blocksize_bits);
-	}
-
-write_out:
-	do_pwrite(s, di, s->blocksize, rec->fe_off);
-	free(di);
-}
-
-void
-write_metadata(State *s, SystemFileDiskRecord *rec, void *src)
-{
-	void *buf;
-
-	buf = do_malloc(s, rec->extent_len);
-	memset(buf, 0, rec->extent_len);
-
-	memcpy(buf, src, rec->file_size);
-
-	do_pwrite(s, buf, rec->extent_len, rec->extent_off);
-
-	free(buf);
-}
-
-void
-write_bitmap_data(State *s, AllocBitmap *bitmap)
-{
-	write_metadata(s, bitmap->bm_record, bitmap->buf);
-}
-
-void
-write_group_data(State *s, AllocGroup *group)
-{
-	do_pwrite(s, group->gd, s->blocksize,
-		  group->gd->bg_blkno << s->blocksize_bits);
-}
-
-void
-write_directory_data(State *s, DirData *dir)
-{
-	write_metadata(s, dir->record, dir->buf);
-}
-
-void
-format_leading_space(State *s)
-{
-	int num_blocks = 2, size;
-	ocfs1_vol_disk_hdr *hdr;
-	ocfs1_vol_label *lbl;
-	void *buf;
-	char *p;
-
-	size = num_blocks << s->blocksize_bits;
-
-	p = buf = do_malloc(s, size);
-	memset(buf, 2, size);
-
-	hdr = buf;
-	strcpy(hdr->signature, "this is an ocfs2 volume");
-	strcpy(hdr->mount_point, "this is an ocfs2 volume");
-
-	p += 512;
-	lbl = (ocfs1_vol_label *)p;
-	strcpy(lbl->label, "this is an ocfs2 volume");
-	strcpy(lbl->cluster_name, "this is an ocfs2 volume");
-
-	do_pwrite(s, buf, size, 0);
-	free(buf);
-}
-
-void
-replacement_journal_create(State *s, uint64_t journal_off)
-{
-	journal_superblock_t *sb;
-	void *buf;
-
-	buf = do_malloc(s, s->journal_size_in_bytes);
-	memset(buf, 0, s->journal_size_in_bytes);
-
-	sb = buf;
-
-	sb->s_header.h_magic     = htonl(JFS_MAGIC_NUMBER);
-	sb->s_header.h_blocktype = htonl(JFS_SUPERBLOCK_V2);
-
-	sb->s_blocksize = cpu_to_be32(s->blocksize);
-	sb->s_maxlen =
-		cpu_to_be32(s->journal_size_in_bytes >> s->blocksize_bits);
-
-	if (s->blocksize == 512)
-		sb->s_first = htonl(2);
-	else
-		sb->s_first = htonl(1);
-
-	sb->s_start    = htonl(1);
-	sb->s_sequence = htonl(1);
-	sb->s_errno    = htonl(0);
-
-	do_pwrite(s, buf, s->journal_size_in_bytes, journal_off);
-	free(buf);
-}
-
-void
-open_device(State *s)
-{
-	s->fd = open64(s->device_name, O_RDWR);
-
-	if (s->fd == -1) {
-		com_err(s->progname, 0,
-		        "Could not open device %s: %s",
-			s->device_name, strerror (errno));
-		exit(1);
-	}
-}
-
-void
-close_device(State *s)
-{
-	fsync(s->fd);
-	close(s->fd);
-	s->fd = -1;
-}
-
-int
-initial_nodes_for_volume(uint64_t size)
-{
-	int i, shift = ONE_GB_SHIFT;
-	int defaults[4] = { 2, 4, 8, 16 };
-
-	for (i = 0, shift = ONE_GB_SHIFT; i < 4; i++, shift += 3) {
-		size >>= shift;
-
-		if (!size)
-			break;
-	}
-
-	return (i < 4) ? defaults[i] : 32;
-}
-
-/* XXX: Hm, maybe replace this with libuuid? */
-void
-generate_uuid(State *s)
-{
-	int randfd = 0;
-	int readlen = 0;
-	int len = 0;
-
-	if ((randfd = open("/dev/urandom", O_RDONLY)) == -1) {
-		com_err(s->progname, 0,
-			"Error opening /dev/urandom: %s", strerror(errno));
-		exit(1);
-	}
-
-	s->uuid = do_malloc(s, MAX_VOL_ID_LENGTH);
-
-	while (readlen < MAX_VOL_ID_LENGTH) {
-		if ((len = read(randfd, s->uuid + readlen, MAX_VOL_ID_LENGTH - readlen)) == -1) {
-			com_err(s->progname, 0,
-				"Error reading from /dev/urandom: %s",
-				strerror(errno));
-			exit(1);
-		}
-
-		readlen += len;
-	}
-
-	close(randfd);
-}
-
-void create_generation(State *s)
-{
-	int randfd = 0;
-	int readlen = sizeof(s->vol_generation);
-
-	if ((randfd = open("/dev/urandom", O_RDONLY)) == -1) {
-		com_err(s->progname, 0,
-			"Error opening /dev/urandom: %s", strerror(errno));
-		exit(1);
-	}
-
-	if (read(randfd, &s->vol_generation, readlen) != readlen) {
-		com_err(s->progname, 0,
-			"Error reading from /dev/urandom: %s",
-			strerror(errno));
-		exit(1);
-	}
-
-	close(randfd);
-}
-
-void
-write_autoconfig_header(State *s, SystemFileDiskRecord *rec)
-{
-	ocfs_node_config_hdr *hdr;
-
-	hdr = do_malloc(s, s->blocksize);
-	memset(hdr, 0, s->blocksize);
-
-	strcpy(hdr->signature, OCFS2_NODE_CONFIG_HDR_SIGN);
-	hdr->version = OCFS2_NODE_CONFIG_VER;
-	hdr->num_nodes = 0;
-	hdr->disk_lock.dl_master = -1;
-	hdr->last_node = 0;
-
-	do_pwrite(s, hdr, s->blocksize, rec->extent_off);
-	free(hdr);
-}
-
-void
-init_record(State *s, SystemFileDiskRecord *rec, int type, int dir)
-{
-	memset(rec, 0, sizeof(SystemFileDiskRecord));
-
-	rec->flags = OCFS2_VALID_FL | OCFS2_SYSTEM_FL;
-	rec->dir = dir;
-
-	rec->links = dir ? 0 : 1;
-
-	rec->bi.used_bits = rec->bi.total_bits = 0;
-	rec->flags = (OCFS2_VALID_FL | OCFS2_SYSTEM_FL);
-
-	switch (type) {
-	case SFI_JOURNAL:
-		rec->flags |= OCFS2_JOURNAL_FL;
-		break;
-	case SFI_BITMAP:
-		rec->flags |= OCFS2_BITMAP_FL;
-		break;
-	case SFI_LOCAL_ALLOC:
-		rec->flags |= OCFS2_LOCAL_ALLOC_FL;
-		break;
-	case SFI_DLM:
-		rec->flags |= OCFS2_DLM_FL;
-		break;
-	case SFI_CHAIN:
-		rec->flags |= (OCFS2_BITMAP_FL|OCFS2_CHAIN_FL);
-		break;
-	case SFI_OTHER:
-		break;
-	}
-}
-
-
-void
-print_state(State *s)
-{
-	if (s->quiet)
-		return;
-
-	printf("Filesystem label=%s\n", s->vol_label);
-	printf("Block size=%u (bits=%u)\n", s->blocksize, s->blocksize_bits);
-	printf("Cluster size=%u (bits=%u)\n", s->cluster_size, s->cluster_size_bits);
-	printf("Volume size=%llu (%u clusters) (%"PRIu64" blocks)\n",
-	       (unsigned long long) s->volume_size_in_bytes,
-	       s->volume_size_in_clusters, s->volume_size_in_blocks);
-	printf("Initial number of nodes: %u\n", s->initial_nodes);
-}

Deleted: trunk/mkfs.ocfs2/mkfs_utils.h
===================================================================
--- trunk/mkfs.ocfs2/mkfs_utils.h	2004-11-02 04:42:58 UTC (rev 356)
+++ trunk/mkfs.ocfs2/mkfs_utils.h	2004-11-03 19:26:40 UTC (rev 357)
@@ -1,81 +0,0 @@
-/* -*- mode: c; c-basic-offset: 8; -*-
- * vim: noexpandtab sw=8 ts=8 sts=0:
- *
- * mkfs_utils.h
- *
- * OCFS2 format utility
- *
- * Copyright (C) 2004 Oracle Corporation.  All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License, version 2,  as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 021110-1307, USA.
- *
- * Authors: Manish Singh, Kurt Hackel
- */
-
-#ifndef __MKFS_UTILS_H__
-#define __MKFS_UTILS_H__
-
-#include <mkfs.h>
-
-int get_number(char *arg, uint64_t *res);
-void fill_defaults(State *s);
-int get_bits(State *s, int num);
-void *do_malloc(State *s, size_t size);
-void do_pwrite(State *s, const void *buf, size_t count, uint64_t offset);
-AllocBitmap *initialize_bitmap(State *s, uint32_t bits, uint32_t unit_bits,
-			       const char *name,
-			       SystemFileDiskRecord *bm_record,
-			       SystemFileDiskRecord *alloc_record);
-int find_clear_bits(AllocBitmap *bitmap, uint32_t num_bits, uint32_t offset);
-int alloc_bytes_from_bitmap(State *s, uint64_t bytes, AllocBitmap *bitmap,
-			    uint64_t *start, uint64_t *num);
-int alloc_from_bitmap(State *s, uint64_t num_bits, AllocBitmap *bitmap,
-		      uint64_t *start, uint64_t *num);
-uint64_t alloc_inode(State *s, uint16_t *suballoc_bit);
-DirData *alloc_directory(State *s);
-void add_entry_to_directory(State *s, DirData *dir, char *name,
-			    uint64_t byte_off, uint8_t type);
-uint32_t blocks_needed(State *s);
-uint32_t system_dir_blocks_needed(State *s);
-void adjust_volume_size(State *s);
-void check_32bit_blocks(State *s);
-void format_superblock(State *s, SystemFileDiskRecord *rec,
-		       SystemFileDiskRecord *root_rec,
-		       SystemFileDiskRecord *sys_rec);
-void format_file(State *s, SystemFileDiskRecord *rec);
-void write_metadata(State *s, SystemFileDiskRecord *rec, void *src);
-void write_bitmap_data(State *s, AllocBitmap *bitmap);
-void write_directory_data(State *s, DirData *dir);
-void write_group_data(State *s, AllocGroup *group);
-void format_leading_space(State *s);
-void replacement_journal_create(State *s, uint64_t journal_off);
-void open_device(State *s);
-void close_device(State *s);
-int initial_nodes_for_volume(uint64_t size);
-void generate_uuid(State *s);
-void create_generation(State *s);
-void write_autoconfig_header(State *s, SystemFileDiskRecord *rec);
-void init_record(State *s, SystemFileDiskRecord *rec, int type, int dir);
-void print_state(State *s);
-int ocfs2_clusters_per_group(int block_size,
-			     int cluster_size_bits);
-AllocGroup * initialize_alloc_group(State *s, char *name,
-				    SystemFileDiskRecord *alloc_inode,
-				    uint64_t blkno, uint16_t chain,
-				    uint16_t cpg, uint16_t bpc);
-uint64_t figure_journal_size(uint64_t size, State *s);
-int alloc_from_group(State *s, uint16_t count, AllocGroup *group,
-		     uint64_t *start_blkno, uint16_t *num_bits);
-#endif



More information about the Ocfs2-tools-commits mailing list