aboutsummaryrefslogtreecommitdiff
path: root/e2fsprogs/ext2fs/bmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'e2fsprogs/ext2fs/bmap.c')
-rw-r--r--e2fsprogs/ext2fs/bmap.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/e2fsprogs/ext2fs/bmap.c b/e2fsprogs/ext2fs/bmap.c
index e84004476..45d49f929 100644
--- a/e2fsprogs/ext2fs/bmap.c
+++ b/e2fsprogs/ext2fs/bmap.c
@@ -25,14 +25,14 @@
25#endif 25#endif
26 26
27extern errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, 27extern errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino,
28 struct ext2_inode *inode, 28 struct ext2_inode *inode,
29 char *block_buf, int bmap_flags, 29 char *block_buf, int bmap_flags,
30 blk_t block, blk_t *phys_blk); 30 blk_t block, blk_t *phys_blk);
31 31
32#define inode_bmap(inode, nr) ((inode)->i_block[(nr)]) 32#define inode_bmap(inode, nr) ((inode)->i_block[(nr)])
33 33
34static _BMAP_INLINE_ errcode_t block_ind_bmap(ext2_filsys fs, int flags, 34static _BMAP_INLINE_ errcode_t block_ind_bmap(ext2_filsys fs, int flags,
35 blk_t ind, char *block_buf, 35 blk_t ind, char *block_buf,
36 int *blocks_alloc, 36 int *blocks_alloc,
37 blk_t nr, blk_t *ret_blk) 37 blk_t nr, blk_t *ret_blk)
38{ 38{
@@ -95,17 +95,17 @@ static _BMAP_INLINE_ errcode_t block_ind_bmap(ext2_filsys fs, int flags,
95} 95}
96 96
97static _BMAP_INLINE_ errcode_t block_dind_bmap(ext2_filsys fs, int flags, 97static _BMAP_INLINE_ errcode_t block_dind_bmap(ext2_filsys fs, int flags,
98 blk_t dind, char *block_buf, 98 blk_t dind, char *block_buf,
99 int *blocks_alloc, 99 int *blocks_alloc,
100 blk_t nr, blk_t *ret_blk) 100 blk_t nr, blk_t *ret_blk)
101{ 101{
102 blk_t b; 102 blk_t b;
103 errcode_t retval; 103 errcode_t retval;
104 blk_t addr_per_block; 104 blk_t addr_per_block;
105 105
106 addr_per_block = (blk_t) fs->blocksize >> 2; 106 addr_per_block = (blk_t) fs->blocksize >> 2;
107 107
108 retval = block_ind_bmap(fs, flags & ~BMAP_SET, dind, block_buf, 108 retval = block_ind_bmap(fs, flags & ~BMAP_SET, dind, block_buf,
109 blocks_alloc, nr / addr_per_block, &b); 109 blocks_alloc, nr / addr_per_block, &b);
110 if (retval) 110 if (retval)
111 return retval; 111 return retval;
@@ -115,17 +115,17 @@ static _BMAP_INLINE_ errcode_t block_dind_bmap(ext2_filsys fs, int flags,
115} 115}
116 116
117static _BMAP_INLINE_ errcode_t block_tind_bmap(ext2_filsys fs, int flags, 117static _BMAP_INLINE_ errcode_t block_tind_bmap(ext2_filsys fs, int flags,
118 blk_t tind, char *block_buf, 118 blk_t tind, char *block_buf,
119 int *blocks_alloc, 119 int *blocks_alloc,
120 blk_t nr, blk_t *ret_blk) 120 blk_t nr, blk_t *ret_blk)
121{ 121{
122 blk_t b; 122 blk_t b;
123 errcode_t retval; 123 errcode_t retval;
124 blk_t addr_per_block; 124 blk_t addr_per_block;
125 125
126 addr_per_block = (blk_t) fs->blocksize >> 2; 126 addr_per_block = (blk_t) fs->blocksize >> 2;
127 127
128 retval = block_dind_bmap(fs, flags & ~BMAP_SET, tind, block_buf, 128 retval = block_dind_bmap(fs, flags & ~BMAP_SET, tind, block_buf,
129 blocks_alloc, nr / addr_per_block, &b); 129 blocks_alloc, nr / addr_per_block, &b);
130 if (retval) 130 if (retval)
131 return retval; 131 return retval;
@@ -179,7 +179,7 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
179 179
180 *phys_blk = inode_bmap(inode, block); 180 *phys_blk = inode_bmap(inode, block);
181 b = block ? inode_bmap(inode, block-1) : 0; 181 b = block ? inode_bmap(inode, block-1) : 0;
182 182
183 if ((*phys_blk == 0) && (bmap_flags & BMAP_ALLOC)) { 183 if ((*phys_blk == 0) && (bmap_flags & BMAP_ALLOC)) {
184 retval = ext2fs_alloc_block(fs, b, block_buf, &b); 184 retval = ext2fs_alloc_block(fs, b, block_buf, &b);
185 if (retval) 185 if (retval)
@@ -190,7 +190,7 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
190 } 190 }
191 goto done; 191 goto done;
192 } 192 }
193 193
194 /* Indirect block */ 194 /* Indirect block */
195 block -= EXT2_NDIR_BLOCKS; 195 block -= EXT2_NDIR_BLOCKS;
196 if (block < addr_per_block) { 196 if (block < addr_per_block) {
@@ -203,17 +203,17 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
203 } 203 }
204 204
205 b = inode_bmap(inode, EXT2_IND_BLOCK-1); 205 b = inode_bmap(inode, EXT2_IND_BLOCK-1);
206 retval = ext2fs_alloc_block(fs, b, block_buf, &b); 206 retval = ext2fs_alloc_block(fs, b, block_buf, &b);
207 if (retval) 207 if (retval)
208 goto done; 208 goto done;
209 inode_bmap(inode, EXT2_IND_BLOCK) = b; 209 inode_bmap(inode, EXT2_IND_BLOCK) = b;
210 blocks_alloc++; 210 blocks_alloc++;
211 } 211 }
212 retval = block_ind_bmap(fs, bmap_flags, b, block_buf, 212 retval = block_ind_bmap(fs, bmap_flags, b, block_buf,
213 &blocks_alloc, block, phys_blk); 213 &blocks_alloc, block, phys_blk);
214 goto done; 214 goto done;
215 } 215 }
216 216
217 /* Doubly indirect block */ 217 /* Doubly indirect block */
218 block -= addr_per_block; 218 block -= addr_per_block;
219 if (block < addr_per_block * addr_per_block) { 219 if (block < addr_per_block * addr_per_block) {
@@ -226,13 +226,13 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
226 } 226 }
227 227
228 b = inode_bmap(inode, EXT2_IND_BLOCK); 228 b = inode_bmap(inode, EXT2_IND_BLOCK);
229 retval = ext2fs_alloc_block(fs, b, block_buf, &b); 229 retval = ext2fs_alloc_block(fs, b, block_buf, &b);
230 if (retval) 230 if (retval)
231 goto done; 231 goto done;
232 inode_bmap(inode, EXT2_DIND_BLOCK) = b; 232 inode_bmap(inode, EXT2_DIND_BLOCK) = b;
233 blocks_alloc++; 233 blocks_alloc++;
234 } 234 }
235 retval = block_dind_bmap(fs, bmap_flags, b, block_buf, 235 retval = block_dind_bmap(fs, bmap_flags, b, block_buf,
236 &blocks_alloc, block, phys_blk); 236 &blocks_alloc, block, phys_blk);
237 goto done; 237 goto done;
238 } 238 }
@@ -254,7 +254,7 @@ errcode_t ext2fs_bmap(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode,
254 inode_bmap(inode, EXT2_TIND_BLOCK) = b; 254 inode_bmap(inode, EXT2_TIND_BLOCK) = b;
255 blocks_alloc++; 255 blocks_alloc++;
256 } 256 }
257 retval = block_tind_bmap(fs, bmap_flags, b, block_buf, 257 retval = block_tind_bmap(fs, bmap_flags, b, block_buf,
258 &blocks_alloc, block, phys_blk); 258 &blocks_alloc, block, phys_blk);
259done: 259done:
260 if (buf) 260 if (buf)