1
--- linux-2.4.27/fs/buffer.c 2004-10-14 11:06:55.000000000 -0500
2
+++ linux/fs/buffer.c 2004-10-14 14:21:05.173812484 -0500
4
bh->b_list = BUF_CLEAN;
5
bh->b_end_io = handler;
6
bh->b_private = private;
7
+ bh->b_journal_head = NULL;
10
void end_buffer_io_async(struct buffer_head * bh, int uptodate)
11
--- linux-2.4.27/fs/jbd/journal.c 2004-10-14 11:06:55.000000000 -0500
12
+++ linux/fs/jbd/journal.c 2004-10-14 14:21:05.188810355 -0500
16
/* Someone did it for us! */
17
- J_ASSERT_BH(bh, bh->b_private != NULL);
18
+ J_ASSERT_BH(bh, bh->b_journal_head != NULL);
19
journal_free_journal_head(jh);
21
+ jh = bh->b_journal_head;
24
* We actually don't need jh_splice_lock when
27
spin_lock(&jh_splice_lock);
28
set_bit(BH_JBD, &bh->b_state);
30
+ bh->b_journal_head = jh;
32
atomic_inc(&bh->b_count);
33
spin_unlock(&jh_splice_lock);
37
spin_unlock(&journal_datalist_lock);
38
- return bh->b_private;
39
+ return bh->b_journal_head;
44
J_ASSERT_BH(bh, jh2bh(jh) == bh);
45
BUFFER_TRACE(bh, "remove journal_head");
46
spin_lock(&jh_splice_lock);
47
- bh->b_private = NULL;
48
+ bh->b_journal_head = NULL;
49
jh->b_bh = NULL; /* debug, really */
50
clear_bit(BH_JBD, &bh->b_state);
52
--- linux-2.4.27/include/linux/fs.h 2004-10-14 11:07:15.000000000 -0500
53
+++ linux/include/linux/fs.h 2004-10-14 14:21:05.211807091 -0500
55
struct page *b_page; /* the page this bh is mapped to */
56
void (*b_end_io)(struct buffer_head *bh, int uptodate); /* I/O completion */
57
void *b_private; /* reserved for b_end_io */
59
+ void *b_journal_head; /* ext3 journal_heads */
60
unsigned long b_rsector; /* Real buffer location on disk */
61
wait_queue_head_t b_wait;
63
--- linux-2.4.27/include/linux/jbd.h 2004-10-14 11:07:14.000000000 -0500
64
+++ linux/include/linux/jbd.h 2004-10-14 14:21:05.221805672 -0500
67
static inline struct journal_head *bh2jh(struct buffer_head *bh)
69
- return bh->b_private;
70
+ return bh->b_journal_head;
73
#define HAVE_JOURNAL_CALLBACK_STATUS