wait_on_buffer(bh); ll_rw_block(WRITE, 1, &bh); 
ll_rw_block(SWRITE, 1, &bh); 
static int fsync_buffers_list(spinlock_t *lock, struct list_head *list){	struct buffer_head *bh;	struct list_head tmp;	int err = 0, err2;	INIT_LIST_HEAD(&tmp);	spin_lock(lock);	while (!list_empty(list)) {		bh = BH_ENTRY(list->next);		list_del_init(&bh->b_assoc_buffers);		if (buffer_dirty(bh) || buffer_locked(bh)) {			list_add(&bh->b_assoc_buffers, &tmp);			if (buffer_dirty(bh)) {				get_bh(bh);				spin_unlock(lock);				/*				 * Ensure any pending I/O completes so that				 * ll_rw_block() actually writes the current				 * contents - it is a noop if I/O is still in				 * flight on potentially older contents.				 */				wait_on_buffer(bh);				ll_rw_block(WRITE, 1, &bh);				brelse(bh);				spin_lock(lock);			}		}	}	while (!list_empty(&tmp)) {		bh = BH_ENTRY(tmp.prev);		__remove_assoc_queue(bh);		get_bh(bh);		spin_unlock(lock);		wait_on_buffer(bh);		if (!buffer_uptodate(bh))			err = -EIO;		brelse(bh);		spin_lock(lock);	}		spin_unlock(lock);	err2 = osync_buffers_list(lock, list);	if (err)		return err;	else		return err2;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/a7662236253374012d364106b6dc9161bd929e2e/buffer.c/clean/fs/buffer.c