1*6a54128fSAndroid Build Coastguard Worker /*
2*6a54128fSAndroid Build Coastguard Worker * bitmaps.c --- routines to read, write, and manipulate the inode and
3*6a54128fSAndroid Build Coastguard Worker * block bitmaps.
4*6a54128fSAndroid Build Coastguard Worker *
5*6a54128fSAndroid Build Coastguard Worker * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
6*6a54128fSAndroid Build Coastguard Worker *
7*6a54128fSAndroid Build Coastguard Worker * %Begin-Header%
8*6a54128fSAndroid Build Coastguard Worker * This file may be redistributed under the terms of the GNU Library
9*6a54128fSAndroid Build Coastguard Worker * General Public License, version 2.
10*6a54128fSAndroid Build Coastguard Worker * %End-Header%
11*6a54128fSAndroid Build Coastguard Worker */
12*6a54128fSAndroid Build Coastguard Worker
13*6a54128fSAndroid Build Coastguard Worker #include "config.h"
14*6a54128fSAndroid Build Coastguard Worker #include <stdio.h>
15*6a54128fSAndroid Build Coastguard Worker #include <string.h>
16*6a54128fSAndroid Build Coastguard Worker #if HAVE_UNISTD_H
17*6a54128fSAndroid Build Coastguard Worker #include <unistd.h>
18*6a54128fSAndroid Build Coastguard Worker #endif
19*6a54128fSAndroid Build Coastguard Worker #include <fcntl.h>
20*6a54128fSAndroid Build Coastguard Worker #include <time.h>
21*6a54128fSAndroid Build Coastguard Worker #if HAVE_SYS_STAT_H
22*6a54128fSAndroid Build Coastguard Worker #include <sys/stat.h>
23*6a54128fSAndroid Build Coastguard Worker #endif
24*6a54128fSAndroid Build Coastguard Worker #if HAVE_SYS_TYPES_H
25*6a54128fSAndroid Build Coastguard Worker #include <sys/types.h>
26*6a54128fSAndroid Build Coastguard Worker #endif
27*6a54128fSAndroid Build Coastguard Worker
28*6a54128fSAndroid Build Coastguard Worker #include "ext2_fs.h"
29*6a54128fSAndroid Build Coastguard Worker #include "ext2fs.h"
30*6a54128fSAndroid Build Coastguard Worker #include "ext2fsP.h"
31*6a54128fSAndroid Build Coastguard Worker #include "bmap64.h"
32*6a54128fSAndroid Build Coastguard Worker
ext2fs_free_inode_bitmap(ext2fs_inode_bitmap bitmap)33*6a54128fSAndroid Build Coastguard Worker void ext2fs_free_inode_bitmap(ext2fs_inode_bitmap bitmap)
34*6a54128fSAndroid Build Coastguard Worker {
35*6a54128fSAndroid Build Coastguard Worker ext2fs_free_generic_bmap(bitmap);
36*6a54128fSAndroid Build Coastguard Worker }
37*6a54128fSAndroid Build Coastguard Worker
ext2fs_free_block_bitmap(ext2fs_block_bitmap bitmap)38*6a54128fSAndroid Build Coastguard Worker void ext2fs_free_block_bitmap(ext2fs_block_bitmap bitmap)
39*6a54128fSAndroid Build Coastguard Worker {
40*6a54128fSAndroid Build Coastguard Worker ext2fs_free_generic_bmap(bitmap);
41*6a54128fSAndroid Build Coastguard Worker }
42*6a54128fSAndroid Build Coastguard Worker
ext2fs_copy_bitmap(ext2fs_generic_bitmap src,ext2fs_generic_bitmap * dest)43*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_copy_bitmap(ext2fs_generic_bitmap src,
44*6a54128fSAndroid Build Coastguard Worker ext2fs_generic_bitmap *dest)
45*6a54128fSAndroid Build Coastguard Worker {
46*6a54128fSAndroid Build Coastguard Worker return (ext2fs_copy_generic_bmap(src, dest));
47*6a54128fSAndroid Build Coastguard Worker }
ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map)48*6a54128fSAndroid Build Coastguard Worker void ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map)
49*6a54128fSAndroid Build Coastguard Worker {
50*6a54128fSAndroid Build Coastguard Worker ext2fs_set_generic_bmap_padding(map);
51*6a54128fSAndroid Build Coastguard Worker }
52*6a54128fSAndroid Build Coastguard Worker
ext2fs_allocate_inode_bitmap(ext2_filsys fs,const char * descr,ext2fs_inode_bitmap * ret)53*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_allocate_inode_bitmap(ext2_filsys fs,
54*6a54128fSAndroid Build Coastguard Worker const char *descr,
55*6a54128fSAndroid Build Coastguard Worker ext2fs_inode_bitmap *ret)
56*6a54128fSAndroid Build Coastguard Worker {
57*6a54128fSAndroid Build Coastguard Worker __u64 start, end, real_end;
58*6a54128fSAndroid Build Coastguard Worker
59*6a54128fSAndroid Build Coastguard Worker EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
60*6a54128fSAndroid Build Coastguard Worker
61*6a54128fSAndroid Build Coastguard Worker if (ext2fs_has_feature_journal_dev(fs->super))
62*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_EXTERNAL_JOURNAL_NOSUPP;
63*6a54128fSAndroid Build Coastguard Worker
64*6a54128fSAndroid Build Coastguard Worker fs->write_bitmaps = ext2fs_write_bitmaps;
65*6a54128fSAndroid Build Coastguard Worker
66*6a54128fSAndroid Build Coastguard Worker start = 1;
67*6a54128fSAndroid Build Coastguard Worker end = fs->super->s_inodes_count;
68*6a54128fSAndroid Build Coastguard Worker real_end = (__u64)EXT2_INODES_PER_GROUP(fs->super) *
69*6a54128fSAndroid Build Coastguard Worker fs->group_desc_count;
70*6a54128fSAndroid Build Coastguard Worker
71*6a54128fSAndroid Build Coastguard Worker /* Are we permitted to use new-style bitmaps? */
72*6a54128fSAndroid Build Coastguard Worker if (fs->flags & EXT2_FLAG_64BITS)
73*6a54128fSAndroid Build Coastguard Worker return (ext2fs_alloc_generic_bmap(fs,
74*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_INODE_BITMAP64,
75*6a54128fSAndroid Build Coastguard Worker fs->default_bitmap_type,
76*6a54128fSAndroid Build Coastguard Worker start, end, real_end, descr, ret));
77*6a54128fSAndroid Build Coastguard Worker
78*6a54128fSAndroid Build Coastguard Worker /* Otherwise, check to see if the file system is small enough
79*6a54128fSAndroid Build Coastguard Worker * to use old-style 32-bit bitmaps */
80*6a54128fSAndroid Build Coastguard Worker if ((end > ~0U) || (real_end > ~0U))
81*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_CANT_USE_LEGACY_BITMAPS;
82*6a54128fSAndroid Build Coastguard Worker
83*6a54128fSAndroid Build Coastguard Worker return (ext2fs_make_generic_bitmap(EXT2_ET_MAGIC_INODE_BITMAP, fs,
84*6a54128fSAndroid Build Coastguard Worker start, end, real_end,
85*6a54128fSAndroid Build Coastguard Worker descr, 0,
86*6a54128fSAndroid Build Coastguard Worker (ext2fs_generic_bitmap *) ret));
87*6a54128fSAndroid Build Coastguard Worker }
88*6a54128fSAndroid Build Coastguard Worker
ext2fs_allocate_block_bitmap(ext2_filsys fs,const char * descr,ext2fs_block_bitmap * ret)89*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_allocate_block_bitmap(ext2_filsys fs,
90*6a54128fSAndroid Build Coastguard Worker const char *descr,
91*6a54128fSAndroid Build Coastguard Worker ext2fs_block_bitmap *ret)
92*6a54128fSAndroid Build Coastguard Worker {
93*6a54128fSAndroid Build Coastguard Worker __u64 start, end, real_end;
94*6a54128fSAndroid Build Coastguard Worker
95*6a54128fSAndroid Build Coastguard Worker EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
96*6a54128fSAndroid Build Coastguard Worker
97*6a54128fSAndroid Build Coastguard Worker if (ext2fs_has_feature_journal_dev(fs->super))
98*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_EXTERNAL_JOURNAL_NOSUPP;
99*6a54128fSAndroid Build Coastguard Worker
100*6a54128fSAndroid Build Coastguard Worker fs->write_bitmaps = ext2fs_write_bitmaps;
101*6a54128fSAndroid Build Coastguard Worker
102*6a54128fSAndroid Build Coastguard Worker start = EXT2FS_B2C(fs, fs->super->s_first_data_block);
103*6a54128fSAndroid Build Coastguard Worker end = EXT2FS_B2C(fs, ext2fs_blocks_count(fs->super)-1);
104*6a54128fSAndroid Build Coastguard Worker real_end = ((__u64) EXT2_CLUSTERS_PER_GROUP(fs->super)
105*6a54128fSAndroid Build Coastguard Worker * (__u64) fs->group_desc_count)-1 + start;
106*6a54128fSAndroid Build Coastguard Worker
107*6a54128fSAndroid Build Coastguard Worker if (fs->flags & EXT2_FLAG_64BITS)
108*6a54128fSAndroid Build Coastguard Worker return (ext2fs_alloc_generic_bmap(fs,
109*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_BLOCK_BITMAP64,
110*6a54128fSAndroid Build Coastguard Worker fs->default_bitmap_type,
111*6a54128fSAndroid Build Coastguard Worker start, end, real_end, descr, ret));
112*6a54128fSAndroid Build Coastguard Worker
113*6a54128fSAndroid Build Coastguard Worker if ((end > ~0U) || (real_end > ~0U))
114*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_CANT_USE_LEGACY_BITMAPS;
115*6a54128fSAndroid Build Coastguard Worker
116*6a54128fSAndroid Build Coastguard Worker return (ext2fs_make_generic_bitmap(EXT2_ET_MAGIC_BLOCK_BITMAP, fs,
117*6a54128fSAndroid Build Coastguard Worker start, end, real_end,
118*6a54128fSAndroid Build Coastguard Worker descr, 0,
119*6a54128fSAndroid Build Coastguard Worker (ext2fs_generic_bitmap *) ret));
120*6a54128fSAndroid Build Coastguard Worker }
121*6a54128fSAndroid Build Coastguard Worker
122*6a54128fSAndroid Build Coastguard Worker /*
123*6a54128fSAndroid Build Coastguard Worker * ext2fs_allocate_block_bitmap() really allocates a per-cluster
124*6a54128fSAndroid Build Coastguard Worker * bitmap for backwards compatibility. This function allocates a
125*6a54128fSAndroid Build Coastguard Worker * block bitmap which is truly per-block, even if clusters/bigalloc
126*6a54128fSAndroid Build Coastguard Worker * are enabled. mke2fs and e2fsck need this for tracking the
127*6a54128fSAndroid Build Coastguard Worker * allocation of the file system metadata blocks.
128*6a54128fSAndroid Build Coastguard Worker */
ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,const char * descr,ext2fs_block_bitmap * ret)129*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
130*6a54128fSAndroid Build Coastguard Worker const char *descr,
131*6a54128fSAndroid Build Coastguard Worker ext2fs_block_bitmap *ret)
132*6a54128fSAndroid Build Coastguard Worker {
133*6a54128fSAndroid Build Coastguard Worker __u64 start, end, real_end;
134*6a54128fSAndroid Build Coastguard Worker ext2fs_generic_bitmap bmap;
135*6a54128fSAndroid Build Coastguard Worker ext2fs_generic_bitmap_64 bmap64;
136*6a54128fSAndroid Build Coastguard Worker errcode_t retval;
137*6a54128fSAndroid Build Coastguard Worker
138*6a54128fSAndroid Build Coastguard Worker EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
139*6a54128fSAndroid Build Coastguard Worker
140*6a54128fSAndroid Build Coastguard Worker if (ext2fs_has_feature_journal_dev(fs->super))
141*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_EXTERNAL_JOURNAL_NOSUPP;
142*6a54128fSAndroid Build Coastguard Worker
143*6a54128fSAndroid Build Coastguard Worker fs->write_bitmaps = ext2fs_write_bitmaps;
144*6a54128fSAndroid Build Coastguard Worker
145*6a54128fSAndroid Build Coastguard Worker if (!fs->cluster_ratio_bits)
146*6a54128fSAndroid Build Coastguard Worker return ext2fs_allocate_block_bitmap(fs, descr, ret);
147*6a54128fSAndroid Build Coastguard Worker
148*6a54128fSAndroid Build Coastguard Worker if ((fs->flags & EXT2_FLAG_64BITS) == 0)
149*6a54128fSAndroid Build Coastguard Worker return EXT2_ET_CANT_USE_LEGACY_BITMAPS;
150*6a54128fSAndroid Build Coastguard Worker
151*6a54128fSAndroid Build Coastguard Worker start = fs->super->s_first_data_block;
152*6a54128fSAndroid Build Coastguard Worker end = ext2fs_blocks_count(fs->super)-1;
153*6a54128fSAndroid Build Coastguard Worker real_end = ((__u64) EXT2_BLOCKS_PER_GROUP(fs->super)
154*6a54128fSAndroid Build Coastguard Worker * (__u64) fs->group_desc_count)-1 + start;
155*6a54128fSAndroid Build Coastguard Worker
156*6a54128fSAndroid Build Coastguard Worker retval = ext2fs_alloc_generic_bmap(fs, EXT2_ET_MAGIC_BLOCK_BITMAP64,
157*6a54128fSAndroid Build Coastguard Worker fs->default_bitmap_type, start,
158*6a54128fSAndroid Build Coastguard Worker end, real_end, descr, &bmap);
159*6a54128fSAndroid Build Coastguard Worker if (retval)
160*6a54128fSAndroid Build Coastguard Worker return retval;
161*6a54128fSAndroid Build Coastguard Worker bmap64 = (ext2fs_generic_bitmap_64) bmap;
162*6a54128fSAndroid Build Coastguard Worker bmap64->cluster_bits = 0;
163*6a54128fSAndroid Build Coastguard Worker *ret = bmap;
164*6a54128fSAndroid Build Coastguard Worker return 0;
165*6a54128fSAndroid Build Coastguard Worker }
166*6a54128fSAndroid Build Coastguard Worker
ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap)167*6a54128fSAndroid Build Coastguard Worker int ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap)
168*6a54128fSAndroid Build Coastguard Worker {
169*6a54128fSAndroid Build Coastguard Worker ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) bitmap;
170*6a54128fSAndroid Build Coastguard Worker
171*6a54128fSAndroid Build Coastguard Worker if (!EXT2FS_IS_64_BITMAP(bmap))
172*6a54128fSAndroid Build Coastguard Worker return 0;
173*6a54128fSAndroid Build Coastguard Worker
174*6a54128fSAndroid Build Coastguard Worker return bmap->cluster_bits;
175*6a54128fSAndroid Build Coastguard Worker }
176*6a54128fSAndroid Build Coastguard Worker
ext2fs_fudge_inode_bitmap_end(ext2fs_inode_bitmap bitmap,ext2_ino_t end,ext2_ino_t * oend)177*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_fudge_inode_bitmap_end(ext2fs_inode_bitmap bitmap,
178*6a54128fSAndroid Build Coastguard Worker ext2_ino_t end, ext2_ino_t *oend)
179*6a54128fSAndroid Build Coastguard Worker {
180*6a54128fSAndroid Build Coastguard Worker __u64 tmp_oend;
181*6a54128fSAndroid Build Coastguard Worker int retval;
182*6a54128fSAndroid Build Coastguard Worker
183*6a54128fSAndroid Build Coastguard Worker retval = ext2fs_fudge_generic_bmap_end((ext2fs_generic_bitmap) bitmap,
184*6a54128fSAndroid Build Coastguard Worker EXT2_ET_FUDGE_INODE_BITMAP_END,
185*6a54128fSAndroid Build Coastguard Worker end, &tmp_oend);
186*6a54128fSAndroid Build Coastguard Worker if (oend)
187*6a54128fSAndroid Build Coastguard Worker *oend = tmp_oend;
188*6a54128fSAndroid Build Coastguard Worker return retval;
189*6a54128fSAndroid Build Coastguard Worker }
190*6a54128fSAndroid Build Coastguard Worker
ext2fs_fudge_block_bitmap_end(ext2fs_block_bitmap bitmap,blk_t end,blk_t * oend)191*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_fudge_block_bitmap_end(ext2fs_block_bitmap bitmap,
192*6a54128fSAndroid Build Coastguard Worker blk_t end, blk_t *oend)
193*6a54128fSAndroid Build Coastguard Worker {
194*6a54128fSAndroid Build Coastguard Worker return (ext2fs_fudge_generic_bitmap_end(bitmap,
195*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_BLOCK_BITMAP,
196*6a54128fSAndroid Build Coastguard Worker EXT2_ET_FUDGE_BLOCK_BITMAP_END,
197*6a54128fSAndroid Build Coastguard Worker end, oend));
198*6a54128fSAndroid Build Coastguard Worker }
199*6a54128fSAndroid Build Coastguard Worker
ext2fs_fudge_block_bitmap_end2(ext2fs_block_bitmap bitmap,blk64_t end,blk64_t * oend)200*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_fudge_block_bitmap_end2(ext2fs_block_bitmap bitmap,
201*6a54128fSAndroid Build Coastguard Worker blk64_t end, blk64_t *oend)
202*6a54128fSAndroid Build Coastguard Worker {
203*6a54128fSAndroid Build Coastguard Worker return (ext2fs_fudge_generic_bmap_end(bitmap,
204*6a54128fSAndroid Build Coastguard Worker EXT2_ET_FUDGE_BLOCK_BITMAP_END,
205*6a54128fSAndroid Build Coastguard Worker end, oend));
206*6a54128fSAndroid Build Coastguard Worker }
207*6a54128fSAndroid Build Coastguard Worker
ext2fs_clear_inode_bitmap(ext2fs_inode_bitmap bitmap)208*6a54128fSAndroid Build Coastguard Worker void ext2fs_clear_inode_bitmap(ext2fs_inode_bitmap bitmap)
209*6a54128fSAndroid Build Coastguard Worker {
210*6a54128fSAndroid Build Coastguard Worker ext2fs_clear_generic_bmap(bitmap);
211*6a54128fSAndroid Build Coastguard Worker }
212*6a54128fSAndroid Build Coastguard Worker
ext2fs_clear_block_bitmap(ext2fs_block_bitmap bitmap)213*6a54128fSAndroid Build Coastguard Worker void ext2fs_clear_block_bitmap(ext2fs_block_bitmap bitmap)
214*6a54128fSAndroid Build Coastguard Worker {
215*6a54128fSAndroid Build Coastguard Worker ext2fs_clear_generic_bmap(bitmap);
216*6a54128fSAndroid Build Coastguard Worker }
217*6a54128fSAndroid Build Coastguard Worker
ext2fs_resize_inode_bitmap(__u32 new_end,__u32 new_real_end,ext2fs_inode_bitmap bmap)218*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_resize_inode_bitmap(__u32 new_end, __u32 new_real_end,
219*6a54128fSAndroid Build Coastguard Worker ext2fs_inode_bitmap bmap)
220*6a54128fSAndroid Build Coastguard Worker {
221*6a54128fSAndroid Build Coastguard Worker return (ext2fs_resize_generic_bitmap(EXT2_ET_MAGIC_INODE_BITMAP,
222*6a54128fSAndroid Build Coastguard Worker new_end, new_real_end, bmap));
223*6a54128fSAndroid Build Coastguard Worker }
224*6a54128fSAndroid Build Coastguard Worker
ext2fs_resize_inode_bitmap2(__u64 new_end,__u64 new_real_end,ext2fs_inode_bitmap bmap)225*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_resize_inode_bitmap2(__u64 new_end, __u64 new_real_end,
226*6a54128fSAndroid Build Coastguard Worker ext2fs_inode_bitmap bmap)
227*6a54128fSAndroid Build Coastguard Worker {
228*6a54128fSAndroid Build Coastguard Worker return (ext2fs_resize_generic_bmap(bmap, new_end, new_real_end));
229*6a54128fSAndroid Build Coastguard Worker }
230*6a54128fSAndroid Build Coastguard Worker
ext2fs_resize_block_bitmap(__u32 new_end,__u32 new_real_end,ext2fs_block_bitmap bmap)231*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_resize_block_bitmap(__u32 new_end, __u32 new_real_end,
232*6a54128fSAndroid Build Coastguard Worker ext2fs_block_bitmap bmap)
233*6a54128fSAndroid Build Coastguard Worker {
234*6a54128fSAndroid Build Coastguard Worker return (ext2fs_resize_generic_bitmap(EXT2_ET_MAGIC_BLOCK_BITMAP,
235*6a54128fSAndroid Build Coastguard Worker new_end, new_real_end, bmap));
236*6a54128fSAndroid Build Coastguard Worker }
237*6a54128fSAndroid Build Coastguard Worker
ext2fs_resize_block_bitmap2(__u64 new_end,__u64 new_real_end,ext2fs_block_bitmap bmap)238*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_resize_block_bitmap2(__u64 new_end, __u64 new_real_end,
239*6a54128fSAndroid Build Coastguard Worker ext2fs_block_bitmap bmap)
240*6a54128fSAndroid Build Coastguard Worker {
241*6a54128fSAndroid Build Coastguard Worker return (ext2fs_resize_generic_bmap(bmap, new_end, new_real_end));
242*6a54128fSAndroid Build Coastguard Worker }
243*6a54128fSAndroid Build Coastguard Worker
ext2fs_compare_block_bitmap(ext2fs_block_bitmap bm1,ext2fs_block_bitmap bm2)244*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_compare_block_bitmap(ext2fs_block_bitmap bm1,
245*6a54128fSAndroid Build Coastguard Worker ext2fs_block_bitmap bm2)
246*6a54128fSAndroid Build Coastguard Worker {
247*6a54128fSAndroid Build Coastguard Worker return (ext2fs_compare_generic_bmap(EXT2_ET_NEQ_BLOCK_BITMAP,
248*6a54128fSAndroid Build Coastguard Worker bm1, bm2));
249*6a54128fSAndroid Build Coastguard Worker }
250*6a54128fSAndroid Build Coastguard Worker
ext2fs_compare_inode_bitmap(ext2fs_inode_bitmap bm1,ext2fs_inode_bitmap bm2)251*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_compare_inode_bitmap(ext2fs_inode_bitmap bm1,
252*6a54128fSAndroid Build Coastguard Worker ext2fs_inode_bitmap bm2)
253*6a54128fSAndroid Build Coastguard Worker {
254*6a54128fSAndroid Build Coastguard Worker return (ext2fs_compare_generic_bmap(EXT2_ET_NEQ_INODE_BITMAP,
255*6a54128fSAndroid Build Coastguard Worker bm1, bm2));
256*6a54128fSAndroid Build Coastguard Worker }
257*6a54128fSAndroid Build Coastguard Worker
ext2fs_set_inode_bitmap_range(ext2fs_inode_bitmap bmap,ext2_ino_t start,unsigned int num,void * in)258*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_set_inode_bitmap_range(ext2fs_inode_bitmap bmap,
259*6a54128fSAndroid Build Coastguard Worker ext2_ino_t start, unsigned int num,
260*6a54128fSAndroid Build Coastguard Worker void *in)
261*6a54128fSAndroid Build Coastguard Worker {
262*6a54128fSAndroid Build Coastguard Worker return (ext2fs_set_generic_bitmap_range(bmap,
263*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_INODE_BITMAP,
264*6a54128fSAndroid Build Coastguard Worker start, num, in));
265*6a54128fSAndroid Build Coastguard Worker }
266*6a54128fSAndroid Build Coastguard Worker
ext2fs_set_inode_bitmap_range2(ext2fs_inode_bitmap bmap,__u64 start,size_t num,void * in)267*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_set_inode_bitmap_range2(ext2fs_inode_bitmap bmap,
268*6a54128fSAndroid Build Coastguard Worker __u64 start, size_t num,
269*6a54128fSAndroid Build Coastguard Worker void *in)
270*6a54128fSAndroid Build Coastguard Worker {
271*6a54128fSAndroid Build Coastguard Worker return (ext2fs_set_generic_bmap_range(bmap, start, num, in));
272*6a54128fSAndroid Build Coastguard Worker }
273*6a54128fSAndroid Build Coastguard Worker
ext2fs_get_inode_bitmap_range(ext2fs_inode_bitmap bmap,ext2_ino_t start,unsigned int num,void * out)274*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_get_inode_bitmap_range(ext2fs_inode_bitmap bmap,
275*6a54128fSAndroid Build Coastguard Worker ext2_ino_t start, unsigned int num,
276*6a54128fSAndroid Build Coastguard Worker void *out)
277*6a54128fSAndroid Build Coastguard Worker {
278*6a54128fSAndroid Build Coastguard Worker return (ext2fs_get_generic_bitmap_range(bmap,
279*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_INODE_BITMAP,
280*6a54128fSAndroid Build Coastguard Worker start, num, out));
281*6a54128fSAndroid Build Coastguard Worker }
282*6a54128fSAndroid Build Coastguard Worker
ext2fs_get_inode_bitmap_range2(ext2fs_inode_bitmap bmap,__u64 start,size_t num,void * out)283*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_get_inode_bitmap_range2(ext2fs_inode_bitmap bmap,
284*6a54128fSAndroid Build Coastguard Worker __u64 start, size_t num,
285*6a54128fSAndroid Build Coastguard Worker void *out)
286*6a54128fSAndroid Build Coastguard Worker {
287*6a54128fSAndroid Build Coastguard Worker return (ext2fs_get_generic_bmap_range(bmap, start, num, out));
288*6a54128fSAndroid Build Coastguard Worker }
289*6a54128fSAndroid Build Coastguard Worker
ext2fs_set_block_bitmap_range(ext2fs_block_bitmap bmap,blk_t start,unsigned int num,void * in)290*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_set_block_bitmap_range(ext2fs_block_bitmap bmap,
291*6a54128fSAndroid Build Coastguard Worker blk_t start, unsigned int num,
292*6a54128fSAndroid Build Coastguard Worker void *in)
293*6a54128fSAndroid Build Coastguard Worker {
294*6a54128fSAndroid Build Coastguard Worker return (ext2fs_set_generic_bitmap_range(bmap,
295*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_BLOCK_BITMAP,
296*6a54128fSAndroid Build Coastguard Worker start, num, in));
297*6a54128fSAndroid Build Coastguard Worker }
298*6a54128fSAndroid Build Coastguard Worker
ext2fs_set_block_bitmap_range2(ext2fs_block_bitmap bmap,blk64_t start,size_t num,void * in)299*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_set_block_bitmap_range2(ext2fs_block_bitmap bmap,
300*6a54128fSAndroid Build Coastguard Worker blk64_t start, size_t num,
301*6a54128fSAndroid Build Coastguard Worker void *in)
302*6a54128fSAndroid Build Coastguard Worker {
303*6a54128fSAndroid Build Coastguard Worker return (ext2fs_set_generic_bmap_range(bmap, start, num, in));
304*6a54128fSAndroid Build Coastguard Worker }
305*6a54128fSAndroid Build Coastguard Worker
ext2fs_get_block_bitmap_range(ext2fs_block_bitmap bmap,blk_t start,unsigned int num,void * out)306*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_get_block_bitmap_range(ext2fs_block_bitmap bmap,
307*6a54128fSAndroid Build Coastguard Worker blk_t start, unsigned int num,
308*6a54128fSAndroid Build Coastguard Worker void *out)
309*6a54128fSAndroid Build Coastguard Worker {
310*6a54128fSAndroid Build Coastguard Worker return (ext2fs_get_generic_bitmap_range(bmap,
311*6a54128fSAndroid Build Coastguard Worker EXT2_ET_MAGIC_BLOCK_BITMAP,
312*6a54128fSAndroid Build Coastguard Worker start, num, out));
313*6a54128fSAndroid Build Coastguard Worker }
314*6a54128fSAndroid Build Coastguard Worker
ext2fs_get_block_bitmap_range2(ext2fs_block_bitmap bmap,blk64_t start,size_t num,void * out)315*6a54128fSAndroid Build Coastguard Worker errcode_t ext2fs_get_block_bitmap_range2(ext2fs_block_bitmap bmap,
316*6a54128fSAndroid Build Coastguard Worker blk64_t start, size_t num,
317*6a54128fSAndroid Build Coastguard Worker void *out)
318*6a54128fSAndroid Build Coastguard Worker {
319*6a54128fSAndroid Build Coastguard Worker return (ext2fs_get_generic_bmap_range(bmap, start, num, out));
320*6a54128fSAndroid Build Coastguard Worker }
321