blob: 7d68997c0c2e67d3a376f0d7853bfb92481845d0 [file] [log] [blame]
Theodore Ts'o24b2c7a1997-06-07 20:42:58 +00001/*
2 * resize2fs.h --- ext2 resizer header file
3 *
4 * Copyright (C) 1997 Theodore Ts'o
5 *
6 * %Begin-Header%
7 * All rights reserved.
8 * %End-Header%
9 */
10
11#include <stdio.h>
12#include <string.h>
13#include <unistd.h>
14#include <stdlib.h>
15#include <sys/types.h>
16#include <sys/time.h>
17
18#ifdef HAVE_LINUX_FS_H
19#include <linux/fs.h>
20#endif
21#include <linux/ext2_fs.h>
22
23#include "ext2fs/ext2fs.h"
Theodore Ts'o24b2c7a1997-06-07 20:42:58 +000024
25#ifdef __STDC__
26#define NOARGS void
27#else
28#define NOARGS
29#define const
30#endif
31
32/*
Theodore Ts'oc762c8e1997-06-17 03:52:12 +000033 * For the extent map
34 */
35typedef struct _ext2_extent *ext2_extent;
36
37/*
38 * For the simple progress meter
39 */
40typedef struct ext2_sim_progress *ext2_sim_progmeter;
41
42/*
Theodore Ts'o05e112a1997-06-14 07:28:44 +000043 * Flags for the resizer; most are debugging flags only
44 */
45#define RESIZE_DEBUG_IO 0x0001
46#define RESIZE_DEBUG_BMOVE 0x0002
47#define RESIZE_DEBUG_INODEMAP 0x0004
48#define RESIZE_DEBUG_ITABLEMOVE 0x0008
49
50#define RESIZE_PERCENT_COMPLETE 0x0100
Theodore Ts'oc762c8e1997-06-17 03:52:12 +000051#define RESIZE_VERBOSE 0x0200
Theodore Ts'o05e112a1997-06-14 07:28:44 +000052
53/*
Theodore Ts'o24b2c7a1997-06-07 20:42:58 +000054 * The core state structure for the ext2 resizer
55 */
56
57struct ext2_resize_struct {
58 ext2_filsys old_fs;
59 ext2_filsys new_fs;
Theodore Ts'o1e1da291997-06-09 14:51:29 +000060 ext2fs_block_bitmap reserve_blocks;
Theodore Ts'oc762c8e1997-06-17 03:52:12 +000061 ext2fs_block_bitmap move_blocks;
Theodore Ts'o1e1da291997-06-09 14:51:29 +000062 int needed_blocks;
Theodore Ts'o05e112a1997-06-14 07:28:44 +000063 int flags;
64 char *itable_buf;
Theodore Ts'o24b2c7a1997-06-07 20:42:58 +000065};
66
67typedef struct ext2_resize_struct *ext2_resize_t;
68
69/* prototypes */
Theodore Ts'o05e112a1997-06-14 07:28:44 +000070extern errcode_t resize_fs(ext2_filsys fs, blk_t new_size, int flags);
Theodore Ts'oc762c8e1997-06-17 03:52:12 +000071extern errcode_t ext2fs_inode_move(ext2_resize_t rfs);
72extern errcode_t ext2fs_block_move(ext2_resize_t rfs);
73
74/* extent.c */
75extern errcode_t ext2fs_create_extent_table(ext2_extent *ret_extent,
76 int size);
77extern void ext2fs_free_extent_table(ext2_extent extent);
78extern errcode_t ext2fs_add_extent_entry(ext2_extent extent,
79 __u32 old, __u32 new);
80extern __u32 ext2fs_extent_translate(ext2_extent extent, __u32 old);
81extern void ext2fs_extent_dump(ext2_extent extent, FILE *out);
82extern errcode_t ext2fs_iterate_extent(ext2_extent extent, __u32 *old,
83 __u32 *new, int *size);
84
85/* sim_progress.c */
86extern errcode_t ext2fs_progress_init(ext2_sim_progmeter *ret_prog,
87 const char *label,
88 int labelwidth, int barwidth,
89 __u32 maxdone, int flags);
90extern void ext2fs_progress_update(ext2_sim_progmeter prog,
91 __u32 current);
92extern void ext2fs_progress_close(ext2_sim_progmeter prog);
93
94