xref: /openbmc/linux/fs/gfs2/aops.c (revision 967bcc91)
1 /*
2  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
3  * Copyright (C) 2004-2008 Red Hat, Inc.  All rights reserved.
4  *
5  * This copyrighted material is made available to anyone wishing to use,
6  * modify, copy, or redistribute it subject to the terms and conditions
7  * of the GNU General Public License version 2.
8  */
9 
10 #include <linux/sched.h>
11 #include <linux/slab.h>
12 #include <linux/spinlock.h>
13 #include <linux/completion.h>
14 #include <linux/buffer_head.h>
15 #include <linux/pagemap.h>
16 #include <linux/pagevec.h>
17 #include <linux/mpage.h>
18 #include <linux/fs.h>
19 #include <linux/writeback.h>
20 #include <linux/swap.h>
21 #include <linux/gfs2_ondisk.h>
22 #include <linux/backing-dev.h>
23 #include <linux/uio.h>
24 #include <trace/events/writeback.h>
25 #include <linux/sched/signal.h>
26 
27 #include "gfs2.h"
28 #include "incore.h"
29 #include "bmap.h"
30 #include "glock.h"
31 #include "inode.h"
32 #include "log.h"
33 #include "meta_io.h"
34 #include "quota.h"
35 #include "trans.h"
36 #include "rgrp.h"
37 #include "super.h"
38 #include "util.h"
39 #include "glops.h"
40 #include "aops.h"
41 
42 
43 void gfs2_page_add_databufs(struct gfs2_inode *ip, struct page *page,
44 			    unsigned int from, unsigned int len)
45 {
46 	struct buffer_head *head = page_buffers(page);
47 	unsigned int bsize = head->b_size;
48 	struct buffer_head *bh;
49 	unsigned int to = from + len;
50 	unsigned int start, end;
51 
52 	for (bh = head, start = 0; bh != head || !start;
53 	     bh = bh->b_this_page, start = end) {
54 		end = start + bsize;
55 		if (end <= from)
56 			continue;
57 		if (start >= to)
58 			break;
59 		set_buffer_uptodate(bh);
60 		gfs2_trans_add_data(ip->i_gl, bh);
61 	}
62 }
63 
64 /**
65  * gfs2_get_block_noalloc - Fills in a buffer head with details about a block
66  * @inode: The inode
67  * @lblock: The block number to look up
68  * @bh_result: The buffer head to return the result in
69  * @create: Non-zero if we may add block to the file
70  *
71  * Returns: errno
72  */
73 
74 static int gfs2_get_block_noalloc(struct inode *inode, sector_t lblock,
75 				  struct buffer_head *bh_result, int create)
76 {
77 	int error;
78 
79 	error = gfs2_block_map(inode, lblock, bh_result, 0);
80 	if (error)
81 		return error;
82 	if (!buffer_mapped(bh_result))
83 		return -EIO;
84 	return 0;
85 }
86 
87 /**
88  * gfs2_writepage_common - Common bits of writepage
89  * @page: The page to be written
90  * @wbc: The writeback control
91  *
92  * Returns: 1 if writepage is ok, otherwise an error code or zero if no error.
93  */
94 
95 static int gfs2_writepage_common(struct page *page,
96 				 struct writeback_control *wbc)
97 {
98 	struct inode *inode = page->mapping->host;
99 	struct gfs2_inode *ip = GFS2_I(inode);
100 	struct gfs2_sbd *sdp = GFS2_SB(inode);
101 	loff_t i_size = i_size_read(inode);
102 	pgoff_t end_index = i_size >> PAGE_SHIFT;
103 	unsigned offset;
104 
105 	if (gfs2_assert_withdraw(sdp, gfs2_glock_is_held_excl(ip->i_gl)))
106 		goto out;
107 	if (current->journal_info)
108 		goto redirty;
109 	/* Is the page fully outside i_size? (truncate in progress) */
110 	offset = i_size & (PAGE_SIZE-1);
111 	if (page->index > end_index || (page->index == end_index && !offset)) {
112 		page->mapping->a_ops->invalidatepage(page, 0, PAGE_SIZE);
113 		goto out;
114 	}
115 	return 1;
116 redirty:
117 	redirty_page_for_writepage(wbc, page);
118 out:
119 	unlock_page(page);
120 	return 0;
121 }
122 
123 /**
124  * gfs2_writepage - Write page for writeback mappings
125  * @page: The page
126  * @wbc: The writeback control
127  *
128  */
129 
130 static int gfs2_writepage(struct page *page, struct writeback_control *wbc)
131 {
132 	int ret;
133 
134 	ret = gfs2_writepage_common(page, wbc);
135 	if (ret <= 0)
136 		return ret;
137 
138 	return nobh_writepage(page, gfs2_get_block_noalloc, wbc);
139 }
140 
141 /* This is the same as calling block_write_full_page, but it also
142  * writes pages outside of i_size
143  */
144 static int gfs2_write_full_page(struct page *page, get_block_t *get_block,
145 				struct writeback_control *wbc)
146 {
147 	struct inode * const inode = page->mapping->host;
148 	loff_t i_size = i_size_read(inode);
149 	const pgoff_t end_index = i_size >> PAGE_SHIFT;
150 	unsigned offset;
151 
152 	/*
153 	 * The page straddles i_size.  It must be zeroed out on each and every
154 	 * writepage invocation because it may be mmapped.  "A file is mapped
155 	 * in multiples of the page size.  For a file that is not a multiple of
156 	 * the  page size, the remaining memory is zeroed when mapped, and
157 	 * writes to that region are not written out to the file."
158 	 */
159 	offset = i_size & (PAGE_SIZE-1);
160 	if (page->index == end_index && offset)
161 		zero_user_segment(page, offset, PAGE_SIZE);
162 
163 	return __block_write_full_page(inode, page, get_block, wbc,
164 				       end_buffer_async_write);
165 }
166 
167 /**
168  * __gfs2_jdata_writepage - The core of jdata writepage
169  * @page: The page to write
170  * @wbc: The writeback control
171  *
172  * This is shared between writepage and writepages and implements the
173  * core of the writepage operation. If a transaction is required then
174  * PageChecked will have been set and the transaction will have
175  * already been started before this is called.
176  */
177 
178 static int __gfs2_jdata_writepage(struct page *page, struct writeback_control *wbc)
179 {
180 	struct inode *inode = page->mapping->host;
181 	struct gfs2_inode *ip = GFS2_I(inode);
182 	struct gfs2_sbd *sdp = GFS2_SB(inode);
183 
184 	if (PageChecked(page)) {
185 		ClearPageChecked(page);
186 		if (!page_has_buffers(page)) {
187 			create_empty_buffers(page, inode->i_sb->s_blocksize,
188 					     BIT(BH_Dirty)|BIT(BH_Uptodate));
189 		}
190 		gfs2_page_add_databufs(ip, page, 0, sdp->sd_vfs->s_blocksize);
191 	}
192 	return gfs2_write_full_page(page, gfs2_get_block_noalloc, wbc);
193 }
194 
195 /**
196  * gfs2_jdata_writepage - Write complete page
197  * @page: Page to write
198  * @wbc: The writeback control
199  *
200  * Returns: errno
201  *
202  */
203 
204 static int gfs2_jdata_writepage(struct page *page, struct writeback_control *wbc)
205 {
206 	struct inode *inode = page->mapping->host;
207 	struct gfs2_inode *ip = GFS2_I(inode);
208 	struct gfs2_sbd *sdp = GFS2_SB(inode);
209 	int ret;
210 
211 	if (gfs2_assert_withdraw(sdp, gfs2_glock_is_held_excl(ip->i_gl)))
212 		goto out;
213 	if (PageChecked(page) || current->journal_info)
214 		goto out_ignore;
215 	ret = __gfs2_jdata_writepage(page, wbc);
216 	return ret;
217 
218 out_ignore:
219 	redirty_page_for_writepage(wbc, page);
220 out:
221 	unlock_page(page);
222 	return 0;
223 }
224 
225 /**
226  * gfs2_writepages - Write a bunch of dirty pages back to disk
227  * @mapping: The mapping to write
228  * @wbc: Write-back control
229  *
230  * Used for both ordered and writeback modes.
231  */
232 static int gfs2_writepages(struct address_space *mapping,
233 			   struct writeback_control *wbc)
234 {
235 	struct gfs2_sbd *sdp = gfs2_mapping2sbd(mapping);
236 	int ret = mpage_writepages(mapping, wbc, gfs2_get_block_noalloc);
237 
238 	/*
239 	 * Even if we didn't write any pages here, we might still be holding
240 	 * dirty pages in the ail. We forcibly flush the ail because we don't
241 	 * want balance_dirty_pages() to loop indefinitely trying to write out
242 	 * pages held in the ail that it can't find.
243 	 */
244 	if (ret == 0)
245 		set_bit(SDF_FORCE_AIL_FLUSH, &sdp->sd_flags);
246 
247 	return ret;
248 }
249 
250 /**
251  * gfs2_write_jdata_pagevec - Write back a pagevec's worth of pages
252  * @mapping: The mapping
253  * @wbc: The writeback control
254  * @pvec: The vector of pages
255  * @nr_pages: The number of pages to write
256  * @done_index: Page index
257  *
258  * Returns: non-zero if loop should terminate, zero otherwise
259  */
260 
261 static int gfs2_write_jdata_pagevec(struct address_space *mapping,
262 				    struct writeback_control *wbc,
263 				    struct pagevec *pvec,
264 				    int nr_pages,
265 				    pgoff_t *done_index)
266 {
267 	struct inode *inode = mapping->host;
268 	struct gfs2_sbd *sdp = GFS2_SB(inode);
269 	unsigned nrblocks = nr_pages * (PAGE_SIZE/inode->i_sb->s_blocksize);
270 	int i;
271 	int ret;
272 
273 	ret = gfs2_trans_begin(sdp, nrblocks, nrblocks);
274 	if (ret < 0)
275 		return ret;
276 
277 	for(i = 0; i < nr_pages; i++) {
278 		struct page *page = pvec->pages[i];
279 
280 		*done_index = page->index;
281 
282 		lock_page(page);
283 
284 		if (unlikely(page->mapping != mapping)) {
285 continue_unlock:
286 			unlock_page(page);
287 			continue;
288 		}
289 
290 		if (!PageDirty(page)) {
291 			/* someone wrote it for us */
292 			goto continue_unlock;
293 		}
294 
295 		if (PageWriteback(page)) {
296 			if (wbc->sync_mode != WB_SYNC_NONE)
297 				wait_on_page_writeback(page);
298 			else
299 				goto continue_unlock;
300 		}
301 
302 		BUG_ON(PageWriteback(page));
303 		if (!clear_page_dirty_for_io(page))
304 			goto continue_unlock;
305 
306 		trace_wbc_writepage(wbc, inode_to_bdi(inode));
307 
308 		ret = __gfs2_jdata_writepage(page, wbc);
309 		if (unlikely(ret)) {
310 			if (ret == AOP_WRITEPAGE_ACTIVATE) {
311 				unlock_page(page);
312 				ret = 0;
313 			} else {
314 
315 				/*
316 				 * done_index is set past this page,
317 				 * so media errors will not choke
318 				 * background writeout for the entire
319 				 * file. This has consequences for
320 				 * range_cyclic semantics (ie. it may
321 				 * not be suitable for data integrity
322 				 * writeout).
323 				 */
324 				*done_index = page->index + 1;
325 				ret = 1;
326 				break;
327 			}
328 		}
329 
330 		/*
331 		 * We stop writing back only if we are not doing
332 		 * integrity sync. In case of integrity sync we have to
333 		 * keep going until we have written all the pages
334 		 * we tagged for writeback prior to entering this loop.
335 		 */
336 		if (--wbc->nr_to_write <= 0 && wbc->sync_mode == WB_SYNC_NONE) {
337 			ret = 1;
338 			break;
339 		}
340 
341 	}
342 	gfs2_trans_end(sdp);
343 	return ret;
344 }
345 
346 /**
347  * gfs2_write_cache_jdata - Like write_cache_pages but different
348  * @mapping: The mapping to write
349  * @wbc: The writeback control
350  *
351  * The reason that we use our own function here is that we need to
352  * start transactions before we grab page locks. This allows us
353  * to get the ordering right.
354  */
355 
356 static int gfs2_write_cache_jdata(struct address_space *mapping,
357 				  struct writeback_control *wbc)
358 {
359 	int ret = 0;
360 	int done = 0;
361 	struct pagevec pvec;
362 	int nr_pages;
363 	pgoff_t uninitialized_var(writeback_index);
364 	pgoff_t index;
365 	pgoff_t end;
366 	pgoff_t done_index;
367 	int cycled;
368 	int range_whole = 0;
369 	int tag;
370 
371 	pagevec_init(&pvec);
372 	if (wbc->range_cyclic) {
373 		writeback_index = mapping->writeback_index; /* prev offset */
374 		index = writeback_index;
375 		if (index == 0)
376 			cycled = 1;
377 		else
378 			cycled = 0;
379 		end = -1;
380 	} else {
381 		index = wbc->range_start >> PAGE_SHIFT;
382 		end = wbc->range_end >> PAGE_SHIFT;
383 		if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX)
384 			range_whole = 1;
385 		cycled = 1; /* ignore range_cyclic tests */
386 	}
387 	if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages)
388 		tag = PAGECACHE_TAG_TOWRITE;
389 	else
390 		tag = PAGECACHE_TAG_DIRTY;
391 
392 retry:
393 	if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages)
394 		tag_pages_for_writeback(mapping, index, end);
395 	done_index = index;
396 	while (!done && (index <= end)) {
397 		nr_pages = pagevec_lookup_range_tag(&pvec, mapping, &index, end,
398 				tag);
399 		if (nr_pages == 0)
400 			break;
401 
402 		ret = gfs2_write_jdata_pagevec(mapping, wbc, &pvec, nr_pages, &done_index);
403 		if (ret)
404 			done = 1;
405 		if (ret > 0)
406 			ret = 0;
407 		pagevec_release(&pvec);
408 		cond_resched();
409 	}
410 
411 	if (!cycled && !done) {
412 		/*
413 		 * range_cyclic:
414 		 * We hit the last page and there is more work to be done: wrap
415 		 * back to the start of the file
416 		 */
417 		cycled = 1;
418 		index = 0;
419 		end = writeback_index - 1;
420 		goto retry;
421 	}
422 
423 	if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
424 		mapping->writeback_index = done_index;
425 
426 	return ret;
427 }
428 
429 
430 /**
431  * gfs2_jdata_writepages - Write a bunch of dirty pages back to disk
432  * @mapping: The mapping to write
433  * @wbc: The writeback control
434  *
435  */
436 
437 static int gfs2_jdata_writepages(struct address_space *mapping,
438 				 struct writeback_control *wbc)
439 {
440 	struct gfs2_inode *ip = GFS2_I(mapping->host);
441 	struct gfs2_sbd *sdp = GFS2_SB(mapping->host);
442 	int ret;
443 
444 	ret = gfs2_write_cache_jdata(mapping, wbc);
445 	if (ret == 0 && wbc->sync_mode == WB_SYNC_ALL) {
446 		gfs2_log_flush(sdp, ip->i_gl, GFS2_LOG_HEAD_FLUSH_NORMAL |
447 			       GFS2_LFC_JDATA_WPAGES);
448 		ret = gfs2_write_cache_jdata(mapping, wbc);
449 	}
450 	return ret;
451 }
452 
453 /**
454  * stuffed_readpage - Fill in a Linux page with stuffed file data
455  * @ip: the inode
456  * @page: the page
457  *
458  * Returns: errno
459  */
460 
461 int stuffed_readpage(struct gfs2_inode *ip, struct page *page)
462 {
463 	struct buffer_head *dibh;
464 	u64 dsize = i_size_read(&ip->i_inode);
465 	void *kaddr;
466 	int error;
467 
468 	/*
469 	 * Due to the order of unstuffing files and ->fault(), we can be
470 	 * asked for a zero page in the case of a stuffed file being extended,
471 	 * so we need to supply one here. It doesn't happen often.
472 	 */
473 	if (unlikely(page->index)) {
474 		zero_user(page, 0, PAGE_SIZE);
475 		SetPageUptodate(page);
476 		return 0;
477 	}
478 
479 	error = gfs2_meta_inode_buffer(ip, &dibh);
480 	if (error)
481 		return error;
482 
483 	kaddr = kmap_atomic(page);
484 	if (dsize > gfs2_max_stuffed_size(ip))
485 		dsize = gfs2_max_stuffed_size(ip);
486 	memcpy(kaddr, dibh->b_data + sizeof(struct gfs2_dinode), dsize);
487 	memset(kaddr + dsize, 0, PAGE_SIZE - dsize);
488 	kunmap_atomic(kaddr);
489 	flush_dcache_page(page);
490 	brelse(dibh);
491 	SetPageUptodate(page);
492 
493 	return 0;
494 }
495 
496 
497 /**
498  * __gfs2_readpage - readpage
499  * @file: The file to read a page for
500  * @page: The page to read
501  *
502  * This is the core of gfs2's readpage. It's used by the internal file
503  * reading code as in that case we already hold the glock. Also it's
504  * called by gfs2_readpage() once the required lock has been granted.
505  */
506 
507 static int __gfs2_readpage(void *file, struct page *page)
508 {
509 	struct gfs2_inode *ip = GFS2_I(page->mapping->host);
510 	struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host);
511 	int error;
512 
513 	if (gfs2_is_stuffed(ip)) {
514 		error = stuffed_readpage(ip, page);
515 		unlock_page(page);
516 	} else {
517 		error = mpage_readpage(page, gfs2_block_map);
518 	}
519 
520 	if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)))
521 		return -EIO;
522 
523 	return error;
524 }
525 
526 /**
527  * gfs2_readpage - read a page of a file
528  * @file: The file to read
529  * @page: The page of the file
530  *
531  * This deals with the locking required. We have to unlock and
532  * relock the page in order to get the locking in the right
533  * order.
534  */
535 
536 static int gfs2_readpage(struct file *file, struct page *page)
537 {
538 	struct address_space *mapping = page->mapping;
539 	struct gfs2_inode *ip = GFS2_I(mapping->host);
540 	struct gfs2_holder gh;
541 	int error;
542 
543 	unlock_page(page);
544 	gfs2_holder_init(ip->i_gl, LM_ST_SHARED, 0, &gh);
545 	error = gfs2_glock_nq(&gh);
546 	if (unlikely(error))
547 		goto out;
548 	error = AOP_TRUNCATED_PAGE;
549 	lock_page(page);
550 	if (page->mapping == mapping && !PageUptodate(page))
551 		error = __gfs2_readpage(file, page);
552 	else
553 		unlock_page(page);
554 	gfs2_glock_dq(&gh);
555 out:
556 	gfs2_holder_uninit(&gh);
557 	if (error && error != AOP_TRUNCATED_PAGE)
558 		lock_page(page);
559 	return error;
560 }
561 
562 /**
563  * gfs2_internal_read - read an internal file
564  * @ip: The gfs2 inode
565  * @buf: The buffer to fill
566  * @pos: The file position
567  * @size: The amount to read
568  *
569  */
570 
571 int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
572                        unsigned size)
573 {
574 	struct address_space *mapping = ip->i_inode.i_mapping;
575 	unsigned long index = *pos / PAGE_SIZE;
576 	unsigned offset = *pos & (PAGE_SIZE - 1);
577 	unsigned copied = 0;
578 	unsigned amt;
579 	struct page *page;
580 	void *p;
581 
582 	do {
583 		amt = size - copied;
584 		if (offset + size > PAGE_SIZE)
585 			amt = PAGE_SIZE - offset;
586 		page = read_cache_page(mapping, index, __gfs2_readpage, NULL);
587 		if (IS_ERR(page))
588 			return PTR_ERR(page);
589 		p = kmap_atomic(page);
590 		memcpy(buf + copied, p + offset, amt);
591 		kunmap_atomic(p);
592 		put_page(page);
593 		copied += amt;
594 		index++;
595 		offset = 0;
596 	} while(copied < size);
597 	(*pos) += size;
598 	return size;
599 }
600 
601 /**
602  * gfs2_readpages - Read a bunch of pages at once
603  * @file: The file to read from
604  * @mapping: Address space info
605  * @pages: List of pages to read
606  * @nr_pages: Number of pages to read
607  *
608  * Some notes:
609  * 1. This is only for readahead, so we can simply ignore any things
610  *    which are slightly inconvenient (such as locking conflicts between
611  *    the page lock and the glock) and return having done no I/O. Its
612  *    obviously not something we'd want to do on too regular a basis.
613  *    Any I/O we ignore at this time will be done via readpage later.
614  * 2. We don't handle stuffed files here we let readpage do the honours.
615  * 3. mpage_readpages() does most of the heavy lifting in the common case.
616  * 4. gfs2_block_map() is relied upon to set BH_Boundary in the right places.
617  */
618 
619 static int gfs2_readpages(struct file *file, struct address_space *mapping,
620 			  struct list_head *pages, unsigned nr_pages)
621 {
622 	struct inode *inode = mapping->host;
623 	struct gfs2_inode *ip = GFS2_I(inode);
624 	struct gfs2_sbd *sdp = GFS2_SB(inode);
625 	struct gfs2_holder gh;
626 	int ret;
627 
628 	gfs2_holder_init(ip->i_gl, LM_ST_SHARED, 0, &gh);
629 	ret = gfs2_glock_nq(&gh);
630 	if (unlikely(ret))
631 		goto out_uninit;
632 	if (!gfs2_is_stuffed(ip))
633 		ret = mpage_readpages(mapping, pages, nr_pages, gfs2_block_map);
634 	gfs2_glock_dq(&gh);
635 out_uninit:
636 	gfs2_holder_uninit(&gh);
637 	if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)))
638 		ret = -EIO;
639 	return ret;
640 }
641 
642 /**
643  * gfs2_write_begin - Begin to write to a file
644  * @file: The file to write to
645  * @mapping: The mapping in which to write
646  * @pos: The file offset at which to start writing
647  * @len: Length of the write
648  * @flags: Various flags
649  * @pagep: Pointer to return the page
650  * @fsdata: Pointer to return fs data (unused by GFS2)
651  *
652  * Returns: errno
653  */
654 
655 static int gfs2_write_begin(struct file *file, struct address_space *mapping,
656 			    loff_t pos, unsigned len, unsigned flags,
657 			    struct page **pagep, void **fsdata)
658 {
659 	struct gfs2_inode *ip = GFS2_I(mapping->host);
660 	struct gfs2_sbd *sdp = GFS2_SB(mapping->host);
661 	struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
662 	unsigned int data_blocks = 0, ind_blocks = 0, rblocks;
663 	unsigned requested = 0;
664 	int alloc_required;
665 	int error = 0;
666 	pgoff_t index = pos >> PAGE_SHIFT;
667 	unsigned from = pos & (PAGE_SIZE - 1);
668 	struct page *page;
669 
670 	gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &ip->i_gh);
671 	error = gfs2_glock_nq(&ip->i_gh);
672 	if (unlikely(error))
673 		goto out_uninit;
674 	if (&ip->i_inode == sdp->sd_rindex) {
675 		error = gfs2_glock_nq_init(m_ip->i_gl, LM_ST_EXCLUSIVE,
676 					   GL_NOCACHE, &m_ip->i_gh);
677 		if (unlikely(error)) {
678 			gfs2_glock_dq(&ip->i_gh);
679 			goto out_uninit;
680 		}
681 	}
682 
683 	alloc_required = gfs2_write_alloc_required(ip, pos, len);
684 
685 	if (alloc_required || gfs2_is_jdata(ip))
686 		gfs2_write_calc_reserv(ip, len, &data_blocks, &ind_blocks);
687 
688 	if (alloc_required) {
689 		struct gfs2_alloc_parms ap = { .aflags = 0, };
690 		requested = data_blocks + ind_blocks;
691 		ap.target = requested;
692 		error = gfs2_quota_lock_check(ip, &ap);
693 		if (error)
694 			goto out_unlock;
695 
696 		error = gfs2_inplace_reserve(ip, &ap);
697 		if (error)
698 			goto out_qunlock;
699 	}
700 
701 	rblocks = RES_DINODE + ind_blocks;
702 	if (gfs2_is_jdata(ip))
703 		rblocks += data_blocks ? data_blocks : 1;
704 	if (ind_blocks || data_blocks)
705 		rblocks += RES_STATFS + RES_QUOTA;
706 	if (&ip->i_inode == sdp->sd_rindex)
707 		rblocks += 2 * RES_STATFS;
708 	if (alloc_required)
709 		rblocks += gfs2_rg_blocks(ip, requested);
710 
711 	error = gfs2_trans_begin(sdp, rblocks,
712 				 PAGE_SIZE/sdp->sd_sb.sb_bsize);
713 	if (error)
714 		goto out_trans_fail;
715 
716 	error = -ENOMEM;
717 	flags |= AOP_FLAG_NOFS;
718 	page = grab_cache_page_write_begin(mapping, index, flags);
719 	*pagep = page;
720 	if (unlikely(!page))
721 		goto out_endtrans;
722 
723 	if (gfs2_is_stuffed(ip)) {
724 		error = 0;
725 		if (pos + len > gfs2_max_stuffed_size(ip)) {
726 			error = gfs2_unstuff_dinode(ip, page);
727 			if (error == 0)
728 				goto prepare_write;
729 		} else if (!PageUptodate(page)) {
730 			error = stuffed_readpage(ip, page);
731 		}
732 		goto out;
733 	}
734 
735 prepare_write:
736 	error = __block_write_begin(page, from, len, gfs2_block_map);
737 out:
738 	if (error == 0)
739 		return 0;
740 
741 	unlock_page(page);
742 	put_page(page);
743 
744 	gfs2_trans_end(sdp);
745 	if (alloc_required) {
746 		gfs2_inplace_release(ip);
747 		if (pos + len > ip->i_inode.i_size)
748 			gfs2_trim_blocks(&ip->i_inode);
749 	}
750 	goto out_qunlock;
751 
752 out_endtrans:
753 	gfs2_trans_end(sdp);
754 out_trans_fail:
755 	if (alloc_required)
756 		gfs2_inplace_release(ip);
757 out_qunlock:
758 	if (alloc_required)
759 		gfs2_quota_unlock(ip);
760 out_unlock:
761 	if (&ip->i_inode == sdp->sd_rindex) {
762 		gfs2_glock_dq(&m_ip->i_gh);
763 		gfs2_holder_uninit(&m_ip->i_gh);
764 	}
765 	gfs2_glock_dq(&ip->i_gh);
766 out_uninit:
767 	gfs2_holder_uninit(&ip->i_gh);
768 	return error;
769 }
770 
771 /**
772  * adjust_fs_space - Adjusts the free space available due to gfs2_grow
773  * @inode: the rindex inode
774  */
775 void adjust_fs_space(struct inode *inode)
776 {
777 	struct gfs2_sbd *sdp = inode->i_sb->s_fs_info;
778 	struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
779 	struct gfs2_inode *l_ip = GFS2_I(sdp->sd_sc_inode);
780 	struct gfs2_statfs_change_host *m_sc = &sdp->sd_statfs_master;
781 	struct gfs2_statfs_change_host *l_sc = &sdp->sd_statfs_local;
782 	struct buffer_head *m_bh, *l_bh;
783 	u64 fs_total, new_free;
784 
785 	/* Total up the file system space, according to the latest rindex. */
786 	fs_total = gfs2_ri_total(sdp);
787 	if (gfs2_meta_inode_buffer(m_ip, &m_bh) != 0)
788 		return;
789 
790 	spin_lock(&sdp->sd_statfs_spin);
791 	gfs2_statfs_change_in(m_sc, m_bh->b_data +
792 			      sizeof(struct gfs2_dinode));
793 	if (fs_total > (m_sc->sc_total + l_sc->sc_total))
794 		new_free = fs_total - (m_sc->sc_total + l_sc->sc_total);
795 	else
796 		new_free = 0;
797 	spin_unlock(&sdp->sd_statfs_spin);
798 	fs_warn(sdp, "File system extended by %llu blocks.\n",
799 		(unsigned long long)new_free);
800 	gfs2_statfs_change(sdp, new_free, new_free, 0);
801 
802 	if (gfs2_meta_inode_buffer(l_ip, &l_bh) != 0)
803 		goto out;
804 	update_statfs(sdp, m_bh, l_bh);
805 	brelse(l_bh);
806 out:
807 	brelse(m_bh);
808 }
809 
810 /**
811  * gfs2_stuffed_write_end - Write end for stuffed files
812  * @inode: The inode
813  * @dibh: The buffer_head containing the on-disk inode
814  * @pos: The file position
815  * @copied: How much was actually copied by the VFS
816  * @page: The page
817  *
818  * This copies the data from the page into the inode block after
819  * the inode data structure itself.
820  *
821  * Returns: copied bytes or errno
822  */
823 int gfs2_stuffed_write_end(struct inode *inode, struct buffer_head *dibh,
824 			   loff_t pos, unsigned copied,
825 			   struct page *page)
826 {
827 	struct gfs2_inode *ip = GFS2_I(inode);
828 	u64 to = pos + copied;
829 	void *kaddr;
830 	unsigned char *buf = dibh->b_data + sizeof(struct gfs2_dinode);
831 
832 	BUG_ON(pos + copied > gfs2_max_stuffed_size(ip));
833 
834 	kaddr = kmap_atomic(page);
835 	memcpy(buf + pos, kaddr + pos, copied);
836 	flush_dcache_page(page);
837 	kunmap_atomic(kaddr);
838 
839 	WARN_ON(!PageUptodate(page));
840 	unlock_page(page);
841 	put_page(page);
842 
843 	if (copied) {
844 		if (inode->i_size < to)
845 			i_size_write(inode, to);
846 		mark_inode_dirty(inode);
847 	}
848 	return copied;
849 }
850 
851 /**
852  * gfs2_write_end
853  * @file: The file to write to
854  * @mapping: The address space to write to
855  * @pos: The file position
856  * @len: The length of the data
857  * @copied: How much was actually copied by the VFS
858  * @page: The page that has been written
859  * @fsdata: The fsdata (unused in GFS2)
860  *
861  * The main write_end function for GFS2. We just put our locking around the VFS
862  * provided functions.
863  *
864  * Returns: copied bytes or errno
865  */
866 
867 static int gfs2_write_end(struct file *file, struct address_space *mapping,
868 			  loff_t pos, unsigned len, unsigned copied,
869 			  struct page *page, void *fsdata)
870 {
871 	struct inode *inode = page->mapping->host;
872 	struct gfs2_inode *ip = GFS2_I(inode);
873 	struct gfs2_sbd *sdp = GFS2_SB(inode);
874 	struct gfs2_inode *m_ip = GFS2_I(sdp->sd_statfs_inode);
875 	struct buffer_head *dibh;
876 	int ret;
877 	struct gfs2_trans *tr = current->journal_info;
878 	BUG_ON(!tr);
879 
880 	BUG_ON(gfs2_glock_is_locked_by_me(ip->i_gl) == NULL);
881 
882 	ret = gfs2_meta_inode_buffer(ip, &dibh);
883 	if (unlikely(ret))
884 		goto out;
885 
886 	if (gfs2_is_stuffed(ip)) {
887 		ret = gfs2_stuffed_write_end(inode, dibh, pos, copied, page);
888 		page = NULL;
889 		goto out2;
890 	}
891 
892 	if (gfs2_is_jdata(ip))
893 		gfs2_page_add_databufs(ip, page, pos & ~PAGE_MASK, len);
894 	else
895 		gfs2_ordered_add_inode(ip);
896 
897 	ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
898 	page = NULL;
899 	if (tr->tr_num_buf_new)
900 		__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
901 	else
902 		gfs2_trans_add_meta(ip->i_gl, dibh);
903 
904 out2:
905 	if (inode == sdp->sd_rindex) {
906 		adjust_fs_space(inode);
907 		sdp->sd_rindex_uptodate = 0;
908 	}
909 
910 	brelse(dibh);
911 out:
912 	if (page) {
913 		unlock_page(page);
914 		put_page(page);
915 	}
916 	gfs2_trans_end(sdp);
917 	gfs2_inplace_release(ip);
918 	if (ip->i_qadata && ip->i_qadata->qa_qd_num)
919 		gfs2_quota_unlock(ip);
920 	if (inode == sdp->sd_rindex) {
921 		gfs2_glock_dq(&m_ip->i_gh);
922 		gfs2_holder_uninit(&m_ip->i_gh);
923 	}
924 	gfs2_glock_dq(&ip->i_gh);
925 	gfs2_holder_uninit(&ip->i_gh);
926 	return ret;
927 }
928 
929 /**
930  * jdata_set_page_dirty - Page dirtying function
931  * @page: The page to dirty
932  *
933  * Returns: 1 if it dirtyed the page, or 0 otherwise
934  */
935 
936 static int jdata_set_page_dirty(struct page *page)
937 {
938 	SetPageChecked(page);
939 	return __set_page_dirty_buffers(page);
940 }
941 
942 /**
943  * gfs2_bmap - Block map function
944  * @mapping: Address space info
945  * @lblock: The block to map
946  *
947  * Returns: The disk address for the block or 0 on hole or error
948  */
949 
950 static sector_t gfs2_bmap(struct address_space *mapping, sector_t lblock)
951 {
952 	struct gfs2_inode *ip = GFS2_I(mapping->host);
953 	struct gfs2_holder i_gh;
954 	sector_t dblock = 0;
955 	int error;
956 
957 	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
958 	if (error)
959 		return 0;
960 
961 	if (!gfs2_is_stuffed(ip))
962 		dblock = generic_block_bmap(mapping, lblock, gfs2_block_map);
963 
964 	gfs2_glock_dq_uninit(&i_gh);
965 
966 	return dblock;
967 }
968 
969 static void gfs2_discard(struct gfs2_sbd *sdp, struct buffer_head *bh)
970 {
971 	struct gfs2_bufdata *bd;
972 
973 	lock_buffer(bh);
974 	gfs2_log_lock(sdp);
975 	clear_buffer_dirty(bh);
976 	bd = bh->b_private;
977 	if (bd) {
978 		if (!list_empty(&bd->bd_list) && !buffer_pinned(bh))
979 			list_del_init(&bd->bd_list);
980 		else
981 			gfs2_remove_from_journal(bh, REMOVE_JDATA);
982 	}
983 	bh->b_bdev = NULL;
984 	clear_buffer_mapped(bh);
985 	clear_buffer_req(bh);
986 	clear_buffer_new(bh);
987 	gfs2_log_unlock(sdp);
988 	unlock_buffer(bh);
989 }
990 
991 static void gfs2_invalidatepage(struct page *page, unsigned int offset,
992 				unsigned int length)
993 {
994 	struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host);
995 	unsigned int stop = offset + length;
996 	int partial_page = (offset || length < PAGE_SIZE);
997 	struct buffer_head *bh, *head;
998 	unsigned long pos = 0;
999 
1000 	BUG_ON(!PageLocked(page));
1001 	if (!partial_page)
1002 		ClearPageChecked(page);
1003 	if (!page_has_buffers(page))
1004 		goto out;
1005 
1006 	bh = head = page_buffers(page);
1007 	do {
1008 		if (pos + bh->b_size > stop)
1009 			return;
1010 
1011 		if (offset <= pos)
1012 			gfs2_discard(sdp, bh);
1013 		pos += bh->b_size;
1014 		bh = bh->b_this_page;
1015 	} while (bh != head);
1016 out:
1017 	if (!partial_page)
1018 		try_to_release_page(page, 0);
1019 }
1020 
1021 /**
1022  * gfs2_releasepage - free the metadata associated with a page
1023  * @page: the page that's being released
1024  * @gfp_mask: passed from Linux VFS, ignored by us
1025  *
1026  * Call try_to_free_buffers() if the buffers in this page can be
1027  * released.
1028  *
1029  * Returns: 0
1030  */
1031 
1032 int gfs2_releasepage(struct page *page, gfp_t gfp_mask)
1033 {
1034 	struct address_space *mapping = page->mapping;
1035 	struct gfs2_sbd *sdp = gfs2_mapping2sbd(mapping);
1036 	struct buffer_head *bh, *head;
1037 	struct gfs2_bufdata *bd;
1038 
1039 	if (!page_has_buffers(page))
1040 		return 0;
1041 
1042 	/*
1043 	 * From xfs_vm_releasepage: mm accommodates an old ext3 case where
1044 	 * clean pages might not have had the dirty bit cleared.  Thus, it can
1045 	 * send actual dirty pages to ->releasepage() via shrink_active_list().
1046 	 *
1047 	 * As a workaround, we skip pages that contain dirty buffers below.
1048 	 * Once ->releasepage isn't called on dirty pages anymore, we can warn
1049 	 * on dirty buffers like we used to here again.
1050 	 */
1051 
1052 	gfs2_log_lock(sdp);
1053 	spin_lock(&sdp->sd_ail_lock);
1054 	head = bh = page_buffers(page);
1055 	do {
1056 		if (atomic_read(&bh->b_count))
1057 			goto cannot_release;
1058 		bd = bh->b_private;
1059 		if (bd && bd->bd_tr)
1060 			goto cannot_release;
1061 		if (buffer_dirty(bh) || WARN_ON(buffer_pinned(bh)))
1062 			goto cannot_release;
1063 		bh = bh->b_this_page;
1064 	} while(bh != head);
1065 	spin_unlock(&sdp->sd_ail_lock);
1066 
1067 	head = bh = page_buffers(page);
1068 	do {
1069 		bd = bh->b_private;
1070 		if (bd) {
1071 			gfs2_assert_warn(sdp, bd->bd_bh == bh);
1072 			if (!list_empty(&bd->bd_list))
1073 				list_del_init(&bd->bd_list);
1074 			bd->bd_bh = NULL;
1075 			bh->b_private = NULL;
1076 			kmem_cache_free(gfs2_bufdata_cachep, bd);
1077 		}
1078 
1079 		bh = bh->b_this_page;
1080 	} while (bh != head);
1081 	gfs2_log_unlock(sdp);
1082 
1083 	return try_to_free_buffers(page);
1084 
1085 cannot_release:
1086 	spin_unlock(&sdp->sd_ail_lock);
1087 	gfs2_log_unlock(sdp);
1088 	return 0;
1089 }
1090 
1091 static const struct address_space_operations gfs2_writeback_aops = {
1092 	.writepage = gfs2_writepage,
1093 	.writepages = gfs2_writepages,
1094 	.readpage = gfs2_readpage,
1095 	.readpages = gfs2_readpages,
1096 	.write_begin = gfs2_write_begin,
1097 	.write_end = gfs2_write_end,
1098 	.bmap = gfs2_bmap,
1099 	.invalidatepage = gfs2_invalidatepage,
1100 	.releasepage = gfs2_releasepage,
1101 	.direct_IO = noop_direct_IO,
1102 	.migratepage = buffer_migrate_page,
1103 	.is_partially_uptodate = block_is_partially_uptodate,
1104 	.error_remove_page = generic_error_remove_page,
1105 };
1106 
1107 static const struct address_space_operations gfs2_ordered_aops = {
1108 	.writepage = gfs2_writepage,
1109 	.writepages = gfs2_writepages,
1110 	.readpage = gfs2_readpage,
1111 	.readpages = gfs2_readpages,
1112 	.write_begin = gfs2_write_begin,
1113 	.write_end = gfs2_write_end,
1114 	.set_page_dirty = __set_page_dirty_buffers,
1115 	.bmap = gfs2_bmap,
1116 	.invalidatepage = gfs2_invalidatepage,
1117 	.releasepage = gfs2_releasepage,
1118 	.direct_IO = noop_direct_IO,
1119 	.migratepage = buffer_migrate_page,
1120 	.is_partially_uptodate = block_is_partially_uptodate,
1121 	.error_remove_page = generic_error_remove_page,
1122 };
1123 
1124 static const struct address_space_operations gfs2_jdata_aops = {
1125 	.writepage = gfs2_jdata_writepage,
1126 	.writepages = gfs2_jdata_writepages,
1127 	.readpage = gfs2_readpage,
1128 	.readpages = gfs2_readpages,
1129 	.write_begin = gfs2_write_begin,
1130 	.write_end = gfs2_write_end,
1131 	.set_page_dirty = jdata_set_page_dirty,
1132 	.bmap = gfs2_bmap,
1133 	.invalidatepage = gfs2_invalidatepage,
1134 	.releasepage = gfs2_releasepage,
1135 	.is_partially_uptodate = block_is_partially_uptodate,
1136 	.error_remove_page = generic_error_remove_page,
1137 };
1138 
1139 void gfs2_set_aops(struct inode *inode)
1140 {
1141 	struct gfs2_inode *ip = GFS2_I(inode);
1142 
1143 	if (gfs2_is_writeback(ip))
1144 		inode->i_mapping->a_ops = &gfs2_writeback_aops;
1145 	else if (gfs2_is_ordered(ip))
1146 		inode->i_mapping->a_ops = &gfs2_ordered_aops;
1147 	else if (gfs2_is_jdata(ip))
1148 		inode->i_mapping->a_ops = &gfs2_jdata_aops;
1149 	else
1150 		BUG();
1151 }
1152 
1153