Ejemplo n.º 1
0
void ubh_sync_block(struct ufs_buffer_head *ubh)
{
	if (ubh) {
		unsigned i;

		for (i = 0; i < ubh->count; i++)
			write_dirty_buffer(ubh->bh[i], 0);

		for (i = 0; i < ubh->count; i++)
			wait_on_buffer(ubh->bh[i]);
	}
}
Ejemplo n.º 2
0
static void
__flush_batch(journal_t *journal, int *batch_count)
{
    int i;
    struct blk_plug plug;

    blk_start_plug(&plug);
    for (i = 0; i < *batch_count; i++)
        write_dirty_buffer(journal->j_chkpt_bhs[i], WRITE_SYNC);
    blk_finish_plug(&plug);

    for (i = 0; i < *batch_count; i++) {
        struct buffer_head *bh = journal->j_chkpt_bhs[i];
        BUFFER_TRACE(bh, "brelse");
        __brelse(bh);
    }
    *batch_count = 0;
}
Ejemplo n.º 3
0
static void flush_descriptor(journal_t *journal,
			     struct buffer_head *descriptor,
			     int offset)
{
	jbd2_journal_revoke_header_t *header;

	if (is_journal_aborted(journal)) {
		put_bh(descriptor);
		return;
	}

	header = (jbd2_journal_revoke_header_t *)descriptor->b_data;
	header->r_count = cpu_to_be32(offset);
	jbd2_descriptor_block_csum_set(journal, descriptor);

	set_buffer_jwrite(descriptor);
	BUFFER_TRACE(descriptor, "write");
	set_buffer_dirty(descriptor);
	write_dirty_buffer(descriptor, REQ_SYNC);
}