1JOURNAL_GET_UNDO_ACC(9) The Linux Journalling API JOURNAL_GET_UNDO_ACC(9)
2
3
4
6 journal_get_undo_access - Notify intent to modify metadata with
7 non-rewindable consequences
8
10 int journal_get_undo_access(handle_t * handle,
11 struct buffer_head * bh);
12
14 handle
15 transaction
16
17 bh
18 buffer to undo
19
21 Sometimes there is a need to distinguish between metadata which has
22 been committed to disk and that which has not. The ext3fs code uses
23 this for freeing and allocating space, we have to make sure that we do
24 not reuse freed space until the deallocation has been committed, since
25 if we overwrote that space we would make the delete un-rewindable in
26 case of a crash.
27
28 To deal with that, journal_get_undo_access requests write access to a
29 buffer for parts of non-rewindable operations such as delete operations
30 on the bitmaps. The journaling code must keep a copy of the buffer's
31 contents prior to the undo_access call until such time as we know that
32 the buffer has definitely been committed to disk.
33
34 We never need to know which transaction the committed data is part of,
35 buffers touched here are guaranteed to be dirtied later and so will be
36 committed to a new transaction in due course, at which point we can
37 discard the old committed data pointer.
38
39 Returns error number or 0 on success.
40
42 Roger Gammans <rgammans@computer-surgery.co.uk>
43 Author.
44
45 Stephen Tweedie <sct@redhat.com>
46 Author.
47
49Kernel Hackers Manual 3.10 June 2019 JOURNAL_GET_UNDO_ACC(9)