Index: uspace/app/mkminix/mkminix.c
===================================================================
--- uspace/app/mkminix/mkminix.c	(revision 7a34efde7ef1777cd6e6c71b7bac49b56d579040)
+++ uspace/app/mkminix/mkminix.c	(revision 197b6711f8e6df080d2b7c4515812dea65796c0c)
@@ -69,9 +69,7 @@
 /*Generic MFS superblock*/
 struct mfs_sb_info {
-	devmap_handle_t handle;
 	uint64_t n_inodes;
 	uint64_t n_zones;
 	aoff64_t dev_nblocks;
-	aoff64_t devblock_size;
 	unsigned long ibmap_blocks;
 	unsigned long zbmap_blocks;
@@ -91,12 +89,14 @@
 static int	num_of_set_bits(uint32_t n);
 static int	init_superblock(struct mfs_sb_info *sb);
-static int	write_superblock(struct mfs_sb_info *sbi);
-static int	write_superblock3(struct mfs_sb_info *sbi);
-static int	init_bitmaps(struct mfs_sb_info *sb);
-static int	init_inode_table(struct mfs_sb_info *sb);
-static int	make_root_ino(struct mfs_sb_info *sb);
-static int	make_root_ino3(struct mfs_sb_info *sb);
+static int	write_superblock(const struct mfs_sb_info *sbi);
+static int	write_superblock3(const struct mfs_sb_info *sbi);
+static int	init_bitmaps(const struct mfs_sb_info *sb);
+static int	init_inode_table(const struct mfs_sb_info *sb);
+static int	make_root_ino(const struct mfs_sb_info *sb);
+static int	make_root_ino3(const struct mfs_sb_info *sb);
 static void	mark_bmap(uint32_t *bmap, int idx, int v);
-static int	insert_dentries(struct mfs_sb_info *sb);
+static int	insert_dentries(const struct mfs_sb_info *sb);
+
+static devmap_handle_t handle;
 
 static struct option const long_options[] = {
@@ -115,4 +115,5 @@
 	int rc, c, opt_ind;
 	char *device_name;
+	aoff64_t devblock_size;
 
 	struct mfs_sb_info sb;
@@ -200,5 +201,5 @@
 	}
 
-	rc = devmap_device_get_handle(device_name, &sb.handle, 0);
+	rc = devmap_device_get_handle(device_name, &handle, 0);
 	if (rc != EOK) {
 		printf(NAME ": Error resolving device `%s'.\n", device_name);
@@ -206,5 +207,5 @@
 	}
 
-	rc = block_init(sb.handle, MFS_MIN_BLOCKSIZE);
+	rc = block_init(handle, MFS_MIN_BLOCKSIZE);
 	if (rc != EOK)  {
 		printf(NAME ": Error initializing libblock.\n");
@@ -212,5 +213,5 @@
 	}
 
-	rc = block_get_bsize(sb.handle, &sb.devblock_size);
+	rc = block_get_bsize(handle, &devblock_size);
 	if (rc != EOK) {
 		printf(NAME ": Error determining device block size.\n");
@@ -218,5 +219,5 @@
 	}
 
-	rc = block_get_nblocks(sb.handle, &sb.dev_nblocks);
+	rc = block_get_nblocks(handle, &sb.dev_nblocks);
 	if (rc != EOK) {
 		printf(NAME ": Warning, failed to obtain block device size.\n");
@@ -226,5 +227,5 @@
 	}
 
-	if (sb.devblock_size != 512) {
+	if (devblock_size != 512) {
 		printf(NAME ": Error. Device block size is not 512 bytes.\n");
 		return 2;
@@ -274,5 +275,5 @@
 }
 
-static int insert_dentries(struct mfs_sb_info *sb)
+static int insert_dentries(const struct mfs_sb_info *sb)
 {
 	void *root_block;
@@ -309,5 +310,5 @@
 	}
 
-	rc = block_write_direct(sb->handle, root_dblock, 1, root_block);
+	rc = block_write_direct(handle, root_dblock, 1, root_block);
 
 	free(root_block);
@@ -315,5 +316,5 @@
 }
 
-static int init_inode_table(struct mfs_sb_info *sb)
+static int init_inode_table(const struct mfs_sb_info *sb)
 {
 	unsigned int i;
@@ -338,5 +339,5 @@
 
 	for (i = 0; i < itable_size; ++i, ++itable_off) {
-		rc = block_write_direct(sb->handle, itable_off, 1, itable_buf);
+		rc = block_write_direct(handle, itable_off, 1, itable_buf);
 
 		if (rc != EOK)
@@ -348,5 +349,5 @@
 }
 
-static int make_root_ino(struct mfs_sb_info *sb)
+static int make_root_ino(const struct mfs_sb_info *sb)
 {
 	struct mfs_inode *ino_buf;
@@ -374,5 +375,5 @@
 	ino_buf[MFS_ROOT_INO].i_dzone[0] = sb->first_data_zone;
 
-	rc = block_write_direct(sb->handle, itable_off, 1, ino_buf);
+	rc = block_write_direct(handle, itable_off, 1, ino_buf);
 
 	free(ino_buf);
@@ -380,5 +381,5 @@
 }
 
-static int make_root_ino3(struct mfs_sb_info *sb)
+static int make_root_ino3(const struct mfs_sb_info *sb)
 {
 	struct mfs2_inode *ino_buf;
@@ -412,5 +413,5 @@
 	ino_buf[MFS_ROOT_INO].i_dzone[0] = sb->first_data_zone;
 
-	rc = block_write_direct(sb->handle, itable_off, 1, ino_buf);
+	rc = block_write_direct(handle, itable_off, 1, ino_buf);
 
 	free(ino_buf);
@@ -496,5 +497,5 @@
 }
 
-static int write_superblock(struct mfs_sb_info *sbi)
+static int write_superblock(const struct mfs_sb_info *sbi)
 {
 	struct mfs_superblock *sb;
@@ -517,5 +518,5 @@
 	sb->s_state = MFS_VALID_FS;
 
-	rc = block_write_direct(sbi->handle, MFS_SUPERBLOCK, 1, sb);
+	rc = block_write_direct(handle, MFS_SUPERBLOCK, 1, sb);
 	free(sb);
 
@@ -523,5 +524,5 @@
 }
 
-static int write_superblock3(struct mfs_sb_info *sbi)
+static int write_superblock3(const struct mfs_sb_info *sbi)
 {
 	struct mfs3_superblock *sb;
@@ -544,5 +545,5 @@
 	sb->s_disk_version = 3;
 
-	rc = block_write_direct(sbi->handle, MFS_SUPERBLOCK, 1, sb);
+	rc = block_write_direct(handle, MFS_SUPERBLOCK, 1, sb);
 	free(sb);
 
@@ -550,5 +551,5 @@
 }
 
-static int init_bitmaps(struct mfs_sb_info *sb)
+static int init_bitmaps(const struct mfs_sb_info *sb)
 {
 	uint32_t *ibmap_buf, *zbmap_buf;
@@ -584,5 +585,5 @@
 
 	for (i = 0; i < ibmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, start_block + i,
+		if ((rc = block_write_direct(handle, start_block + i,
 				1, (ibmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
@@ -592,5 +593,5 @@
 
 	for (i = 0; i < zbmap_nblocks; ++i) {
-		if ((rc = block_write_direct(sb->handle, start_block + i,
+		if ((rc = block_write_direct(handle, start_block + i,
 				1, (zbmap_buf8 + i * MFS_BLOCKSIZE))) != EOK)
 			return rc;
