10 #include <linux/sched.h>
11 #include <linux/slab.h>
38 struct buffer_head *bh, *
head;
44 BUG_ON(!page_has_buffers(page));
46 head = page_buffers(page);
50 if (!buffer_mapped(bh))
61 }
else if (!trylock_buffer(bh)) {
65 if (test_clear_buffer_dirty(bh)) {
70 }
while ((bh = bh->b_this_page) != head);
76 BUG_ON(PageWriteback(page));
77 set_page_writeback(page);
80 struct buffer_head *
next = bh->b_this_page;
81 if (buffer_async_write(bh)) {
96 .writepage = gfs2_aspace_writepage,
132 struct buffer_head *bh;
138 index = blkno >> shift;
139 bufnum = blkno - (index << shift);
143 page = grab_cache_page(mapping, index);
154 if (!page_has_buffers(page))
158 for (bh = page_buffers(page); bufnum--; bh = bh->b_this_page)
162 if (!buffer_mapped(bh))
163 map_bh(bh, sdp->
sd_vfs, blkno);
172 static void meta_prep_new(
struct buffer_head *bh)
177 clear_buffer_dirty(bh);
178 set_buffer_uptodate(bh);
194 struct buffer_head *bh;
211 struct buffer_head **bhp)
214 struct buffer_head *bh;
224 if (buffer_uptodate(bh)) {
235 if (
unlikely(!buffer_uptodate(bh))) {
262 if (!buffer_uptodate(bh)) {
287 lock_page(bh->b_page);
312 struct gfs2_sbd *sdp = gfs2_mapping2sbd(mapping);
315 if (test_clear_buffer_pinned(bh)) {
316 trace_gfs2_pin(bd, 0);
335 bh->b_private =
NULL;
342 clear_buffer_dirty(bh);
343 clear_buffer_uptodate(bh);
357 struct buffer_head *bh;
365 gfs2_log_unlock(sdp);
386 struct buffer_head **bhp)
390 struct buffer_head *bh;
415 struct buffer_head *first_bh, *bh;
417 sdp->
sd_sb.sb_bsize_shift;
428 if (buffer_uptodate(first_bh))
430 if (!buffer_locked(first_bh))
439 if (!buffer_uptodate(bh) && !buffer_locked(bh))
444 if (!buffer_locked(first_bh) && buffer_uptodate(first_bh))
448 wait_on_buffer(first_bh);