ubh_wait_on_buffer (UCPI_UBH); ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi); 
ubh_ll_rw_block (SWRITE, 1, (struct ufs_buffer_head **)&ucpi); 
ufs_add_fragments (struct inode * inode, unsigned fragment,		   unsigned oldcount, unsigned newcount, int * err){	struct super_block * sb;	struct ufs_sb_private_info * uspi;	struct ufs_super_block_first * usb1;	struct ufs_cg_private_info * ucpi;	struct ufs_cylinder_group * ucg;	unsigned cgno, fragno, fragoff, count, fragsize, i;		UFSD(("ENTER, fragment %u, oldcount %u, newcount %u\n", fragment, oldcount, newcount))		sb = inode->i_sb;	uspi = UFS_SB(sb)->s_uspi;	usb1 = ubh_get_usb_first (USPI_UBH);	count = newcount - oldcount;		cgno = ufs_dtog(fragment);	if (fs32_to_cpu(sb, UFS_SB(sb)->fs_cs(cgno).cs_nffree) < count)		return 0;	if ((ufs_fragnum (fragment) + newcount) > uspi->s_fpb)		return 0;	ucpi = ufs_load_cylinder (sb, cgno);	if (!ucpi)		return 0;	ucg = ubh_get_ucg (UCPI_UBH);	if (!ufs_cg_chkmagic(sb, ucg)) {		ufs_panic (sb, "ufs_add_fragments",			"internal error, bad magic number on cg %u", cgno);		return 0;	}	fragno = ufs_dtogd (fragment);	fragoff = ufs_fragnum (fragno);	for (i = oldcount; i < newcount; i++)		if (ubh_isclr (UCPI_UBH, ucpi->c_freeoff, fragno + i))			return 0;	/*	 * Block can be extended	 */	ucg->cg_time = cpu_to_fs32(sb, get_seconds());	for (i = newcount; i < (uspi->s_fpb - fragoff); i++)		if (ubh_isclr (UCPI_UBH, ucpi->c_freeoff, fragno + i))			break;	fragsize = i - oldcount;	if (!fs32_to_cpu(sb, ucg->cg_frsum[fragsize]))		ufs_panic (sb, "ufs_add_fragments",			"internal error or corrupted bitmap on cg %u", cgno);	fs32_sub(sb, &ucg->cg_frsum[fragsize], 1);	if (fragsize != count)		fs32_add(sb, &ucg->cg_frsum[fragsize - count], 1);	for (i = oldcount; i < newcount; i++)		ubh_clrbit (UCPI_UBH, ucpi->c_freeoff, fragno + i);	if(DQUOT_ALLOC_BLOCK(inode, count)) {		*err = -EDQUOT;		return 0;	}	fs32_sub(sb, &ucg->cg_cs.cs_nffree, count);	fs32_sub(sb, &UFS_SB(sb)->fs_cs(cgno).cs_nffree, count);	fs32_sub(sb, &usb1->fs_cstotal.cs_nffree, count);		ubh_mark_buffer_dirty (USPI_UBH);	ubh_mark_buffer_dirty (UCPI_UBH);	if (sb->s_flags & MS_SYNCHRONOUS) {		ubh_wait_on_buffer (UCPI_UBH);		ubh_ll_rw_block (WRITE, 1, (struct ufs_buffer_head **)&ucpi);		ubh_wait_on_buffer (UCPI_UBH);	}	sb->s_dirt = 1;	UFSD(("EXIT, fragment %u\n", fragment))		return fragment;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/096125f31ae3aa2c7271463b9986dd228e0da089/balloc.c/clean/fs/ufs/balloc.c