13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/* 23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * bitmaps.c --- routines to read, write, and manipulate the inode and 33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * block bitmaps. 43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 521c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. 621c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * 721c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * %Begin-Header% 8543547a52a20cb7e69d74921b2f691078fd55d83Theodore Ts'o * This file may be redistributed under the terms of the GNU Library 9543547a52a20cb7e69d74921b2f691078fd55d83Theodore Ts'o * General Public License, version 2. 1021c84b71e205b5ab13f14343da5645dcc985856dTheodore Ts'o * %End-Header% 113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */ 123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <stdio.h> 143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <string.h> 154cbe8af4b0d0c72fb28bb500c1bd8a46b00fdde3Theodore Ts'o#if HAVE_UNISTD_H 163839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <unistd.h> 174cbe8af4b0d0c72fb28bb500c1bd8a46b00fdde3Theodore Ts'o#endif 183839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <fcntl.h> 193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <time.h> 201d2ff46ae7533ffd038534b189f272d2a4122e4eTheodore Ts'o#if HAVE_SYS_STAT_H 213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <sys/stat.h> 221d2ff46ae7533ffd038534b189f272d2a4122e4eTheodore Ts'o#endif 231d2ff46ae7533ffd038534b189f272d2a4122e4eTheodore Ts'o#if HAVE_SYS_TYPES_H 243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <sys/types.h> 251d2ff46ae7533ffd038534b189f272d2a4122e4eTheodore Ts'o#endif 263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 27b5abe6fac9c9e7caf4710501d1657d30e4857ef6Theodore Ts'o#include "ext2_fs.h" 283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "ext2fs.h" 29e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#include "ext2fsP.h" 30e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#include "bmap64.h" 313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 32a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'ovoid ext2fs_free_inode_bitmap(ext2fs_inode_bitmap bitmap) 333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 34e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_free_generic_bmap(bitmap); 353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 37a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'ovoid ext2fs_free_block_bitmap(ext2fs_block_bitmap bitmap) 38a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o{ 39e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_free_generic_bmap(bitmap); 40a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o} 41a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o 42a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'oerrcode_t ext2fs_copy_bitmap(ext2fs_generic_bitmap src, 43a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o ext2fs_generic_bitmap *dest) 44a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o{ 45e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_copy_generic_bmap(src, dest)); 46a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o} 47fff876b7c7716d5eef713101e47bff15edb9d9a9Theodore Ts'ovoid ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map) 48fff876b7c7716d5eef713101e47bff15edb9d9a9Theodore Ts'o{ 49e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_set_generic_bmap_padding(map); 50efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o} 51a29f4d30f24d68f1f1c75548e020689ede532c05Theodore Ts'o 521e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'oerrcode_t ext2fs_allocate_inode_bitmap(ext2_filsys fs, 531e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o const char *descr, 541e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o ext2fs_inode_bitmap *ret) 551e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o{ 56e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 start, end, real_end; 571e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o 581e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); 591e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o 601e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o fs->write_bitmaps = ext2fs_write_bitmaps; 611e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o 621e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o start = 1; 631e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o end = fs->super->s_inodes_count; 641e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o real_end = (EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count); 651e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o 66e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall /* Are we permitted to use new-style bitmaps? */ 67e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (fs->flags & EXT2_FLAG_64BITS) 68e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_alloc_generic_bmap(fs, 69e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall EXT2_ET_MAGIC_INODE_BITMAP64, 70e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall fs->default_bitmap_type, 71e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall start, end, real_end, descr, ret)); 72e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 73e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall /* Otherwise, check to see if the file system is small enough 74e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * to use old-style 32-bit bitmaps */ 75e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if ((end > ~0U) || (real_end > ~0U)) 76e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return EXT2_ET_CANT_USE_LEGACY_BITMAPS; 77e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 78a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o return (ext2fs_make_generic_bitmap(EXT2_ET_MAGIC_INODE_BITMAP, fs, 79e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall start, end, real_end, 80e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall descr, 0, 81e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall (ext2fs_generic_bitmap *) ret)); 821e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o} 831e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o 84f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oerrcode_t ext2fs_allocate_block_bitmap(ext2_filsys fs, 85f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o const char *descr, 86f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o ext2fs_block_bitmap *ret) 873839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 88e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 start, end, real_end; 893839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 90f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); 913839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 92f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o fs->write_bitmaps = ext2fs_write_bitmaps; 933839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 94e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall start = EXT2FS_B2C(fs, fs->super->s_first_data_block); 95e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall end = EXT2FS_B2C(fs, ext2fs_blocks_count(fs->super)-1); 96e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall real_end = ((__u64) EXT2_CLUSTERS_PER_GROUP(fs->super) 97e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * (__u64) fs->group_desc_count)-1 + start; 98e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 99e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (fs->flags & EXT2_FLAG_64BITS) 100e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_alloc_generic_bmap(fs, 101e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall EXT2_ET_MAGIC_BLOCK_BITMAP64, 102e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall fs->default_bitmap_type, 103e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall start, end, real_end, descr, ret)); 104e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 105e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if ((end > ~0U) || (real_end > ~0U)) 106e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return EXT2_ET_CANT_USE_LEGACY_BITMAPS; 1078f82ef9860339039b54a324be137fbc09b762358Valerie Aurora Henson 108a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o return (ext2fs_make_generic_bitmap(EXT2_ET_MAGIC_BLOCK_BITMAP, fs, 109a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o start, end, real_end, 110e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall descr, 0, 111e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall (ext2fs_generic_bitmap *) ret)); 112e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 113e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 114e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall/* 115e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * ext2fs_allocate_block_bitmap() really allocates a per-cluster 116e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * bitmap for backwards compatibility. This function allocates a 117e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * block bitmap which is truly per-block, even if clusters/bigalloc 118e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * are enabled. mke2fs and e2fsck need this for tracking the 119e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * allocation of the file system metadata blocks. 120e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall */ 121e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs, 122e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall const char *descr, 123e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_block_bitmap *ret) 124e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 125e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 start, end, real_end; 126e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_generic_bitmap bmap; 127e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall errcode_t retval; 128e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 129e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); 130e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 131e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall fs->write_bitmaps = ext2fs_write_bitmaps; 132e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 133e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (!fs->cluster_ratio_bits) 134e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return ext2fs_allocate_block_bitmap(fs, descr, ret); 135e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 136e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if ((fs->flags & EXT2_FLAG_64BITS) == 0) 137e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return EXT2_ET_CANT_USE_LEGACY_BITMAPS; 138e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 139e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall start = fs->super->s_first_data_block; 140e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall end = ext2fs_blocks_count(fs->super)-1; 141e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall real_end = ((__u64) EXT2_BLOCKS_PER_GROUP(fs->super) 142e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall * (__u64) fs->group_desc_count)-1 + start; 143e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 144e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall retval = ext2fs_alloc_generic_bmap(fs, EXT2_ET_MAGIC_BLOCK_BITMAP64, 145e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall fs->default_bitmap_type, start, 146e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall end, real_end, descr, &bmap); 147e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (retval) 148e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return retval; 149e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall bmap->cluster_bits = 0; 150e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall *ret = bmap; 151e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return 0; 152e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 153e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 154e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallint ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap) 155e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 156e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_generic_bitmap bmap = bitmap; 157e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 158e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (!EXT2FS_IS_64_BITMAP(bmap)) 159e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return 0; 160e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 161e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return bmap->cluster_bits; 16294968e749b224f01fbb9009ed0285e55f6441784Theodore Ts'o} 16394968e749b224f01fbb9009ed0285e55f6441784Theodore Ts'o 164f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oerrcode_t ext2fs_fudge_inode_bitmap_end(ext2fs_inode_bitmap bitmap, 16531dbecd482405e0d3a67eb58e1a1c8cb9f2ad83eTheodore Ts'o ext2_ino_t end, ext2_ino_t *oend) 1663839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 167e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 tmp_oend; 168e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall int retval; 169a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o 170e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall retval = ext2fs_fudge_generic_bmap_end((ext2fs_generic_bitmap) bitmap, 171e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall EXT2_ET_FUDGE_INODE_BITMAP_END, 172e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall end, &tmp_oend); 173e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall if (oend) 174e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall *oend = tmp_oend; 175e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return retval; 1763839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 1773839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 178f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oerrcode_t ext2fs_fudge_block_bitmap_end(ext2fs_block_bitmap bitmap, 179f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o blk_t end, blk_t *oend) 1803839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 181a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o return (ext2fs_fudge_generic_bitmap_end(bitmap, 182a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o EXT2_ET_MAGIC_BLOCK_BITMAP, 183a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o EXT2_ET_FUDGE_BLOCK_BITMAP_END, 184a0553c9d6e8dd6f538f18ae447c45e52f3c40eb6Theodore Ts'o end, oend)); 1853839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 1863839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 187e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_fudge_block_bitmap_end2(ext2fs_block_bitmap bitmap, 188e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall blk64_t end, blk64_t *oend) 189e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 190e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_fudge_generic_bmap_end(bitmap, 191e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall EXT2_ET_FUDGE_BLOCK_BITMAP_END, 192e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall end, oend)); 193e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 194e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 195f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'ovoid ext2fs_clear_inode_bitmap(ext2fs_inode_bitmap bitmap) 1963839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 197e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_clear_generic_bmap(bitmap); 1983839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o} 1993839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 200f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'ovoid ext2fs_clear_block_bitmap(ext2fs_block_bitmap bitmap) 2013839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{ 202e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_clear_generic_bmap(bitmap); 203f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o} 20450448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o 20550448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'oerrcode_t ext2fs_resize_inode_bitmap(__u32 new_end, __u32 new_real_end, 20650448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o ext2fs_inode_bitmap bmap) 20750448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o{ 20850448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o return (ext2fs_resize_generic_bitmap(EXT2_ET_MAGIC_INODE_BITMAP, 20950448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o new_end, new_real_end, bmap)); 21050448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o} 21150448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o 212e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_resize_inode_bitmap2(__u64 new_end, __u64 new_real_end, 213e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_inode_bitmap bmap) 214e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 215e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_resize_generic_bmap(bmap, new_end, new_real_end)); 216e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 217e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 21850448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'oerrcode_t ext2fs_resize_block_bitmap(__u32 new_end, __u32 new_real_end, 21950448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o ext2fs_block_bitmap bmap) 22050448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o{ 22150448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o return (ext2fs_resize_generic_bitmap(EXT2_ET_MAGIC_BLOCK_BITMAP, 22250448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o new_end, new_real_end, bmap)); 22350448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o} 22450448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o 225e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_resize_block_bitmap2(__u64 new_end, __u64 new_real_end, 226e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall ext2fs_block_bitmap bmap) 227e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 228e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_resize_generic_bmap(bmap, new_end, new_real_end)); 229e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 230e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 23150448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'oerrcode_t ext2fs_compare_block_bitmap(ext2fs_block_bitmap bm1, 23250448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o ext2fs_block_bitmap bm2) 23350448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o{ 234e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_compare_generic_bmap(EXT2_ET_NEQ_BLOCK_BITMAP, 235e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall bm1, bm2)); 23650448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o} 23750448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o 23850448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'oerrcode_t ext2fs_compare_inode_bitmap(ext2fs_inode_bitmap bm1, 23950448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o ext2fs_inode_bitmap bm2) 24050448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o{ 241e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_compare_generic_bmap(EXT2_ET_NEQ_INODE_BITMAP, 242e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall bm1, bm2)); 24350448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o} 24450448d3dffc66f86592ee0d4b16e4bbe9d08449eTheodore Ts'o 245f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'oerrcode_t ext2fs_set_inode_bitmap_range(ext2fs_inode_bitmap bmap, 246f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o ext2_ino_t start, unsigned int num, 247f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o void *in) 248f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o{ 249f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o return (ext2fs_set_generic_bitmap_range(bmap, 250f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o EXT2_ET_MAGIC_INODE_BITMAP, 251f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o start, num, in)); 252f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o} 253f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o 254e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_set_inode_bitmap_range2(ext2fs_inode_bitmap bmap, 255e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 start, size_t num, 256e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void *in) 257e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 258e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_set_generic_bmap_range(bmap, start, num, in)); 259e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 260e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 261f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'oerrcode_t ext2fs_get_inode_bitmap_range(ext2fs_inode_bitmap bmap, 262f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o ext2_ino_t start, unsigned int num, 263f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o void *out) 264f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o{ 265f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o return (ext2fs_get_generic_bitmap_range(bmap, 266f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o EXT2_ET_MAGIC_INODE_BITMAP, 267f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o start, num, out)); 268f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o} 269f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o 270e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_get_inode_bitmap_range2(ext2fs_inode_bitmap bmap, 271e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall __u64 start, size_t num, 272e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void *out) 273e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 274e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_get_generic_bmap_range(bmap, start, num, out)); 275e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 276e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 277f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'oerrcode_t ext2fs_set_block_bitmap_range(ext2fs_block_bitmap bmap, 278f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o blk_t start, unsigned int num, 279f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o void *in) 280f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o{ 281efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o return (ext2fs_set_generic_bitmap_range(bmap, 282f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o EXT2_ET_MAGIC_BLOCK_BITMAP, 283f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o start, num, in)); 284f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o} 285f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o 286e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_set_block_bitmap_range2(ext2fs_block_bitmap bmap, 287e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall blk64_t start, size_t num, 288e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void *in) 289e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 290e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_set_generic_bmap_range(bmap, start, num, in)); 291e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 292e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 293f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'oerrcode_t ext2fs_get_block_bitmap_range(ext2fs_block_bitmap bmap, 294f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o blk_t start, unsigned int num, 295f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o void *out) 296f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o{ 297f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o return (ext2fs_get_generic_bitmap_range(bmap, 298f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o EXT2_ET_MAGIC_BLOCK_BITMAP, 299f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o start, num, out)); 300f1f115a78f5ea599fc5f8815a741d43fedd5840dTheodore Ts'o} 301e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall 302e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallerrcode_t ext2fs_get_block_bitmap_range2(ext2fs_block_bitmap bmap, 303e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall blk64_t start, size_t num, 304e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall void *out) 305e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall{ 306e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall return (ext2fs_get_generic_bmap_range(bmap, start, num, out)); 307e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall} 308