nfs_unlock_request(req); 
nfs_clear_page_writeback(req); 
static int nfs_flush_multi(struct list_head *head, struct inode *inode, int how){	struct nfs_page *req = nfs_list_entry(head->next);	struct page *page = req->wb_page;	struct nfs_write_data *data;	unsigned int wsize = NFS_SERVER(inode)->wsize;	unsigned int nbytes, offset;	int requests = 0;	LIST_HEAD(list);	nfs_list_remove_request(req);	nbytes = req->wb_bytes;	for (;;) {		data = nfs_writedata_alloc();		if (!data)			goto out_bad;		list_add(&data->pages, &list);		requests++;		if (nbytes <= wsize)			break;		nbytes -= wsize;	}	atomic_set(&req->wb_complete, requests);	ClearPageError(page);	SetPageWriteback(page);	offset = 0;	nbytes = req->wb_bytes;	do {		data = list_entry(list.next, struct nfs_write_data, pages);		list_del_init(&data->pages);		data->pagevec[0] = page;		data->complete = nfs_writeback_done_partial;		if (nbytes > wsize) {			nfs_write_rpcsetup(req, data, wsize, offset, how);			offset += wsize;			nbytes -= wsize;		} else {			nfs_write_rpcsetup(req, data, nbytes, offset, how);			nbytes = 0;		}		nfs_execute_write(data);	} while (nbytes != 0);	return 0;out_bad:	while (!list_empty(&list)) {		data = list_entry(list.next, struct nfs_write_data, pages);		list_del(&data->pages);		nfs_writedata_free(data);	}	nfs_mark_request_dirty(req);	nfs_unlock_request(req);	return -ENOMEM;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c6a556b88adfacd2af90be84357c8165d716c27d/write.c/buggy/fs/nfs/write.c