jbd2__journal_start — Obtain a new handle.
handle_t * jbd2__journal_start ( | journal_t * journal, |
int nblocks, | |
int rsv_blocks, | |
gfp_t gfp_mask, | |
unsigned int type, | |
unsigned int line_no) ; |
journal
Journal to start transaction on.
nblocks
number of block buffer we might modify
rsv_blocks
-- undescribed --
gfp_mask
-- undescribed --
type
-- undescribed --
line_no
-- undescribed --
We make sure that the transaction can guarantee at least nblocks of
modified buffers in the log. We block until the log can guarantee
that much space. Additionally, if rsv_blocks > 0, we also create another
handle with rsv_blocks reserved blocks in the journal. This handle is
is stored in h_rsv_handle. It is not attached to any particular transaction
and thus doesn't block transaction commit. If the caller uses this reserved
handle, it has to set h_rsv_handle to NULL as otherwise jbd2_journal_stop
on the parent handle will dispose the reserved one. Reserved handle has to
be converted to a normal handle using jbd2_journal_start_reserved
before
it can be used.
Return a pointer to a newly allocated handle, or an ERR_PTR
value
on failure.