static void init_super_block (void) { super_s *super; buf_s *buf; FN; buf = bget(Inode_tree.t_dev, SUPER_BLOCK); super = buf->b_data; if (super->sp_magic != SUPER_MAGIC) { super->sp_magic = SUPER_MAGIC; super->sp_root = 0; super->sp_next = SUPER_BLOCK + 1; super->sp_ino = ROOT_INO + 1; bdirty(buf); } bput(buf); init_root_inode(); }
int main(int argc, char **argv) { int ret = 0; int i_argc; char **s_argv; if (argc < 3) { fprintf(stderr, "argument error: %s <mountpoint> [options] <device>\n", argv[0]); exit(1); } log_init(); ret = init_super(argv[argc - 1]); if (ret < 0) { fprintf(stderr, "Invalidate filesystem\n"); exit(1); } i_argc = argc - 1; s_argv = argv; s_argv[argc - 1] = NULL; ctx_equeue_init(); ret = init_root_inode(); if (ret < 0) { fprintf(stderr, "root inode init error\n"); exit(1); } vbfs_init_bitmap(); ret = fuse_main(i_argc, s_argv, &vbfs_op, NULL); log_err("fuse_main end\n"); return ret; }