Lines Matching defs:revoke

2  * linux/fs/revoke.c
12 * Journal revoke routines for the generic filesystem journaling code;
17 * blocks. The revoke mechanism is used in two separate places:
23 * revoked blocks. If there are multiple revoke records in the log
25 * entry for a block beyond the last revoke, then that log entry still
33 * cancel the revoke before the transaction commits.
36 * The revoke must take precedence over the write of the block, so we
37 * need either to cancel the journal entry or to write the revoke
39 * latter: journaling a block cancels any revoke record for that block
40 * in the current transaction, so any revoke for that block in the
42 * the revoke must take precedence.
45 * The data write is allowed to succeed, but the revoke is _not_
47 * overwriting the new data. We don't even need to clear the revoke
52 * RevokeValid clear: no cached revoke status, need to look it up
77 /* Each revoke record represents one single revoked block. During
79 last transaction to revoke this block. */
89 /* The revoke table is just a simple hash table of revoke records. */
107 /* Utility functions to maintain the revoke table */
152 /* Find a revoke record in the journal's hash table. */
198 /* Initialise the revoke table for a given journal to a given size. */
235 /* Destoy a journal's revoke table. The table must already be empty! */
261 * journal_revoke: revoke a given buffer_head from the journal. This
265 * revoke.
269 * before the revoke is complete. In ext3, this implies calling the
270 * revoke before clearing the block bitmap when we are deleting
297 J_ASSERT (!"Cannot set revoke feature!");
321 * since it's illegal to create a revoke
324 * risk missing a subsequent revoke
333 /* We really ought not ever to revoke twice in a row without
334 first having the revoke cancelled: it's illegal to free a
350 jbd_debug(2, "insert revoke for block %lu, bh_in=%p\n", blocknr, bh_in);
359 * Cancel an outstanding revoke. For use only internally by the
363 * being journaled: if there is no revoke pending on the buffer, then we
369 * the second time we would still have a pending revoke to cancel. So,
383 jbd_debug(4, "journal_head %p, cancelling revoke\n", jh);
386 * only perform the full cancel if the revoke bit is set. If
387 * not, we can't trust the revoke bit, and we need to do the
388 * full search for a revoke record. */
399 jbd_debug(4, "cancelled existing revoke on "
413 /* Finally, have we just cleared revoke on an unhashed
415 * revoked status on any hashed alias too, otherwise the revoke
431 * Write revoke records to the journal for all entries in the current
432 * revoke hash, deleting the entries as we go.
442 struct jbd_revoke_table_s *revoke;
449 revoke = journal->j_revoke;
451 for (i = 0; i < revoke->hash_size; i++) {
452 hash_list = &revoke->hash_table[i];
467 jbd_debug(1, "Wrote %d revoke records\n", count);
471 * Write out one revoke record. We need to create a new descriptor
488 revoke records: only the IO to the journal is omitted. */
527 * Flush a revoke descriptor out to the journal. If we are aborting,
562 * record all revoke records, including the tid of the latest instance
563 * of each revoke in the journal
566 * (ie. has not been revoked by a revoke record in that or a subsequent
569 * empty the revoke table after recovery.
573 * First, setting revoke records. We create a new revoke record for
597 * Test revoke records. For a given block referenced in the log, has
598 * that block been revoked? A revoke record with a given transaction
618 * Finally, once recovery is over, we need to clear the revoke table so
627 struct jbd_revoke_table_s *revoke;
629 revoke = journal->j_revoke;
631 for (i = 0; i < revoke->hash_size; i++) {
632 hash_list = &revoke->hash_table[i];