mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
ufs: untangle ubh_...block...(), part 2
pass cylinder group descriptor instead of its buffer head (ubh, always UCPI_UBH(ucpi)) and its ->c_freeoff. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
65136e46a0
commit
8bec0618a4
|
|
@ -95,7 +95,7 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count)
|
|||
* Trying to reassemble free fragments into block
|
||||
*/
|
||||
blkno = ufs_fragstoblks (bbase);
|
||||
if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno)) {
|
||||
if (ubh_isblockset(uspi, ucpi, blkno)) {
|
||||
fs32_sub(sb, &ucg->cg_cs.cs_nffree, uspi->s_fpb);
|
||||
uspi->cs_total.cs_nffree -= uspi->s_fpb;
|
||||
fs32_sub(sb, &UFS_SB(sb)->fs_cs(cgno).cs_nffree, uspi->s_fpb);
|
||||
|
|
@ -182,10 +182,10 @@ void ufs_free_blocks(struct inode *inode, u64 fragment, unsigned count)
|
|||
|
||||
for (i = bit; i < end_bit; i += uspi->s_fpb) {
|
||||
blkno = ufs_fragstoblks(i);
|
||||
if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno)) {
|
||||
if (ubh_isblockset(uspi, ucpi, blkno)) {
|
||||
ufs_error(sb, "ufs_free_blocks", "freeing free fragment");
|
||||
}
|
||||
ubh_setblock(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno);
|
||||
ubh_setblock(uspi, ucpi, blkno);
|
||||
inode_sub_bytes(inode, uspi->s_fpb << uspi->s_fshift);
|
||||
if ((UFS_SB(sb)->s_flags & UFS_CG_MASK) == UFS_CG_44BSD)
|
||||
ufs_clusteracct (sb, ucpi, blkno, 1);
|
||||
|
|
@ -716,7 +716,7 @@ static u64 ufs_alloccg_block(struct inode *inode,
|
|||
/*
|
||||
* If the requested block is available, use it.
|
||||
*/
|
||||
if (ubh_isblockset(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, ufs_fragstoblks(goal))) {
|
||||
if (ubh_isblockset(uspi, ucpi, ufs_fragstoblks(goal))) {
|
||||
result = goal;
|
||||
goto gotit;
|
||||
}
|
||||
|
|
@ -730,7 +730,7 @@ static u64 ufs_alloccg_block(struct inode *inode,
|
|||
if (!try_add_frags(inode, uspi->s_fpb))
|
||||
return 0;
|
||||
blkno = ufs_fragstoblks(result);
|
||||
ubh_clrblock(uspi, UCPI_UBH(ucpi), ucpi->c_freeoff, blkno);
|
||||
ubh_clrblock(uspi, ucpi, blkno);
|
||||
if ((UFS_SB(sb)->s_flags & UFS_CG_MASK) == UFS_CG_44BSD)
|
||||
ufs_clusteracct (sb, ucpi, blkno, -1);
|
||||
|
||||
|
|
|
|||
|
|
@ -455,9 +455,11 @@ static inline unsigned _ubh_find_last_zero_bit_(
|
|||
return (base << uspi->s_bpfshift) + pos - begin;
|
||||
}
|
||||
|
||||
static inline int ubh_isblockset(struct ufs_sb_private_info * uspi,
|
||||
struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
|
||||
static inline int ubh_isblockset(struct ufs_sb_private_info *uspi,
|
||||
struct ufs_cg_private_info *ucpi, unsigned block)
|
||||
{
|
||||
struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
|
||||
unsigned begin = ucpi->c_freeoff;
|
||||
u8 mask;
|
||||
switch (uspi->s_fpb) {
|
||||
case 8:
|
||||
|
|
@ -475,9 +477,11 @@ static inline int ubh_isblockset(struct ufs_sb_private_info * uspi,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void ubh_clrblock(struct ufs_sb_private_info * uspi,
|
||||
struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
|
||||
static inline void ubh_clrblock(struct ufs_sb_private_info *uspi,
|
||||
struct ufs_cg_private_info *ucpi, unsigned block)
|
||||
{
|
||||
struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
|
||||
unsigned begin = ucpi->c_freeoff;
|
||||
switch (uspi->s_fpb) {
|
||||
case 8:
|
||||
*ubh_get_addr (ubh, begin + block) = 0x00;
|
||||
|
|
@ -495,8 +499,10 @@ static inline void ubh_clrblock(struct ufs_sb_private_info * uspi,
|
|||
}
|
||||
|
||||
static inline void ubh_setblock(struct ufs_sb_private_info * uspi,
|
||||
struct ufs_buffer_head * ubh, unsigned begin, unsigned block)
|
||||
struct ufs_cg_private_info *ucpi, unsigned block)
|
||||
{
|
||||
struct ufs_buffer_head *ubh = UCPI_UBH(ucpi);
|
||||
unsigned begin = ucpi->c_freeoff;
|
||||
switch (uspi->s_fpb) {
|
||||
case 8:
|
||||
*ubh_get_addr(ubh, begin + block) = 0xff;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user