Whamcloud - gitweb
Many files:
[tools/e2fsprogs.git] / resize / resize2fs.h
1 /*
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 #ifdef HAVE_SYS_TYPES_H
16 #include <sys/types.h>
17 #endif
18 #ifdef HAVE_SYS_TIME_H
19 #include <sys/time.h>
20 #endif
21 #if HAVE_ERRNO_H
22 #include <errno.h>
23 #endif
24
25 #ifdef HAVE_LINUX_FS_H
26 #include <linux/fs.h>
27 #endif
28 #include <linux/ext2_fs.h>
29
30 #include "ext2fs/ext2fs.h"
31
32 #ifdef __STDC__
33 #define NOARGS void
34 #else
35 #define NOARGS
36 #define const
37 #endif
38
39 /*
40  * For the extent map
41  */
42 typedef struct _ext2_extent *ext2_extent;
43
44 /*
45  * For the simple progress meter
46  */
47 typedef struct ext2_sim_progress *ext2_sim_progmeter;
48
49 /*
50  * Flags for the resizer; most are debugging flags only
51  */
52 #define RESIZE_DEBUG_IO                 0x0001
53 #define RESIZE_DEBUG_BMOVE              0x0002
54 #define RESIZE_DEBUG_INODEMAP           0x0004
55 #define RESIZE_DEBUG_ITABLEMOVE         0x0008
56
57 #define RESIZE_PERCENT_COMPLETE         0x0100
58 #define RESIZE_VERBOSE                  0x0200
59
60 /*
61  * The core state structure for the ext2 resizer
62  */
63
64 struct ext2_resize_struct {
65         ext2_filsys     old_fs;
66         ext2_filsys     new_fs;
67         ext2fs_block_bitmap reserve_blocks;
68         ext2fs_block_bitmap move_blocks;
69         int             needed_blocks;
70         int             flags;
71         char            *itable_buf;
72 };
73
74 typedef struct ext2_resize_struct *ext2_resize_t;
75
76 /* prototypes */
77 extern errcode_t resize_fs(ext2_filsys fs, blk_t new_size, int flags);
78 extern errcode_t ext2fs_inode_move(ext2_resize_t rfs);
79 extern errcode_t ext2fs_block_move(ext2_resize_t rfs);
80
81 /* extent.c */
82 extern errcode_t ext2fs_create_extent_table(ext2_extent *ret_extent,
83                                             int size);
84 extern void ext2fs_free_extent_table(ext2_extent extent);
85 extern errcode_t ext2fs_add_extent_entry(ext2_extent extent,
86                                          __u32 old, __u32 new);
87 extern __u32 ext2fs_extent_translate(ext2_extent extent, __u32 old);
88 extern void ext2fs_extent_dump(ext2_extent extent, FILE *out);
89 extern errcode_t ext2fs_iterate_extent(ext2_extent extent, __u32 *old,
90                                        __u32 *new, int *size);
91
92 /* sim_progress.c */
93 extern errcode_t ext2fs_progress_init(ext2_sim_progmeter *ret_prog,
94                                       const char *label,
95                                       int labelwidth, int barwidth,
96                                       __u32 maxdone, int flags);
97 extern void ext2fs_progress_update(ext2_sim_progmeter prog,
98                                         __u32 current);
99 extern void ext2fs_progress_close(ext2_sim_progmeter prog);
100
101