di = (struct bfs_inode *)bh->b_data + off; if (di->i_ino) { info->si_freeb += BFS_FILEBLOCKS(di); 
di = (struct bfs_inode *) bh->b_data + off; if (bi->i_dsk_ino) { info->si_freeb += 1 + bi->i_eblock - bi->i_sblock; 
static void bfs_delete_inode(struct inode * inode){	unsigned long ino = inode->i_ino;	struct bfs_inode * di;	struct buffer_head * bh;	int block, off;	struct super_block * s = inode->i_sb;	struct bfs_sb_info * info = BFS_SB(s);	dprintf("ino=%08lx\n", inode->i_ino);	truncate_inode_pages(&inode->i_data, 0);	if (inode->i_ino < BFS_ROOT_INO || inode->i_ino > info->si_lasti) {		printf("invalid ino=%08lx\n", inode->i_ino);		return;	}		inode->i_size = 0;	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;	lock_kernel();	mark_inode_dirty(inode);	block = (ino - BFS_ROOT_INO)/BFS_INODES_PER_BLOCK + 1;	bh = sb_bread(s, block);	if (!bh) {		printf("Unable to read inode %s:%08lx\n", inode->i_sb->s_id, ino);		unlock_kernel();		return;	}	off = (ino - BFS_ROOT_INO)%BFS_INODES_PER_BLOCK;	di = (struct bfs_inode *)bh->b_data + off;	if (di->i_ino) {		info->si_freeb += BFS_FILEBLOCKS(di);		info->si_freei++;		clear_bit(di->i_ino, info->si_imap);		dump_imap("delete_inode", s);	}	di->i_ino = 0;	di->i_sblock = 0;	mark_buffer_dirty(bh);	brelse(bh);	/* if this was the last file, make the previous 	   block "last files last block" even if there is no real file there,	   saves us 1 gap */	if (info->si_lf_eblk == BFS_I(inode)->i_eblock) {		info->si_lf_eblk = BFS_I(inode)->i_sblock - 1;		mark_buffer_dirty(info->si_sbh);	}	unlock_kernel();	clear_inode(inode);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fac92becdaecff64dd91daab0292c5131de92f0d/inode.c/clean/fs/bfs/inode.c