summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ctree.h3
-rw-r--r--mkfs.c14
2 files changed, 7 insertions, 10 deletions
diff --git a/ctree.h b/ctree.h
index 62478941..8d4ba19d 100644
--- a/ctree.h
+++ b/ctree.h
@@ -11,7 +11,8 @@ struct btrfs_trans_handle;
#define BTRFS_ROOT_TREE_OBJECTID 1ULL
#define BTRFS_EXTENT_TREE_OBJECTID 2ULL
#define BTRFS_FS_TREE_OBJECTID 3ULL
-#define BTRFS_FIRST_FREE_OBJECTID 4ULL
+#define BTRFS_ROOT_TREE_DIR_OBJECTID 4ULL
+#define BTRFS_FIRST_FREE_OBJECTID 5ULL
/*
* we can actually store much bigger names, but lets not confuse the rest
diff --git a/mkfs.c b/mkfs.c
index f32aa934..8148259c 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -22,21 +22,16 @@ static inline int ioctl(int fd, int define, u64 *size) { return 0; }
#endif
static int __make_root_dir(struct btrfs_trans_handle *trans,
- struct btrfs_root *root)
+ struct btrfs_root *root, u64 objectid)
{
int ret;
char buf[8];
- u64 objectid;
struct btrfs_key inode_map;
struct btrfs_inode_item inode_item;
buf[0] = '.';
buf[1] = '.';
- ret = btrfs_find_free_objectid(trans, root, 1, &objectid);
- if (ret)
- goto error;
-
inode_map.objectid = objectid;
inode_map.flags = 0;
btrfs_set_key_type(&inode_map, BTRFS_INODE_ITEM_KEY);
@@ -44,7 +39,7 @@ static int __make_root_dir(struct btrfs_trans_handle *trans,
memset(&inode_item, 0, sizeof(inode_item));
btrfs_set_inode_generation(&inode_item, root->fs_info->generation);
- btrfs_set_inode_size(&inode_item, 3);
+ btrfs_set_inode_size(&inode_item, 6);
btrfs_set_inode_nlink(&inode_item, 1);
btrfs_set_inode_nblocks(&inode_item, 1);
btrfs_set_inode_mode(&inode_item, S_IFDIR | 0555);
@@ -83,10 +78,11 @@ static int make_root_dir(int fd) {
return -1;
}
trans = btrfs_start_transaction(root, 1);
- ret = __make_root_dir(trans, root->fs_info->tree_root);
+ ret = __make_root_dir(trans, root->fs_info->tree_root,
+ BTRFS_ROOT_TREE_DIR_OBJECTID);
if (ret)
goto err;
- ret = __make_root_dir(trans, root);
+ ret = __make_root_dir(trans, root, BTRFS_FIRST_FREE_OBJECTID);
if (ret)
goto err;
memcpy(&location, &root->fs_info->fs_root->root_key, sizeof(location));