@@ -456,65 +456,68 @@ static inline unsigned _ubh_find_last_zero_bit_(
456
456
}
457
457
458
458
static inline int ubh_isblockset (struct ufs_sb_private_info * uspi ,
459
- struct ufs_cg_private_info * ucpi , unsigned block )
459
+ struct ufs_cg_private_info * ucpi , unsigned int frag )
460
460
{
461
461
struct ufs_buffer_head * ubh = UCPI_UBH (ucpi );
462
- unsigned begin = ucpi -> c_freeoff ;
462
+ u8 * p = ubh_get_addr ( ubh , ucpi -> c_freeoff + ( frag >> 3 )) ;
463
463
u8 mask ;
464
+
464
465
switch (uspi -> s_fpb ) {
465
466
case 8 :
466
- return ( * ubh_get_addr ( ubh , begin + block ) == 0xff ) ;
467
+ return * p == 0xff ;
467
468
case 4 :
468
- mask = 0x0f << (( block & 0x01 ) << 2 );
469
- return (* ubh_get_addr ( ubh , begin + ( block >> 1 )) & mask ) == mask ;
469
+ mask = 0x0f << (frag & 4 );
470
+ return (* p & mask ) == mask ;
470
471
case 2 :
471
- mask = 0x03 << (( block & 0x03 ) << 1 );
472
- return (* ubh_get_addr ( ubh , begin + ( block >> 2 )) & mask ) == mask ;
472
+ mask = 0x03 << (frag & 6 );
473
+ return (* p & mask ) == mask ;
473
474
case 1 :
474
- mask = 0x01 << (block & 0x07 );
475
- return (* ubh_get_addr ( ubh , begin + ( block >> 3 )) & mask ) == mask ;
475
+ mask = 0x01 << (frag & 7 );
476
+ return (* p & mask ) == mask ;
476
477
}
477
478
return 0 ;
478
479
}
479
480
480
481
static inline void ubh_clrblock (struct ufs_sb_private_info * uspi ,
481
- struct ufs_cg_private_info * ucpi , unsigned block )
482
+ struct ufs_cg_private_info * ucpi , unsigned int frag )
482
483
{
483
484
struct ufs_buffer_head * ubh = UCPI_UBH (ucpi );
484
- unsigned begin = ucpi -> c_freeoff ;
485
+ u8 * p = ubh_get_addr (ubh , ucpi -> c_freeoff + (frag >> 3 ));
486
+
485
487
switch (uspi -> s_fpb ) {
486
488
case 8 :
487
- * ubh_get_addr ( ubh , begin + block ) = 0x00 ;
489
+ * p = 0x00 ;
488
490
return ;
489
491
case 4 :
490
- * ubh_get_addr ( ubh , begin + ( block >> 1 )) &= ~(0x0f << (( block & 0x01 ) << 2 ));
492
+ * p &= ~(0x0f << (frag & 4 ));
491
493
return ;
492
494
case 2 :
493
- * ubh_get_addr ( ubh , begin + ( block >> 2 )) &= ~(0x03 << (( block & 0x03 ) << 1 ));
495
+ * p &= ~(0x03 << (frag & 6 ));
494
496
return ;
495
497
case 1 :
496
- * ubh_get_addr ( ubh , begin + ( block >> 3 )) &= ~(0x01 << (( block & 0x07 ) ));
498
+ * p &= ~(0x01 << (frag & 7 ));
497
499
return ;
498
500
}
499
501
}
500
502
501
503
static inline void ubh_setblock (struct ufs_sb_private_info * uspi ,
502
- struct ufs_cg_private_info * ucpi , unsigned block )
504
+ struct ufs_cg_private_info * ucpi , unsigned int frag )
503
505
{
504
506
struct ufs_buffer_head * ubh = UCPI_UBH (ucpi );
505
- unsigned begin = ucpi -> c_freeoff ;
507
+ u8 * p = ubh_get_addr (ubh , ucpi -> c_freeoff + (frag >> 3 ));
508
+
506
509
switch (uspi -> s_fpb ) {
507
510
case 8 :
508
- * ubh_get_addr ( ubh , begin + block ) = 0xff ;
511
+ * p = 0xff ;
509
512
return ;
510
513
case 4 :
511
- * ubh_get_addr ( ubh , begin + ( block >> 1 )) |= ( 0x0f << (( block & 0x01 ) << 2 ) );
514
+ * p |= 0x0f << (frag & 4 );
512
515
return ;
513
516
case 2 :
514
- * ubh_get_addr ( ubh , begin + ( block >> 2 )) |= ( 0x03 << (( block & 0x03 ) << 1 ) );
517
+ * p |= 0x03 << (frag & 6 );
515
518
return ;
516
519
case 1 :
517
- * ubh_get_addr ( ubh , begin + ( block >> 3 )) |= ( 0x01 << (( block & 0x07 )) );
520
+ * p |= 0x01 << (frag & 7 );
518
521
return ;
519
522
}
520
523
}
0 commit comments