btrfs-progs: mkfs: move btrfs_make_root_dir from utils.c
The helper is used in several tools but logically belongs to mkfs, so put it to the common section. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
d591cd7c08
commit
cfbcfaa4e4
3
Makefile
3
Makefile
|
@ -188,7 +188,8 @@ libbtrfsutil_objects = libbtrfsutil/errors.o libbtrfsutil/filesystem.o \
|
||||||
libbtrfsutil/subvolume.o libbtrfsutil/qgroup.o \
|
libbtrfsutil/subvolume.o libbtrfsutil/qgroup.o \
|
||||||
libbtrfsutil/stubs.o
|
libbtrfsutil/stubs.o
|
||||||
convert_objects = convert/main.o convert/common.o convert/source-fs.o \
|
convert_objects = convert/main.o convert/common.o convert/source-fs.o \
|
||||||
convert/source-ext2.o convert/source-reiserfs.o
|
convert/source-ext2.o convert/source-reiserfs.o \
|
||||||
|
mkfs/common.o
|
||||||
mkfs_objects = mkfs/main.o mkfs/common.o mkfs/rootdir.o
|
mkfs_objects = mkfs/main.o mkfs/common.o mkfs/rootdir.o
|
||||||
image_objects = image/main.o image/sanitize.o
|
image_objects = image/main.o image/sanitize.o
|
||||||
all_objects = $(objects) $(cmds_objects) $(libbtrfs_objects) $(convert_objects) \
|
all_objects = $(objects) $(cmds_objects) $(libbtrfs_objects) $(convert_objects) \
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include "check/mode-lowmem.h"
|
#include "check/mode-lowmem.h"
|
||||||
#include "check/qgroup-verify.h"
|
#include "check/qgroup-verify.h"
|
||||||
#include "common/open-utils.h"
|
#include "common/open-utils.h"
|
||||||
|
#include "mkfs/common.h"
|
||||||
|
|
||||||
u64 bytes_used = 0;
|
u64 bytes_used = 0;
|
||||||
u64 total_csum_bytes = 0;
|
u64 total_csum_bytes = 0;
|
||||||
|
|
|
@ -59,45 +59,6 @@ static unsigned short rand_seed[3];
|
||||||
|
|
||||||
struct btrfs_config bconf;
|
struct btrfs_config bconf;
|
||||||
|
|
||||||
int btrfs_make_root_dir(struct btrfs_trans_handle *trans,
|
|
||||||
struct btrfs_root *root, u64 objectid)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
struct btrfs_inode_item inode_item;
|
|
||||||
time_t now = time(NULL);
|
|
||||||
|
|
||||||
memset(&inode_item, 0, sizeof(inode_item));
|
|
||||||
btrfs_set_stack_inode_generation(&inode_item, trans->transid);
|
|
||||||
btrfs_set_stack_inode_size(&inode_item, 0);
|
|
||||||
btrfs_set_stack_inode_nlink(&inode_item, 1);
|
|
||||||
btrfs_set_stack_inode_nbytes(&inode_item, root->fs_info->nodesize);
|
|
||||||
btrfs_set_stack_inode_mode(&inode_item, S_IFDIR | 0755);
|
|
||||||
btrfs_set_stack_timespec_sec(&inode_item.atime, now);
|
|
||||||
btrfs_set_stack_timespec_nsec(&inode_item.atime, 0);
|
|
||||||
btrfs_set_stack_timespec_sec(&inode_item.ctime, now);
|
|
||||||
btrfs_set_stack_timespec_nsec(&inode_item.ctime, 0);
|
|
||||||
btrfs_set_stack_timespec_sec(&inode_item.mtime, now);
|
|
||||||
btrfs_set_stack_timespec_nsec(&inode_item.mtime, 0);
|
|
||||||
btrfs_set_stack_timespec_sec(&inode_item.otime, now);
|
|
||||||
btrfs_set_stack_timespec_nsec(&inode_item.otime, 0);
|
|
||||||
|
|
||||||
if (root->fs_info->tree_root == root)
|
|
||||||
btrfs_set_super_root_dir(root->fs_info->super_copy, objectid);
|
|
||||||
|
|
||||||
ret = btrfs_insert_inode(trans, root, objectid, &inode_item);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = btrfs_insert_inode_ref(trans, root, "..", 2, objectid, objectid, 0);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
btrfs_set_root_dirid(&root->root_item, objectid);
|
|
||||||
ret = 0;
|
|
||||||
error:
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct pending_dir {
|
struct pending_dir {
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
char name[PATH_MAX];
|
char name[PATH_MAX];
|
||||||
|
|
|
@ -42,9 +42,6 @@ enum exclusive_operation {
|
||||||
BTRFS_EXCLOP_UNKNOWN = -1,
|
BTRFS_EXCLOP_UNKNOWN = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
int btrfs_make_root_dir(struct btrfs_trans_handle *trans,
|
|
||||||
struct btrfs_root *root, u64 objectid);
|
|
||||||
|
|
||||||
enum btrfs_csum_type parse_csum_type(const char *s);
|
enum btrfs_csum_type parse_csum_type(const char *s);
|
||||||
u64 parse_size_from_string(const char *s);
|
u64 parse_size_from_string(const char *s);
|
||||||
u64 parse_qgroupid(const char *p);
|
u64 parse_qgroupid(const char *p);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "kernel-shared/ctree.h"
|
#include "kernel-shared/ctree.h"
|
||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/zoned.h"
|
#include "kernel-shared/zoned.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
#include "common/path-utils.h"
|
#include "common/path-utils.h"
|
||||||
|
@ -490,6 +491,45 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int btrfs_make_root_dir(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root, u64 objectid)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct btrfs_inode_item inode_item;
|
||||||
|
time_t now = time(NULL);
|
||||||
|
|
||||||
|
memset(&inode_item, 0, sizeof(inode_item));
|
||||||
|
btrfs_set_stack_inode_generation(&inode_item, trans->transid);
|
||||||
|
btrfs_set_stack_inode_size(&inode_item, 0);
|
||||||
|
btrfs_set_stack_inode_nlink(&inode_item, 1);
|
||||||
|
btrfs_set_stack_inode_nbytes(&inode_item, root->fs_info->nodesize);
|
||||||
|
btrfs_set_stack_inode_mode(&inode_item, S_IFDIR | 0755);
|
||||||
|
btrfs_set_stack_timespec_sec(&inode_item.atime, now);
|
||||||
|
btrfs_set_stack_timespec_nsec(&inode_item.atime, 0);
|
||||||
|
btrfs_set_stack_timespec_sec(&inode_item.ctime, now);
|
||||||
|
btrfs_set_stack_timespec_nsec(&inode_item.ctime, 0);
|
||||||
|
btrfs_set_stack_timespec_sec(&inode_item.mtime, now);
|
||||||
|
btrfs_set_stack_timespec_nsec(&inode_item.mtime, 0);
|
||||||
|
btrfs_set_stack_timespec_sec(&inode_item.otime, now);
|
||||||
|
btrfs_set_stack_timespec_nsec(&inode_item.otime, 0);
|
||||||
|
|
||||||
|
if (root->fs_info->tree_root == root)
|
||||||
|
btrfs_set_super_root_dir(root->fs_info->super_copy, objectid);
|
||||||
|
|
||||||
|
ret = btrfs_insert_inode(trans, root, objectid, &inode_item);
|
||||||
|
if (ret)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
ret = btrfs_insert_inode_ref(trans, root, "..", 2, objectid, objectid, 0);
|
||||||
|
if (ret)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
btrfs_set_root_dirid(&root->root_item, objectid);
|
||||||
|
ret = 0;
|
||||||
|
error:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Btrfs minimum size calculation is complicated, it should include at least:
|
* Btrfs minimum size calculation is complicated, it should include at least:
|
||||||
* 1. system group size
|
* 1. system group size
|
||||||
|
|
|
@ -38,6 +38,9 @@
|
||||||
#define BTRFS_MKFS_DEFAULT_DATA_MULTI_DEVICE 0 /* SINGLE */
|
#define BTRFS_MKFS_DEFAULT_DATA_MULTI_DEVICE 0 /* SINGLE */
|
||||||
#define BTRFS_MKFS_DEFAULT_META_MULTI_DEVICE BTRFS_BLOCK_GROUP_RAID1
|
#define BTRFS_MKFS_DEFAULT_META_MULTI_DEVICE BTRFS_BLOCK_GROUP_RAID1
|
||||||
|
|
||||||
|
struct btrfs_trans_handle;
|
||||||
|
struct btrfs_root;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tree root blocks created during mkfs
|
* Tree root blocks created during mkfs
|
||||||
*/
|
*/
|
||||||
|
@ -79,6 +82,8 @@ struct btrfs_mkfs_config {
|
||||||
};
|
};
|
||||||
|
|
||||||
int make_btrfs(int fd, struct btrfs_mkfs_config *cfg);
|
int make_btrfs(int fd, struct btrfs_mkfs_config *cfg);
|
||||||
|
int btrfs_make_root_dir(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root, u64 objectid);
|
||||||
u64 btrfs_min_dev_size(u32 nodesize, int mixed, u64 meta_profile,
|
u64 btrfs_min_dev_size(u32 nodesize, int mixed, u64 meta_profile,
|
||||||
u64 data_profile);
|
u64 data_profile);
|
||||||
int test_minimum_size(const char *file, u64 min_dev_size);
|
int test_minimum_size(const char *file, u64 min_dev_size);
|
||||||
|
|
Loading…
Reference in New Issue