Beispiel #1
0
int bufferfork_to_invalidate(map_t *map, struct buffer_head *buffer)
{
	unsigned delta = tux3_inode_delta(map->inode);

	/*
	 * The userland shouldn't need to buffer fork on truncate
	 * path, because no async backend.  So, just make sure it.
	 */
	assert(buffer_can_modify(buffer, delta));

	return 0;
}
Beispiel #2
0
int bufferfork_to_invalidate(map_t *map, struct buffer_head *buffer)
{
	if(DEBUG_MODE_U==1)
	{
		printf("\t\t\t\t%25s[U]  %25s  %4d  #in\n",__FILE__,__func__,__LINE__);
	}
	unsigned delta = tux3_inode_delta(map->inode);
	/*
	 * The userland shouldn't need to buffer fork on truncate
	 * path, because no async backend.  So, just make sure it.
	 */
	assert(buffer_can_modify(buffer, delta));

	return 0;
}
Beispiel #3
0
/*
 * Caller must hold lock_page() or backend (otherwise, you may race
 * with buffer fork or set dirty)
 */
void tux3_clear_buffer_dirty(struct buffer_head *buffer, unsigned delta)
{
	struct address_space *buffer_mapping = buffer->b_assoc_map;

	/* The buffer must not need to fork */
	assert(buffer_can_modify(buffer, delta));

	if (buffer_mapping) {
		spin_lock(&buffer_mapping->private_lock);
		list_del_init(&buffer->b_assoc_buffers);
		buffer->b_assoc_map = NULL;
		tux3_clear_bufdelta(buffer);
		spin_unlock(&buffer_mapping->private_lock);

		clear_buffer_dirty(buffer);
	} else
		BUG_ON(!list_empty(&buffer->b_assoc_buffers));
}