ubh_wait_on_buffer (tind_bh); ubh_ll_rw_block (WRITE, 1, &tind_bh); 
ubh_ll_rw_block (SWRITE, 1, &tind_bh); 
static int ufs_trunc_tindirect (struct inode * inode){	struct ufs_inode_info *ufsi = UFS_I(inode);	struct super_block * sb;	struct ufs_sb_private_info * uspi;	struct ufs_buffer_head * tind_bh;	unsigned tindirect_block, tmp, i;	__fs32 * tind, * p;	int retry;		UFSD(("ENTER\n"))	sb = inode->i_sb;	uspi = UFS_SB(sb)->s_uspi;	retry = 0;		tindirect_block = (DIRECT_BLOCK > (UFS_NDADDR + uspi->s_apb + uspi->s_2apb))		? ((DIRECT_BLOCK - UFS_NDADDR - uspi->s_apb - uspi->s_2apb) >> uspi->s_2apbshift) : 0;	p = ufsi->i_u1.i_data + UFS_TIND_BLOCK;	if (!(tmp = fs32_to_cpu(sb, *p)))		return 0;	tind_bh = ubh_bread (sb, tmp, uspi->s_bsize);	if (tmp != fs32_to_cpu(sb, *p)) {		ubh_brelse (tind_bh);		return 1;	}	if (!tind_bh) {		*p = 0;		return 0;	}	for (i = tindirect_block ; i < uspi->s_apb ; i++) {		tind = ubh_get_addr32 (tind_bh, i);		retry |= ufs_trunc_dindirect(inode, UFS_NDADDR + 			uspi->s_apb + ((i + 1) << uspi->s_2apbshift), tind);		ubh_mark_buffer_dirty(tind_bh);	}	for (i = 0; i < uspi->s_apb; i++)		if (*ubh_get_addr32 (tind_bh, i))			break;	if (i >= uspi->s_apb) {		if (ubh_max_bcount(tind_bh) != 1)			retry = 1;		else {			tmp = fs32_to_cpu(sb, *p);			*p = 0;			inode->i_blocks -= uspi->s_nspb;			mark_inode_dirty(inode);			ufs_free_blocks (inode, tmp, uspi->s_fpb);			ubh_bforget(tind_bh);			tind_bh = NULL;		}	}	if (IS_SYNC(inode) && tind_bh && ubh_buffer_dirty(tind_bh)) {		ubh_wait_on_buffer (tind_bh);		ubh_ll_rw_block (WRITE, 1, &tind_bh);		ubh_wait_on_buffer (tind_bh);	}	ubh_brelse (tind_bh);		UFSD(("EXIT\n"))	return retry;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/096125f31ae3aa2c7271463b9986dd228e0da089/truncate.c/clean/fs/ufs/truncate.c