@@ -246,15 +246,11 @@ static void find_metapath(const struct gfs2_sbd *sdp, u64 block,
246
246
247
247
}
248
248
249
- static inline unsigned int zero_metapath_length (const struct metapath * mp ,
250
- unsigned height )
249
+ static inline unsigned int metapath_branch_start (const struct metapath * mp )
251
250
{
252
- unsigned int i ;
253
- for (i = 0 ; i < height - 1 ; i ++ ) {
254
- if (mp -> mp_list [i ] != 0 )
255
- return i ;
256
- }
257
- return height ;
251
+ if (mp -> mp_list [0 ] == 0 )
252
+ return 2 ;
253
+ return 1 ;
258
254
}
259
255
260
256
/**
@@ -436,7 +432,7 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
436
432
struct gfs2_sbd * sdp = GFS2_SB (inode );
437
433
struct buffer_head * dibh = mp -> mp_bh [0 ];
438
434
u64 bn , dblock = 0 ;
439
- unsigned n , i , blks , alloced = 0 , iblks = 0 , zmpl = 0 ;
435
+ unsigned n , i , blks , alloced = 0 , iblks = 0 , branch_start = 0 ;
440
436
unsigned dblks = 0 ;
441
437
unsigned ptrs_per_blk ;
442
438
const unsigned end_of_metadata = height - 1 ;
@@ -471,9 +467,8 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
471
467
/* Building up tree height */
472
468
state = ALLOC_GROW_HEIGHT ;
473
469
iblks = height - ip -> i_height ;
474
- zmpl = zero_metapath_length (mp , height );
475
- iblks -= zmpl ;
476
- iblks += height ;
470
+ branch_start = metapath_branch_start (mp );
471
+ iblks += (height - branch_start );
477
472
}
478
473
}
479
474
@@ -509,13 +504,13 @@ static int gfs2_bmap_alloc(struct inode *inode, const sector_t lblock,
509
504
sizeof (struct gfs2_meta_header ));
510
505
* ptr = zero_bn ;
511
506
state = ALLOC_GROW_DEPTH ;
512
- for (i = zmpl ; i < height ; i ++ ) {
507
+ for (i = branch_start ; i < height ; i ++ ) {
513
508
if (mp -> mp_bh [i ] == NULL )
514
509
break ;
515
510
brelse (mp -> mp_bh [i ]);
516
511
mp -> mp_bh [i ] = NULL ;
517
512
}
518
- i = zmpl ;
513
+ i = branch_start ;
519
514
}
520
515
if (n == 0 )
521
516
break ;
0 commit comments