Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm...
[linux-2.6-microblaze.git] / fs / buffer.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *  linux/fs/buffer.c
4  *
5  *  Copyright (C) 1991, 1992, 2002  Linus Torvalds
6  */
7
8 /*
9  * Start bdflush() with kernel_thread not syscall - Paul Gortmaker, 12/95
10  *
11  * Removed a lot of unnecessary code and simplified things now that
12  * the buffer cache isn't our primary cache - Andrew Tridgell 12/96
13  *
14  * Speed up hash, lru, and free list operations.  Use gfp() for allocating
15  * hash table, use SLAB cache for buffer heads. SMP threading.  -DaveM
16  *
17  * Added 32k buffer block sizes - these are required older ARM systems. - RMK
18  *
19  * async buffer flushing, 1999 Andrea Arcangeli <andrea@suse.de>
20  */
21
22 #include <linux/kernel.h>
23 #include <linux/sched/signal.h>
24 #include <linux/syscalls.h>
25 #include <linux/fs.h>
26 #include <linux/iomap.h>
27 #include <linux/mm.h>
28 #include <linux/percpu.h>
29 #include <linux/slab.h>
30 #include <linux/capability.h>
31 #include <linux/blkdev.h>
32 #include <linux/file.h>
33 #include <linux/quotaops.h>
34 #include <linux/highmem.h>
35 #include <linux/export.h>
36 #include <linux/backing-dev.h>
37 #include <linux/writeback.h>
38 #include <linux/hash.h>
39 #include <linux/suspend.h>
40 #include <linux/buffer_head.h>
41 #include <linux/task_io_accounting_ops.h>
42 #include <linux/bio.h>
43 #include <linux/cpu.h>
44 #include <linux/bitops.h>
45 #include <linux/mpage.h>
46 #include <linux/bit_spinlock.h>
47 #include <linux/pagevec.h>
48 #include <linux/sched/mm.h>
49 #include <trace/events/block.h>
50 #include <linux/fscrypt.h>
51
52 static int fsync_buffers_list(spinlock_t *lock, struct list_head *list);
53 static int submit_bh_wbc(int op, int op_flags, struct buffer_head *bh,
54                          enum rw_hint hint, struct writeback_control *wbc);
55
56 #define BH_ENTRY(list) list_entry((list), struct buffer_head, b_assoc_buffers)
57
58 inline void touch_buffer(struct buffer_head *bh)
59 {
60         trace_block_touch_buffer(bh);
61         mark_page_accessed(bh->b_page);
62 }
63 EXPORT_SYMBOL(touch_buffer);
64
65 void __lock_buffer(struct buffer_head *bh)
66 {
67         wait_on_bit_lock_io(&bh->b_state, BH_Lock, TASK_UNINTERRUPTIBLE);
68 }
69 EXPORT_SYMBOL(__lock_buffer);
70
71 void unlock_buffer(struct buffer_head *bh)
72 {
73         clear_bit_unlock(BH_Lock, &bh->b_state);
74         smp_mb__after_atomic();
75         wake_up_bit(&bh->b_state, BH_Lock);
76 }
77 EXPORT_SYMBOL(unlock_buffer);
78
79 /*
80  * Returns if the page has dirty or writeback buffers. If all the buffers
81  * are unlocked and clean then the PageDirty information is stale. If
82  * any of the pages are locked, it is assumed they are locked for IO.
83  */
84 void buffer_check_dirty_writeback(struct page *page,
85                                      bool *dirty, bool *writeback)
86 {
87         struct buffer_head *head, *bh;
88         *dirty = false;
89         *writeback = false;
90
91         BUG_ON(!PageLocked(page));
92
93         if (!page_has_buffers(page))
94                 return;
95
96         if (PageWriteback(page))
97                 *writeback = true;
98
99         head = page_buffers(page);
100         bh = head;
101         do {
102                 if (buffer_locked(bh))
103                         *writeback = true;
104
105                 if (buffer_dirty(bh))
106                         *dirty = true;
107
108                 bh = bh->b_this_page;
109         } while (bh != head);
110 }
111 EXPORT_SYMBOL(buffer_check_dirty_writeback);
112
113 /*
114  * Block until a buffer comes unlocked.  This doesn't stop it
115  * from becoming locked again - you have to lock it yourself
116  * if you want to preserve its state.
117  */
118 void __wait_on_buffer(struct buffer_head * bh)
119 {
120         wait_on_bit_io(&bh->b_state, BH_Lock, TASK_UNINTERRUPTIBLE);
121 }
122 EXPORT_SYMBOL(__wait_on_buffer);
123
124 static void
125 __clear_page_buffers(struct page *page)
126 {
127         ClearPagePrivate(page);
128         set_page_private(page, 0);
129         put_page(page);
130 }
131
132 static void buffer_io_error(struct buffer_head *bh, char *msg)
133 {
134         if (!test_bit(BH_Quiet, &bh->b_state))
135                 printk_ratelimited(KERN_ERR
136                         "Buffer I/O error on dev %pg, logical block %llu%s\n",
137                         bh->b_bdev, (unsigned long long)bh->b_blocknr, msg);
138 }
139
140 /*
141  * End-of-IO handler helper function which does not touch the bh after
142  * unlocking it.
143  * Note: unlock_buffer() sort-of does touch the bh after unlocking it, but
144  * a race there is benign: unlock_buffer() only use the bh's address for
145  * hashing after unlocking the buffer, so it doesn't actually touch the bh
146  * itself.
147  */
148 static void __end_buffer_read_notouch(struct buffer_head *bh, int uptodate)
149 {
150         if (uptodate) {
151                 set_buffer_uptodate(bh);
152         } else {
153                 /* This happens, due to failed read-ahead attempts. */
154                 clear_buffer_uptodate(bh);
155         }
156         unlock_buffer(bh);
157 }
158
159 /*
160  * Default synchronous end-of-IO handler..  Just mark it up-to-date and
161  * unlock the buffer. This is what ll_rw_block uses too.
162  */
163 void end_buffer_read_sync(struct buffer_head *bh, int uptodate)
164 {
165         __end_buffer_read_notouch(bh, uptodate);
166         put_bh(bh);
167 }
168 EXPORT_SYMBOL(end_buffer_read_sync);
169
170 void end_buffer_write_sync(struct buffer_head *bh, int uptodate)
171 {
172         if (uptodate) {
173                 set_buffer_uptodate(bh);
174         } else {
175                 buffer_io_error(bh, ", lost sync page write");
176                 mark_buffer_write_io_error(bh);
177                 clear_buffer_uptodate(bh);
178         }
179         unlock_buffer(bh);
180         put_bh(bh);
181 }
182 EXPORT_SYMBOL(end_buffer_write_sync);
183
184 /*
185  * Various filesystems appear to want __find_get_block to be non-blocking.
186  * But it's the page lock which protects the buffers.  To get around this,
187  * we get exclusion from try_to_free_buffers with the blockdev mapping's
188  * private_lock.
189  *
190  * Hack idea: for the blockdev mapping, private_lock contention
191  * may be quite high.  This code could TryLock the page, and if that
192  * succeeds, there is no need to take private_lock.
193  */
194 static struct buffer_head *
195 __find_get_block_slow(struct block_device *bdev, sector_t block)
196 {
197         struct inode *bd_inode = bdev->bd_inode;
198         struct address_space *bd_mapping = bd_inode->i_mapping;
199         struct buffer_head *ret = NULL;
200         pgoff_t index;
201         struct buffer_head *bh;
202         struct buffer_head *head;
203         struct page *page;
204         int all_mapped = 1;
205         static DEFINE_RATELIMIT_STATE(last_warned, HZ, 1);
206
207         index = block >> (PAGE_SHIFT - bd_inode->i_blkbits);
208         page = find_get_page_flags(bd_mapping, index, FGP_ACCESSED);
209         if (!page)
210                 goto out;
211
212         spin_lock(&bd_mapping->private_lock);
213         if (!page_has_buffers(page))
214                 goto out_unlock;
215         head = page_buffers(page);
216         bh = head;
217         do {
218                 if (!buffer_mapped(bh))
219                         all_mapped = 0;
220                 else if (bh->b_blocknr == block) {
221                         ret = bh;
222                         get_bh(bh);
223                         goto out_unlock;
224                 }
225                 bh = bh->b_this_page;
226         } while (bh != head);
227
228         /* we might be here because some of the buffers on this page are
229          * not mapped.  This is due to various races between
230          * file io on the block device and getblk.  It gets dealt with
231          * elsewhere, don't buffer_error if we had some unmapped buffers
232          */
233         ratelimit_set_flags(&last_warned, RATELIMIT_MSG_ON_RELEASE);
234         if (all_mapped && __ratelimit(&last_warned)) {
235                 printk("__find_get_block_slow() failed. block=%llu, "
236                        "b_blocknr=%llu, b_state=0x%08lx, b_size=%zu, "
237                        "device %pg blocksize: %d\n",
238                        (unsigned long long)block,
239                        (unsigned long long)bh->b_blocknr,
240                        bh->b_state, bh->b_size, bdev,
241                        1 << bd_inode->i_blkbits);
242         }
243 out_unlock:
244         spin_unlock(&bd_mapping->private_lock);
245         put_page(page);
246 out:
247         return ret;
248 }
249
250 static void end_buffer_async_read(struct buffer_head *bh, int uptodate)
251 {
252         unsigned long flags;
253         struct buffer_head *first;
254         struct buffer_head *tmp;
255         struct page *page;
256         int page_uptodate = 1;
257
258         BUG_ON(!buffer_async_read(bh));
259
260         page = bh->b_page;
261         if (uptodate) {
262                 set_buffer_uptodate(bh);
263         } else {
264                 clear_buffer_uptodate(bh);
265                 buffer_io_error(bh, ", async page read");
266                 SetPageError(page);
267         }
268
269         /*
270          * Be _very_ careful from here on. Bad things can happen if
271          * two buffer heads end IO at almost the same time and both
272          * decide that the page is now completely done.
273          */
274         first = page_buffers(page);
275         local_irq_save(flags);
276         bit_spin_lock(BH_Uptodate_Lock, &first->b_state);
277         clear_buffer_async_read(bh);
278         unlock_buffer(bh);
279         tmp = bh;
280         do {
281                 if (!buffer_uptodate(tmp))
282                         page_uptodate = 0;
283                 if (buffer_async_read(tmp)) {
284                         BUG_ON(!buffer_locked(tmp));
285                         goto still_busy;
286                 }
287                 tmp = tmp->b_this_page;
288         } while (tmp != bh);
289         bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
290         local_irq_restore(flags);
291
292         /*
293          * If none of the buffers had errors and they are all
294          * uptodate then we can set the page uptodate.
295          */
296         if (page_uptodate && !PageError(page))
297                 SetPageUptodate(page);
298         unlock_page(page);
299         return;
300
301 still_busy:
302         bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
303         local_irq_restore(flags);
304         return;
305 }
306
307 struct decrypt_bh_ctx {
308         struct work_struct work;
309         struct buffer_head *bh;
310 };
311
312 static void decrypt_bh(struct work_struct *work)
313 {
314         struct decrypt_bh_ctx *ctx =
315                 container_of(work, struct decrypt_bh_ctx, work);
316         struct buffer_head *bh = ctx->bh;
317         int err;
318
319         err = fscrypt_decrypt_pagecache_blocks(bh->b_page, bh->b_size,
320                                                bh_offset(bh));
321         end_buffer_async_read(bh, err == 0);
322         kfree(ctx);
323 }
324
325 /*
326  * I/O completion handler for block_read_full_page() - pages
327  * which come unlocked at the end of I/O.
328  */
329 static void end_buffer_async_read_io(struct buffer_head *bh, int uptodate)
330 {
331         /* Decrypt if needed */
332         if (uptodate && IS_ENABLED(CONFIG_FS_ENCRYPTION) &&
333             IS_ENCRYPTED(bh->b_page->mapping->host) &&
334             S_ISREG(bh->b_page->mapping->host->i_mode)) {
335                 struct decrypt_bh_ctx *ctx = kmalloc(sizeof(*ctx), GFP_ATOMIC);
336
337                 if (ctx) {
338                         INIT_WORK(&ctx->work, decrypt_bh);
339                         ctx->bh = bh;
340                         fscrypt_enqueue_decrypt_work(&ctx->work);
341                         return;
342                 }
343                 uptodate = 0;
344         }
345         end_buffer_async_read(bh, uptodate);
346 }
347
348 /*
349  * Completion handler for block_write_full_page() - pages which are unlocked
350  * during I/O, and which have PageWriteback cleared upon I/O completion.
351  */
352 void end_buffer_async_write(struct buffer_head *bh, int uptodate)
353 {
354         unsigned long flags;
355         struct buffer_head *first;
356         struct buffer_head *tmp;
357         struct page *page;
358
359         BUG_ON(!buffer_async_write(bh));
360
361         page = bh->b_page;
362         if (uptodate) {
363                 set_buffer_uptodate(bh);
364         } else {
365                 buffer_io_error(bh, ", lost async page write");
366                 mark_buffer_write_io_error(bh);
367                 clear_buffer_uptodate(bh);
368                 SetPageError(page);
369         }
370
371         first = page_buffers(page);
372         local_irq_save(flags);
373         bit_spin_lock(BH_Uptodate_Lock, &first->b_state);
374
375         clear_buffer_async_write(bh);
376         unlock_buffer(bh);
377         tmp = bh->b_this_page;
378         while (tmp != bh) {
379                 if (buffer_async_write(tmp)) {
380                         BUG_ON(!buffer_locked(tmp));
381                         goto still_busy;
382                 }
383                 tmp = tmp->b_this_page;
384         }
385         bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
386         local_irq_restore(flags);
387         end_page_writeback(page);
388         return;
389
390 still_busy:
391         bit_spin_unlock(BH_Uptodate_Lock, &first->b_state);
392         local_irq_restore(flags);
393         return;
394 }
395 EXPORT_SYMBOL(end_buffer_async_write);
396
397 /*
398  * If a page's buffers are under async readin (end_buffer_async_read
399  * completion) then there is a possibility that another thread of
400  * control could lock one of the buffers after it has completed
401  * but while some of the other buffers have not completed.  This
402  * locked buffer would confuse end_buffer_async_read() into not unlocking
403  * the page.  So the absence of BH_Async_Read tells end_buffer_async_read()
404  * that this buffer is not under async I/O.
405  *
406  * The page comes unlocked when it has no locked buffer_async buffers
407  * left.
408  *
409  * PageLocked prevents anyone starting new async I/O reads any of
410  * the buffers.
411  *
412  * PageWriteback is used to prevent simultaneous writeout of the same
413  * page.
414  *
415  * PageLocked prevents anyone from starting writeback of a page which is
416  * under read I/O (PageWriteback is only ever set against a locked page).
417  */
418 static void mark_buffer_async_read(struct buffer_head *bh)
419 {
420         bh->b_end_io = end_buffer_async_read_io;
421         set_buffer_async_read(bh);
422 }
423
424 static void mark_buffer_async_write_endio(struct buffer_head *bh,
425                                           bh_end_io_t *handler)
426 {
427         bh->b_end_io = handler;
428         set_buffer_async_write(bh);
429 }
430
431 void mark_buffer_async_write(struct buffer_head *bh)
432 {
433         mark_buffer_async_write_endio(bh, end_buffer_async_write);
434 }
435 EXPORT_SYMBOL(mark_buffer_async_write);
436
437
438 /*
439  * fs/buffer.c contains helper functions for buffer-backed address space's
440  * fsync functions.  A common requirement for buffer-based filesystems is
441  * that certain data from the backing blockdev needs to be written out for
442  * a successful fsync().  For example, ext2 indirect blocks need to be
443  * written back and waited upon before fsync() returns.
444  *
445  * The functions mark_buffer_inode_dirty(), fsync_inode_buffers(),
446  * inode_has_buffers() and invalidate_inode_buffers() are provided for the
447  * management of a list of dependent buffers at ->i_mapping->private_list.
448  *
449  * Locking is a little subtle: try_to_free_buffers() will remove buffers
450  * from their controlling inode's queue when they are being freed.  But
451  * try_to_free_buffers() will be operating against the *blockdev* mapping
452  * at the time, not against the S_ISREG file which depends on those buffers.
453  * So the locking for private_list is via the private_lock in the address_space
454  * which backs the buffers.  Which is different from the address_space 
455  * against which the buffers are listed.  So for a particular address_space,
456  * mapping->private_lock does *not* protect mapping->private_list!  In fact,
457  * mapping->private_list will always be protected by the backing blockdev's
458  * ->private_lock.
459  *
460  * Which introduces a requirement: all buffers on an address_space's
461  * ->private_list must be from the same address_space: the blockdev's.
462  *
463  * address_spaces which do not place buffers at ->private_list via these
464  * utility functions are free to use private_lock and private_list for
465  * whatever they want.  The only requirement is that list_empty(private_list)
466  * be true at clear_inode() time.
467  *
468  * FIXME: clear_inode should not call invalidate_inode_buffers().  The
469  * filesystems should do that.  invalidate_inode_buffers() should just go
470  * BUG_ON(!list_empty).
471  *
472  * FIXME: mark_buffer_dirty_inode() is a data-plane operation.  It should
473  * take an address_space, not an inode.  And it should be called
474  * mark_buffer_dirty_fsync() to clearly define why those buffers are being
475  * queued up.
476  *
477  * FIXME: mark_buffer_dirty_inode() doesn't need to add the buffer to the
478  * list if it is already on a list.  Because if the buffer is on a list,
479  * it *must* already be on the right one.  If not, the filesystem is being
480  * silly.  This will save a ton of locking.  But first we have to ensure
481  * that buffers are taken *off* the old inode's list when they are freed
482  * (presumably in truncate).  That requires careful auditing of all
483  * filesystems (do it inside bforget()).  It could also be done by bringing
484  * b_inode back.
485  */
486
487 /*
488  * The buffer's backing address_space's private_lock must be held
489  */
490 static void __remove_assoc_queue(struct buffer_head *bh)
491 {
492         list_del_init(&bh->b_assoc_buffers);
493         WARN_ON(!bh->b_assoc_map);
494         bh->b_assoc_map = NULL;
495 }
496
497 int inode_has_buffers(struct inode *inode)
498 {
499         return !list_empty(&inode->i_data.private_list);
500 }
501
502 /*
503  * osync is designed to support O_SYNC io.  It waits synchronously for
504  * all already-submitted IO to complete, but does not queue any new
505  * writes to the disk.
506  *
507  * To do O_SYNC writes, just queue the buffer writes with ll_rw_block as
508  * you dirty the buffers, and then use osync_inode_buffers to wait for
509  * completion.  Any other dirty buffers which are not yet queued for
510  * write will not be flushed to disk by the osync.
511  */
512 static int osync_buffers_list(spinlock_t *lock, struct list_head *list)
513 {
514         struct buffer_head *bh;
515         struct list_head *p;
516         int err = 0;
517
518         spin_lock(lock);
519 repeat:
520         list_for_each_prev(p, list) {
521                 bh = BH_ENTRY(p);
522                 if (buffer_locked(bh)) {
523                         get_bh(bh);
524                         spin_unlock(lock);
525                         wait_on_buffer(bh);
526                         if (!buffer_uptodate(bh))
527                                 err = -EIO;
528                         brelse(bh);
529                         spin_lock(lock);
530                         goto repeat;
531                 }
532         }
533         spin_unlock(lock);
534         return err;
535 }
536
537 void emergency_thaw_bdev(struct super_block *sb)
538 {
539         while (sb->s_bdev && !thaw_bdev(sb->s_bdev, sb))
540                 printk(KERN_WARNING "Emergency Thaw on %pg\n", sb->s_bdev);
541 }
542
543 /**
544  * sync_mapping_buffers - write out & wait upon a mapping's "associated" buffers
545  * @mapping: the mapping which wants those buffers written
546  *
547  * Starts I/O against the buffers at mapping->private_list, and waits upon
548  * that I/O.
549  *
550  * Basically, this is a convenience function for fsync().
551  * @mapping is a file or directory which needs those buffers to be written for
552  * a successful fsync().
553  */
554 int sync_mapping_buffers(struct address_space *mapping)
555 {
556         struct address_space *buffer_mapping = mapping->private_data;
557
558         if (buffer_mapping == NULL || list_empty(&mapping->private_list))
559                 return 0;
560
561         return fsync_buffers_list(&buffer_mapping->private_lock,
562                                         &mapping->private_list);
563 }
564 EXPORT_SYMBOL(sync_mapping_buffers);
565
566 /*
567  * Called when we've recently written block `bblock', and it is known that
568  * `bblock' was for a buffer_boundary() buffer.  This means that the block at
569  * `bblock + 1' is probably a dirty indirect block.  Hunt it down and, if it's
570  * dirty, schedule it for IO.  So that indirects merge nicely with their data.
571  */
572 void write_boundary_block(struct block_device *bdev,
573                         sector_t bblock, unsigned blocksize)
574 {
575         struct buffer_head *bh = __find_get_block(bdev, bblock + 1, blocksize);
576         if (bh) {
577                 if (buffer_dirty(bh))
578                         ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
579                 put_bh(bh);
580         }
581 }
582
583 void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode)
584 {
585         struct address_space *mapping = inode->i_mapping;
586         struct address_space *buffer_mapping = bh->b_page->mapping;
587
588         mark_buffer_dirty(bh);
589         if (!mapping->private_data) {
590                 mapping->private_data = buffer_mapping;
591         } else {
592                 BUG_ON(mapping->private_data != buffer_mapping);
593         }
594         if (!bh->b_assoc_map) {
595                 spin_lock(&buffer_mapping->private_lock);
596                 list_move_tail(&bh->b_assoc_buffers,
597                                 &mapping->private_list);
598                 bh->b_assoc_map = mapping;
599                 spin_unlock(&buffer_mapping->private_lock);
600         }
601 }
602 EXPORT_SYMBOL(mark_buffer_dirty_inode);
603
604 /*
605  * Mark the page dirty, and set it dirty in the page cache, and mark the inode
606  * dirty.
607  *
608  * If warn is true, then emit a warning if the page is not uptodate and has
609  * not been truncated.
610  *
611  * The caller must hold lock_page_memcg().
612  */
613 void __set_page_dirty(struct page *page, struct address_space *mapping,
614                              int warn)
615 {
616         unsigned long flags;
617
618         xa_lock_irqsave(&mapping->i_pages, flags);
619         if (page->mapping) {    /* Race with truncate? */
620                 WARN_ON_ONCE(warn && !PageUptodate(page));
621                 account_page_dirtied(page, mapping);
622                 __xa_set_mark(&mapping->i_pages, page_index(page),
623                                 PAGECACHE_TAG_DIRTY);
624         }
625         xa_unlock_irqrestore(&mapping->i_pages, flags);
626 }
627 EXPORT_SYMBOL_GPL(__set_page_dirty);
628
629 /*
630  * Add a page to the dirty page list.
631  *
632  * It is a sad fact of life that this function is called from several places
633  * deeply under spinlocking.  It may not sleep.
634  *
635  * If the page has buffers, the uptodate buffers are set dirty, to preserve
636  * dirty-state coherency between the page and the buffers.  It the page does
637  * not have buffers then when they are later attached they will all be set
638  * dirty.
639  *
640  * The buffers are dirtied before the page is dirtied.  There's a small race
641  * window in which a writepage caller may see the page cleanness but not the
642  * buffer dirtiness.  That's fine.  If this code were to set the page dirty
643  * before the buffers, a concurrent writepage caller could clear the page dirty
644  * bit, see a bunch of clean buffers and we'd end up with dirty buffers/clean
645  * page on the dirty page list.
646  *
647  * We use private_lock to lock against try_to_free_buffers while using the
648  * page's buffer list.  Also use this to protect against clean buffers being
649  * added to the page after it was set dirty.
650  *
651  * FIXME: may need to call ->reservepage here as well.  That's rather up to the
652  * address_space though.
653  */
654 int __set_page_dirty_buffers(struct page *page)
655 {
656         int newly_dirty;
657         struct address_space *mapping = page_mapping(page);
658
659         if (unlikely(!mapping))
660                 return !TestSetPageDirty(page);
661
662         spin_lock(&mapping->private_lock);
663         if (page_has_buffers(page)) {
664                 struct buffer_head *head = page_buffers(page);
665                 struct buffer_head *bh = head;
666
667                 do {
668                         set_buffer_dirty(bh);
669                         bh = bh->b_this_page;
670                 } while (bh != head);
671         }
672         /*
673          * Lock out page->mem_cgroup migration to keep PageDirty
674          * synchronized with per-memcg dirty page counters.
675          */
676         lock_page_memcg(page);
677         newly_dirty = !TestSetPageDirty(page);
678         spin_unlock(&mapping->private_lock);
679
680         if (newly_dirty)
681                 __set_page_dirty(page, mapping, 1);
682
683         unlock_page_memcg(page);
684
685         if (newly_dirty)
686                 __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
687
688         return newly_dirty;
689 }
690 EXPORT_SYMBOL(__set_page_dirty_buffers);
691
692 /*
693  * Write out and wait upon a list of buffers.
694  *
695  * We have conflicting pressures: we want to make sure that all
696  * initially dirty buffers get waited on, but that any subsequently
697  * dirtied buffers don't.  After all, we don't want fsync to last
698  * forever if somebody is actively writing to the file.
699  *
700  * Do this in two main stages: first we copy dirty buffers to a
701  * temporary inode list, queueing the writes as we go.  Then we clean
702  * up, waiting for those writes to complete.
703  * 
704  * During this second stage, any subsequent updates to the file may end
705  * up refiling the buffer on the original inode's dirty list again, so
706  * there is a chance we will end up with a buffer queued for write but
707  * not yet completed on that list.  So, as a final cleanup we go through
708  * the osync code to catch these locked, dirty buffers without requeuing
709  * any newly dirty buffers for write.
710  */
711 static int fsync_buffers_list(spinlock_t *lock, struct list_head *list)
712 {
713         struct buffer_head *bh;
714         struct list_head tmp;
715         struct address_space *mapping;
716         int err = 0, err2;
717         struct blk_plug plug;
718
719         INIT_LIST_HEAD(&tmp);
720         blk_start_plug(&plug);
721
722         spin_lock(lock);
723         while (!list_empty(list)) {
724                 bh = BH_ENTRY(list->next);
725                 mapping = bh->b_assoc_map;
726                 __remove_assoc_queue(bh);
727                 /* Avoid race with mark_buffer_dirty_inode() which does
728                  * a lockless check and we rely on seeing the dirty bit */
729                 smp_mb();
730                 if (buffer_dirty(bh) || buffer_locked(bh)) {
731                         list_add(&bh->b_assoc_buffers, &tmp);
732                         bh->b_assoc_map = mapping;
733                         if (buffer_dirty(bh)) {
734                                 get_bh(bh);
735                                 spin_unlock(lock);
736                                 /*
737                                  * Ensure any pending I/O completes so that
738                                  * write_dirty_buffer() actually writes the
739                                  * current contents - it is a noop if I/O is
740                                  * still in flight on potentially older
741                                  * contents.
742                                  */
743                                 write_dirty_buffer(bh, REQ_SYNC);
744
745                                 /*
746                                  * Kick off IO for the previous mapping. Note
747                                  * that we will not run the very last mapping,
748                                  * wait_on_buffer() will do that for us
749                                  * through sync_buffer().
750                                  */
751                                 brelse(bh);
752                                 spin_lock(lock);
753                         }
754                 }
755         }
756
757         spin_unlock(lock);
758         blk_finish_plug(&plug);
759         spin_lock(lock);
760
761         while (!list_empty(&tmp)) {
762                 bh = BH_ENTRY(tmp.prev);
763                 get_bh(bh);
764                 mapping = bh->b_assoc_map;
765                 __remove_assoc_queue(bh);
766                 /* Avoid race with mark_buffer_dirty_inode() which does
767                  * a lockless check and we rely on seeing the dirty bit */
768                 smp_mb();
769                 if (buffer_dirty(bh)) {
770                         list_add(&bh->b_assoc_buffers,
771                                  &mapping->private_list);
772                         bh->b_assoc_map = mapping;
773                 }
774                 spin_unlock(lock);
775                 wait_on_buffer(bh);
776                 if (!buffer_uptodate(bh))
777                         err = -EIO;
778                 brelse(bh);
779                 spin_lock(lock);
780         }
781         
782         spin_unlock(lock);
783         err2 = osync_buffers_list(lock, list);
784         if (err)
785                 return err;
786         else
787                 return err2;
788 }
789
790 /*
791  * Invalidate any and all dirty buffers on a given inode.  We are
792  * probably unmounting the fs, but that doesn't mean we have already
793  * done a sync().  Just drop the buffers from the inode list.
794  *
795  * NOTE: we take the inode's blockdev's mapping's private_lock.  Which
796  * assumes that all the buffers are against the blockdev.  Not true
797  * for reiserfs.
798  */
799 void invalidate_inode_buffers(struct inode *inode)
800 {
801         if (inode_has_buffers(inode)) {
802                 struct address_space *mapping = &inode->i_data;
803                 struct list_head *list = &mapping->private_list;
804                 struct address_space *buffer_mapping = mapping->private_data;
805
806                 spin_lock(&buffer_mapping->private_lock);
807                 while (!list_empty(list))
808                         __remove_assoc_queue(BH_ENTRY(list->next));
809                 spin_unlock(&buffer_mapping->private_lock);
810         }
811 }
812 EXPORT_SYMBOL(invalidate_inode_buffers);
813
814 /*
815  * Remove any clean buffers from the inode's buffer list.  This is called
816  * when we're trying to free the inode itself.  Those buffers can pin it.
817  *
818  * Returns true if all buffers were removed.
819  */
820 int remove_inode_buffers(struct inode *inode)
821 {
822         int ret = 1;
823
824         if (inode_has_buffers(inode)) {
825                 struct address_space *mapping = &inode->i_data;
826                 struct list_head *list = &mapping->private_list;
827                 struct address_space *buffer_mapping = mapping->private_data;
828
829                 spin_lock(&buffer_mapping->private_lock);
830                 while (!list_empty(list)) {
831                         struct buffer_head *bh = BH_ENTRY(list->next);
832                         if (buffer_dirty(bh)) {
833                                 ret = 0;
834                                 break;
835                         }
836                         __remove_assoc_queue(bh);
837                 }
838                 spin_unlock(&buffer_mapping->private_lock);
839         }
840         return ret;
841 }
842
843 /*
844  * Create the appropriate buffers when given a page for data area and
845  * the size of each buffer.. Use the bh->b_this_page linked list to
846  * follow the buffers created.  Return NULL if unable to create more
847  * buffers.
848  *
849  * The retry flag is used to differentiate async IO (paging, swapping)
850  * which may not fail from ordinary buffer allocations.
851  */
852 struct buffer_head *alloc_page_buffers(struct page *page, unsigned long size,
853                 bool retry)
854 {
855         struct buffer_head *bh, *head;
856         gfp_t gfp = GFP_NOFS | __GFP_ACCOUNT;
857         long offset;
858         struct mem_cgroup *memcg;
859
860         if (retry)
861                 gfp |= __GFP_NOFAIL;
862
863         memcg = get_mem_cgroup_from_page(page);
864         memalloc_use_memcg(memcg);
865
866         head = NULL;
867         offset = PAGE_SIZE;
868         while ((offset -= size) >= 0) {
869                 bh = alloc_buffer_head(gfp);
870                 if (!bh)
871                         goto no_grow;
872
873                 bh->b_this_page = head;
874                 bh->b_blocknr = -1;
875                 head = bh;
876
877                 bh->b_size = size;
878
879                 /* Link the buffer to its page */
880                 set_bh_page(bh, page, offset);
881         }
882 out:
883         memalloc_unuse_memcg();
884         mem_cgroup_put(memcg);
885         return head;
886 /*
887  * In case anything failed, we just free everything we got.
888  */
889 no_grow:
890         if (head) {
891                 do {
892                         bh = head;
893                         head = head->b_this_page;
894                         free_buffer_head(bh);
895                 } while (head);
896         }
897
898         goto out;
899 }
900 EXPORT_SYMBOL_GPL(alloc_page_buffers);
901
902 static inline void
903 link_dev_buffers(struct page *page, struct buffer_head *head)
904 {
905         struct buffer_head *bh, *tail;
906
907         bh = head;
908         do {
909                 tail = bh;
910                 bh = bh->b_this_page;
911         } while (bh);
912         tail->b_this_page = head;
913         attach_page_buffers(page, head);
914 }
915
916 static sector_t blkdev_max_block(struct block_device *bdev, unsigned int size)
917 {
918         sector_t retval = ~((sector_t)0);
919         loff_t sz = i_size_read(bdev->bd_inode);
920
921         if (sz) {
922                 unsigned int sizebits = blksize_bits(size);
923                 retval = (sz >> sizebits);
924         }
925         return retval;
926 }
927
928 /*
929  * Initialise the state of a blockdev page's buffers.
930  */ 
931 static sector_t
932 init_page_buffers(struct page *page, struct block_device *bdev,
933                         sector_t block, int size)
934 {
935         struct buffer_head *head = page_buffers(page);
936         struct buffer_head *bh = head;
937         int uptodate = PageUptodate(page);
938         sector_t end_block = blkdev_max_block(I_BDEV(bdev->bd_inode), size);
939
940         do {
941                 if (!buffer_mapped(bh)) {
942                         bh->b_end_io = NULL;
943                         bh->b_private = NULL;
944                         bh->b_bdev = bdev;
945                         bh->b_blocknr = block;
946                         if (uptodate)
947                                 set_buffer_uptodate(bh);
948                         if (block < end_block)
949                                 set_buffer_mapped(bh);
950                 }
951                 block++;
952                 bh = bh->b_this_page;
953         } while (bh != head);
954
955         /*
956          * Caller needs to validate requested block against end of device.
957          */
958         return end_block;
959 }
960
961 /*
962  * Create the page-cache page that contains the requested block.
963  *
964  * This is used purely for blockdev mappings.
965  */
966 static int
967 grow_dev_page(struct block_device *bdev, sector_t block,
968               pgoff_t index, int size, int sizebits, gfp_t gfp)
969 {
970         struct inode *inode = bdev->bd_inode;
971         struct page *page;
972         struct buffer_head *bh;
973         sector_t end_block;
974         int ret = 0;            /* Will call free_more_memory() */
975         gfp_t gfp_mask;
976
977         gfp_mask = mapping_gfp_constraint(inode->i_mapping, ~__GFP_FS) | gfp;
978
979         /*
980          * XXX: __getblk_slow() can not really deal with failure and
981          * will endlessly loop on improvised global reclaim.  Prefer
982          * looping in the allocator rather than here, at least that
983          * code knows what it's doing.
984          */
985         gfp_mask |= __GFP_NOFAIL;
986
987         page = find_or_create_page(inode->i_mapping, index, gfp_mask);
988
989         BUG_ON(!PageLocked(page));
990
991         if (page_has_buffers(page)) {
992                 bh = page_buffers(page);
993                 if (bh->b_size == size) {
994                         end_block = init_page_buffers(page, bdev,
995                                                 (sector_t)index << sizebits,
996                                                 size);
997                         goto done;
998                 }
999                 if (!try_to_free_buffers(page))
1000                         goto failed;
1001         }
1002
1003         /*
1004          * Allocate some buffers for this page
1005          */
1006         bh = alloc_page_buffers(page, size, true);
1007
1008         /*
1009          * Link the page to the buffers and initialise them.  Take the
1010          * lock to be atomic wrt __find_get_block(), which does not
1011          * run under the page lock.
1012          */
1013         spin_lock(&inode->i_mapping->private_lock);
1014         link_dev_buffers(page, bh);
1015         end_block = init_page_buffers(page, bdev, (sector_t)index << sizebits,
1016                         size);
1017         spin_unlock(&inode->i_mapping->private_lock);
1018 done:
1019         ret = (block < end_block) ? 1 : -ENXIO;
1020 failed:
1021         unlock_page(page);
1022         put_page(page);
1023         return ret;
1024 }
1025
1026 /*
1027  * Create buffers for the specified block device block's page.  If
1028  * that page was dirty, the buffers are set dirty also.
1029  */
1030 static int
1031 grow_buffers(struct block_device *bdev, sector_t block, int size, gfp_t gfp)
1032 {
1033         pgoff_t index;
1034         int sizebits;
1035
1036         sizebits = -1;
1037         do {
1038                 sizebits++;
1039         } while ((size << sizebits) < PAGE_SIZE);
1040
1041         index = block >> sizebits;
1042
1043         /*
1044          * Check for a block which wants to lie outside our maximum possible
1045          * pagecache index.  (this comparison is done using sector_t types).
1046          */
1047         if (unlikely(index != block >> sizebits)) {
1048                 printk(KERN_ERR "%s: requested out-of-range block %llu for "
1049                         "device %pg\n",
1050                         __func__, (unsigned long long)block,
1051                         bdev);
1052                 return -EIO;
1053         }
1054
1055         /* Create a page with the proper size buffers.. */
1056         return grow_dev_page(bdev, block, index, size, sizebits, gfp);
1057 }
1058
1059 static struct buffer_head *
1060 __getblk_slow(struct block_device *bdev, sector_t block,
1061              unsigned size, gfp_t gfp)
1062 {
1063         /* Size must be multiple of hard sectorsize */
1064         if (unlikely(size & (bdev_logical_block_size(bdev)-1) ||
1065                         (size < 512 || size > PAGE_SIZE))) {
1066                 printk(KERN_ERR "getblk(): invalid block size %d requested\n",
1067                                         size);
1068                 printk(KERN_ERR "logical block size: %d\n",
1069                                         bdev_logical_block_size(bdev));
1070
1071                 dump_stack();
1072                 return NULL;
1073         }
1074
1075         for (;;) {
1076                 struct buffer_head *bh;
1077                 int ret;
1078
1079                 bh = __find_get_block(bdev, block, size);
1080                 if (bh)
1081                         return bh;
1082
1083                 ret = grow_buffers(bdev, block, size, gfp);
1084                 if (ret < 0)
1085                         return NULL;
1086         }
1087 }
1088
1089 /*
1090  * The relationship between dirty buffers and dirty pages:
1091  *
1092  * Whenever a page has any dirty buffers, the page's dirty bit is set, and
1093  * the page is tagged dirty in the page cache.
1094  *
1095  * At all times, the dirtiness of the buffers represents the dirtiness of
1096  * subsections of the page.  If the page has buffers, the page dirty bit is
1097  * merely a hint about the true dirty state.
1098  *
1099  * When a page is set dirty in its entirety, all its buffers are marked dirty
1100  * (if the page has buffers).
1101  *
1102  * When a buffer is marked dirty, its page is dirtied, but the page's other
1103  * buffers are not.
1104  *
1105  * Also.  When blockdev buffers are explicitly read with bread(), they
1106  * individually become uptodate.  But their backing page remains not
1107  * uptodate - even if all of its buffers are uptodate.  A subsequent
1108  * block_read_full_page() against that page will discover all the uptodate
1109  * buffers, will set the page uptodate and will perform no I/O.
1110  */
1111
1112 /**
1113  * mark_buffer_dirty - mark a buffer_head as needing writeout
1114  * @bh: the buffer_head to mark dirty
1115  *
1116  * mark_buffer_dirty() will set the dirty bit against the buffer, then set
1117  * its backing page dirty, then tag the page as dirty in the page cache
1118  * and then attach the address_space's inode to its superblock's dirty
1119  * inode list.
1120  *
1121  * mark_buffer_dirty() is atomic.  It takes bh->b_page->mapping->private_lock,
1122  * i_pages lock and mapping->host->i_lock.
1123  */
1124 void mark_buffer_dirty(struct buffer_head *bh)
1125 {
1126         WARN_ON_ONCE(!buffer_uptodate(bh));
1127
1128         trace_block_dirty_buffer(bh);
1129
1130         /*
1131          * Very *carefully* optimize the it-is-already-dirty case.
1132          *
1133          * Don't let the final "is it dirty" escape to before we
1134          * perhaps modified the buffer.
1135          */
1136         if (buffer_dirty(bh)) {
1137                 smp_mb();
1138                 if (buffer_dirty(bh))
1139                         return;
1140         }
1141
1142         if (!test_set_buffer_dirty(bh)) {
1143                 struct page *page = bh->b_page;
1144                 struct address_space *mapping = NULL;
1145
1146                 lock_page_memcg(page);
1147                 if (!TestSetPageDirty(page)) {
1148                         mapping = page_mapping(page);
1149                         if (mapping)
1150                                 __set_page_dirty(page, mapping, 0);
1151                 }
1152                 unlock_page_memcg(page);
1153                 if (mapping)
1154                         __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
1155         }
1156 }
1157 EXPORT_SYMBOL(mark_buffer_dirty);
1158
1159 void mark_buffer_write_io_error(struct buffer_head *bh)
1160 {
1161         set_buffer_write_io_error(bh);
1162         /* FIXME: do we need to set this in both places? */
1163         if (bh->b_page && bh->b_page->mapping)
1164                 mapping_set_error(bh->b_page->mapping, -EIO);
1165         if (bh->b_assoc_map)
1166                 mapping_set_error(bh->b_assoc_map, -EIO);
1167 }
1168 EXPORT_SYMBOL(mark_buffer_write_io_error);
1169
1170 /*
1171  * Decrement a buffer_head's reference count.  If all buffers against a page
1172  * have zero reference count, are clean and unlocked, and if the page is clean
1173  * and unlocked then try_to_free_buffers() may strip the buffers from the page
1174  * in preparation for freeing it (sometimes, rarely, buffers are removed from
1175  * a page but it ends up not being freed, and buffers may later be reattached).
1176  */
1177 void __brelse(struct buffer_head * buf)
1178 {
1179         if (atomic_read(&buf->b_count)) {
1180                 put_bh(buf);
1181                 return;
1182         }
1183         WARN(1, KERN_ERR "VFS: brelse: Trying to free free buffer\n");
1184 }
1185 EXPORT_SYMBOL(__brelse);
1186
1187 /*
1188  * bforget() is like brelse(), except it discards any
1189  * potentially dirty data.
1190  */
1191 void __bforget(struct buffer_head *bh)
1192 {
1193         clear_buffer_dirty(bh);
1194         if (bh->b_assoc_map) {
1195                 struct address_space *buffer_mapping = bh->b_page->mapping;
1196
1197                 spin_lock(&buffer_mapping->private_lock);
1198                 list_del_init(&bh->b_assoc_buffers);
1199                 bh->b_assoc_map = NULL;
1200                 spin_unlock(&buffer_mapping->private_lock);
1201         }
1202         __brelse(bh);
1203 }
1204 EXPORT_SYMBOL(__bforget);
1205
1206 static struct buffer_head *__bread_slow(struct buffer_head *bh)
1207 {
1208         lock_buffer(bh);
1209         if (buffer_uptodate(bh)) {
1210                 unlock_buffer(bh);
1211                 return bh;
1212         } else {
1213                 get_bh(bh);
1214                 bh->b_end_io = end_buffer_read_sync;
1215                 submit_bh(REQ_OP_READ, 0, bh);
1216                 wait_on_buffer(bh);
1217                 if (buffer_uptodate(bh))
1218                         return bh;
1219         }
1220         brelse(bh);
1221         return NULL;
1222 }
1223
1224 /*
1225  * Per-cpu buffer LRU implementation.  To reduce the cost of __find_get_block().
1226  * The bhs[] array is sorted - newest buffer is at bhs[0].  Buffers have their
1227  * refcount elevated by one when they're in an LRU.  A buffer can only appear
1228  * once in a particular CPU's LRU.  A single buffer can be present in multiple
1229  * CPU's LRUs at the same time.
1230  *
1231  * This is a transparent caching front-end to sb_bread(), sb_getblk() and
1232  * sb_find_get_block().
1233  *
1234  * The LRUs themselves only need locking against invalidate_bh_lrus.  We use
1235  * a local interrupt disable for that.
1236  */
1237
1238 #define BH_LRU_SIZE     16
1239
1240 struct bh_lru {
1241         struct buffer_head *bhs[BH_LRU_SIZE];
1242 };
1243
1244 static DEFINE_PER_CPU(struct bh_lru, bh_lrus) = {{ NULL }};
1245
1246 #ifdef CONFIG_SMP
1247 #define bh_lru_lock()   local_irq_disable()
1248 #define bh_lru_unlock() local_irq_enable()
1249 #else
1250 #define bh_lru_lock()   preempt_disable()
1251 #define bh_lru_unlock() preempt_enable()
1252 #endif
1253
1254 static inline void check_irqs_on(void)
1255 {
1256 #ifdef irqs_disabled
1257         BUG_ON(irqs_disabled());
1258 #endif
1259 }
1260
1261 /*
1262  * Install a buffer_head into this cpu's LRU.  If not already in the LRU, it is
1263  * inserted at the front, and the buffer_head at the back if any is evicted.
1264  * Or, if already in the LRU it is moved to the front.
1265  */
1266 static void bh_lru_install(struct buffer_head *bh)
1267 {
1268         struct buffer_head *evictee = bh;
1269         struct bh_lru *b;
1270         int i;
1271
1272         check_irqs_on();
1273         bh_lru_lock();
1274
1275         b = this_cpu_ptr(&bh_lrus);
1276         for (i = 0; i < BH_LRU_SIZE; i++) {
1277                 swap(evictee, b->bhs[i]);
1278                 if (evictee == bh) {
1279                         bh_lru_unlock();
1280                         return;
1281                 }
1282         }
1283
1284         get_bh(bh);
1285         bh_lru_unlock();
1286         brelse(evictee);
1287 }
1288
1289 /*
1290  * Look up the bh in this cpu's LRU.  If it's there, move it to the head.
1291  */
1292 static struct buffer_head *
1293 lookup_bh_lru(struct block_device *bdev, sector_t block, unsigned size)
1294 {
1295         struct buffer_head *ret = NULL;
1296         unsigned int i;
1297
1298         check_irqs_on();
1299         bh_lru_lock();
1300         for (i = 0; i < BH_LRU_SIZE; i++) {
1301                 struct buffer_head *bh = __this_cpu_read(bh_lrus.bhs[i]);
1302
1303                 if (bh && bh->b_blocknr == block && bh->b_bdev == bdev &&
1304                     bh->b_size == size) {
1305                         if (i) {
1306                                 while (i) {
1307                                         __this_cpu_write(bh_lrus.bhs[i],
1308                                                 __this_cpu_read(bh_lrus.bhs[i - 1]));
1309                                         i--;
1310                                 }
1311                                 __this_cpu_write(bh_lrus.bhs[0], bh);
1312                         }
1313                         get_bh(bh);
1314                         ret = bh;
1315                         break;
1316                 }
1317         }
1318         bh_lru_unlock();
1319         return ret;
1320 }
1321
1322 /*
1323  * Perform a pagecache lookup for the matching buffer.  If it's there, refresh
1324  * it in the LRU and mark it as accessed.  If it is not present then return
1325  * NULL
1326  */
1327 struct buffer_head *
1328 __find_get_block(struct block_device *bdev, sector_t block, unsigned size)
1329 {
1330         struct buffer_head *bh = lookup_bh_lru(bdev, block, size);
1331
1332         if (bh == NULL) {
1333                 /* __find_get_block_slow will mark the page accessed */
1334                 bh = __find_get_block_slow(bdev, block);
1335                 if (bh)
1336                         bh_lru_install(bh);
1337         } else
1338                 touch_buffer(bh);
1339
1340         return bh;
1341 }
1342 EXPORT_SYMBOL(__find_get_block);
1343
1344 /*
1345  * __getblk_gfp() will locate (and, if necessary, create) the buffer_head
1346  * which corresponds to the passed block_device, block and size. The
1347  * returned buffer has its reference count incremented.
1348  *
1349  * __getblk_gfp() will lock up the machine if grow_dev_page's
1350  * try_to_free_buffers() attempt is failing.  FIXME, perhaps?
1351  */
1352 struct buffer_head *
1353 __getblk_gfp(struct block_device *bdev, sector_t block,
1354              unsigned size, gfp_t gfp)
1355 {
1356         struct buffer_head *bh = __find_get_block(bdev, block, size);
1357
1358         might_sleep();
1359         if (bh == NULL)
1360                 bh = __getblk_slow(bdev, block, size, gfp);
1361         return bh;
1362 }
1363 EXPORT_SYMBOL(__getblk_gfp);
1364
1365 /*
1366  * Do async read-ahead on a buffer..
1367  */
1368 void __breadahead(struct block_device *bdev, sector_t block, unsigned size)
1369 {
1370         struct buffer_head *bh = __getblk(bdev, block, size);
1371         if (likely(bh)) {
1372                 ll_rw_block(REQ_OP_READ, REQ_RAHEAD, 1, &bh);
1373                 brelse(bh);
1374         }
1375 }
1376 EXPORT_SYMBOL(__breadahead);
1377
1378 /**
1379  *  __bread_gfp() - reads a specified block and returns the bh
1380  *  @bdev: the block_device to read from
1381  *  @block: number of block
1382  *  @size: size (in bytes) to read
1383  *  @gfp: page allocation flag
1384  *
1385  *  Reads a specified block, and returns buffer head that contains it.
1386  *  The page cache can be allocated from non-movable area
1387  *  not to prevent page migration if you set gfp to zero.
1388  *  It returns NULL if the block was unreadable.
1389  */
1390 struct buffer_head *
1391 __bread_gfp(struct block_device *bdev, sector_t block,
1392                    unsigned size, gfp_t gfp)
1393 {
1394         struct buffer_head *bh = __getblk_gfp(bdev, block, size, gfp);
1395
1396         if (likely(bh) && !buffer_uptodate(bh))
1397                 bh = __bread_slow(bh);
1398         return bh;
1399 }
1400 EXPORT_SYMBOL(__bread_gfp);
1401
1402 /*
1403  * invalidate_bh_lrus() is called rarely - but not only at unmount.
1404  * This doesn't race because it runs in each cpu either in irq
1405  * or with preempt disabled.
1406  */
1407 static void invalidate_bh_lru(void *arg)
1408 {
1409         struct bh_lru *b = &get_cpu_var(bh_lrus);
1410         int i;
1411
1412         for (i = 0; i < BH_LRU_SIZE; i++) {
1413                 brelse(b->bhs[i]);
1414                 b->bhs[i] = NULL;
1415         }
1416         put_cpu_var(bh_lrus);
1417 }
1418
1419 static bool has_bh_in_lru(int cpu, void *dummy)
1420 {
1421         struct bh_lru *b = per_cpu_ptr(&bh_lrus, cpu);
1422         int i;
1423         
1424         for (i = 0; i < BH_LRU_SIZE; i++) {
1425                 if (b->bhs[i])
1426                         return 1;
1427         }
1428
1429         return 0;
1430 }
1431
1432 void invalidate_bh_lrus(void)
1433 {
1434         on_each_cpu_cond(has_bh_in_lru, invalidate_bh_lru, NULL, 1, GFP_KERNEL);
1435 }
1436 EXPORT_SYMBOL_GPL(invalidate_bh_lrus);
1437
1438 void set_bh_page(struct buffer_head *bh,
1439                 struct page *page, unsigned long offset)
1440 {
1441         bh->b_page = page;
1442         BUG_ON(offset >= PAGE_SIZE);
1443         if (PageHighMem(page))
1444                 /*
1445                  * This catches illegal uses and preserves the offset:
1446                  */
1447                 bh->b_data = (char *)(0 + offset);
1448         else
1449                 bh->b_data = page_address(page) + offset;
1450 }
1451 EXPORT_SYMBOL(set_bh_page);
1452
1453 /*
1454  * Called when truncating a buffer on a page completely.
1455  */
1456
1457 /* Bits that are cleared during an invalidate */
1458 #define BUFFER_FLAGS_DISCARD \
1459         (1 << BH_Mapped | 1 << BH_New | 1 << BH_Req | \
1460          1 << BH_Delay | 1 << BH_Unwritten)
1461
1462 static void discard_buffer(struct buffer_head * bh)
1463 {
1464         unsigned long b_state, b_state_old;
1465
1466         lock_buffer(bh);
1467         clear_buffer_dirty(bh);
1468         bh->b_bdev = NULL;
1469         b_state = bh->b_state;
1470         for (;;) {
1471                 b_state_old = cmpxchg(&bh->b_state, b_state,
1472                                       (b_state & ~BUFFER_FLAGS_DISCARD));
1473                 if (b_state_old == b_state)
1474                         break;
1475                 b_state = b_state_old;
1476         }
1477         unlock_buffer(bh);
1478 }
1479
1480 /**
1481  * block_invalidatepage - invalidate part or all of a buffer-backed page
1482  *
1483  * @page: the page which is affected
1484  * @offset: start of the range to invalidate
1485  * @length: length of the range to invalidate
1486  *
1487  * block_invalidatepage() is called when all or part of the page has become
1488  * invalidated by a truncate operation.
1489  *
1490  * block_invalidatepage() does not have to release all buffers, but it must
1491  * ensure that no dirty buffer is left outside @offset and that no I/O
1492  * is underway against any of the blocks which are outside the truncation
1493  * point.  Because the caller is about to free (and possibly reuse) those
1494  * blocks on-disk.
1495  */
1496 void block_invalidatepage(struct page *page, unsigned int offset,
1497                           unsigned int length)
1498 {
1499         struct buffer_head *head, *bh, *next;
1500         unsigned int curr_off = 0;
1501         unsigned int stop = length + offset;
1502
1503         BUG_ON(!PageLocked(page));
1504         if (!page_has_buffers(page))
1505                 goto out;
1506
1507         /*
1508          * Check for overflow
1509          */
1510         BUG_ON(stop > PAGE_SIZE || stop < length);
1511
1512         head = page_buffers(page);
1513         bh = head;
1514         do {
1515                 unsigned int next_off = curr_off + bh->b_size;
1516                 next = bh->b_this_page;
1517
1518                 /*
1519                  * Are we still fully in range ?
1520                  */
1521                 if (next_off > stop)
1522                         goto out;
1523
1524                 /*
1525                  * is this block fully invalidated?
1526                  */
1527                 if (offset <= curr_off)
1528                         discard_buffer(bh);
1529                 curr_off = next_off;
1530                 bh = next;
1531         } while (bh != head);
1532
1533         /*
1534          * We release buffers only if the entire page is being invalidated.
1535          * The get_block cached value has been unconditionally invalidated,
1536          * so real IO is not possible anymore.
1537          */
1538         if (length == PAGE_SIZE)
1539                 try_to_release_page(page, 0);
1540 out:
1541         return;
1542 }
1543 EXPORT_SYMBOL(block_invalidatepage);
1544
1545
1546 /*
1547  * We attach and possibly dirty the buffers atomically wrt
1548  * __set_page_dirty_buffers() via private_lock.  try_to_free_buffers
1549  * is already excluded via the page lock.
1550  */
1551 void create_empty_buffers(struct page *page,
1552                         unsigned long blocksize, unsigned long b_state)
1553 {
1554         struct buffer_head *bh, *head, *tail;
1555
1556         head = alloc_page_buffers(page, blocksize, true);
1557         bh = head;
1558         do {
1559                 bh->b_state |= b_state;
1560                 tail = bh;
1561                 bh = bh->b_this_page;
1562         } while (bh);
1563         tail->b_this_page = head;
1564
1565         spin_lock(&page->mapping->private_lock);
1566         if (PageUptodate(page) || PageDirty(page)) {
1567                 bh = head;
1568                 do {
1569                         if (PageDirty(page))
1570                                 set_buffer_dirty(bh);
1571                         if (PageUptodate(page))
1572                                 set_buffer_uptodate(bh);
1573                         bh = bh->b_this_page;
1574                 } while (bh != head);
1575         }
1576         attach_page_buffers(page, head);
1577         spin_unlock(&page->mapping->private_lock);
1578 }
1579 EXPORT_SYMBOL(create_empty_buffers);
1580
1581 /**
1582  * clean_bdev_aliases: clean a range of buffers in block device
1583  * @bdev: Block device to clean buffers in
1584  * @block: Start of a range of blocks to clean
1585  * @len: Number of blocks to clean
1586  *
1587  * We are taking a range of blocks for data and we don't want writeback of any
1588  * buffer-cache aliases starting from return from this function and until the
1589  * moment when something will explicitly mark the buffer dirty (hopefully that
1590  * will not happen until we will free that block ;-) We don't even need to mark
1591  * it not-uptodate - nobody can expect anything from a newly allocated buffer
1592  * anyway. We used to use unmap_buffer() for such invalidation, but that was
1593  * wrong. We definitely don't want to mark the alias unmapped, for example - it
1594  * would confuse anyone who might pick it with bread() afterwards...
1595  *
1596  * Also..  Note that bforget() doesn't lock the buffer.  So there can be
1597  * writeout I/O going on against recently-freed buffers.  We don't wait on that
1598  * I/O in bforget() - it's more efficient to wait on the I/O only if we really
1599  * need to.  That happens here.
1600  */
1601 void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len)
1602 {
1603         struct inode *bd_inode = bdev->bd_inode;
1604         struct address_space *bd_mapping = bd_inode->i_mapping;
1605         struct pagevec pvec;
1606         pgoff_t index = block >> (PAGE_SHIFT - bd_inode->i_blkbits);
1607         pgoff_t end;
1608         int i, count;
1609         struct buffer_head *bh;
1610         struct buffer_head *head;
1611
1612         end = (block + len - 1) >> (PAGE_SHIFT - bd_inode->i_blkbits);
1613         pagevec_init(&pvec);
1614         while (pagevec_lookup_range(&pvec, bd_mapping, &index, end)) {
1615                 count = pagevec_count(&pvec);
1616                 for (i = 0; i < count; i++) {
1617                         struct page *page = pvec.pages[i];
1618
1619                         if (!page_has_buffers(page))
1620                                 continue;
1621                         /*
1622                          * We use page lock instead of bd_mapping->private_lock
1623                          * to pin buffers here since we can afford to sleep and
1624                          * it scales better than a global spinlock lock.
1625                          */
1626                         lock_page(page);
1627                         /* Recheck when the page is locked which pins bhs */
1628                         if (!page_has_buffers(page))
1629                                 goto unlock_page;
1630                         head = page_buffers(page);
1631                         bh = head;
1632                         do {
1633                                 if (!buffer_mapped(bh) || (bh->b_blocknr < block))
1634                                         goto next;
1635                                 if (bh->b_blocknr >= block + len)
1636                                         break;
1637                                 clear_buffer_dirty(bh);
1638                                 wait_on_buffer(bh);
1639                                 clear_buffer_req(bh);
1640 next:
1641                                 bh = bh->b_this_page;
1642                         } while (bh != head);
1643 unlock_page:
1644                         unlock_page(page);
1645                 }
1646                 pagevec_release(&pvec);
1647                 cond_resched();
1648                 /* End of range already reached? */
1649                 if (index > end || !index)
1650                         break;
1651         }
1652 }
1653 EXPORT_SYMBOL(clean_bdev_aliases);
1654
1655 /*
1656  * Size is a power-of-two in the range 512..PAGE_SIZE,
1657  * and the case we care about most is PAGE_SIZE.
1658  *
1659  * So this *could* possibly be written with those
1660  * constraints in mind (relevant mostly if some
1661  * architecture has a slow bit-scan instruction)
1662  */
1663 static inline int block_size_bits(unsigned int blocksize)
1664 {
1665         return ilog2(blocksize);
1666 }
1667
1668 static struct buffer_head *create_page_buffers(struct page *page, struct inode *inode, unsigned int b_state)
1669 {
1670         BUG_ON(!PageLocked(page));
1671
1672         if (!page_has_buffers(page))
1673                 create_empty_buffers(page, 1 << READ_ONCE(inode->i_blkbits),
1674                                      b_state);
1675         return page_buffers(page);
1676 }
1677
1678 /*
1679  * NOTE! All mapped/uptodate combinations are valid:
1680  *
1681  *      Mapped  Uptodate        Meaning
1682  *
1683  *      No      No              "unknown" - must do get_block()
1684  *      No      Yes             "hole" - zero-filled
1685  *      Yes     No              "allocated" - allocated on disk, not read in
1686  *      Yes     Yes             "valid" - allocated and up-to-date in memory.
1687  *
1688  * "Dirty" is valid only with the last case (mapped+uptodate).
1689  */
1690
1691 /*
1692  * While block_write_full_page is writing back the dirty buffers under
1693  * the page lock, whoever dirtied the buffers may decide to clean them
1694  * again at any time.  We handle that by only looking at the buffer
1695  * state inside lock_buffer().
1696  *
1697  * If block_write_full_page() is called for regular writeback
1698  * (wbc->sync_mode == WB_SYNC_NONE) then it will redirty a page which has a
1699  * locked buffer.   This only can happen if someone has written the buffer
1700  * directly, with submit_bh().  At the address_space level PageWriteback
1701  * prevents this contention from occurring.
1702  *
1703  * If block_write_full_page() is called with wbc->sync_mode ==
1704  * WB_SYNC_ALL, the writes are posted using REQ_SYNC; this
1705  * causes the writes to be flagged as synchronous writes.
1706  */
1707 int __block_write_full_page(struct inode *inode, struct page *page,
1708                         get_block_t *get_block, struct writeback_control *wbc,
1709                         bh_end_io_t *handler)
1710 {
1711         int err;
1712         sector_t block;
1713         sector_t last_block;
1714         struct buffer_head *bh, *head;
1715         unsigned int blocksize, bbits;
1716         int nr_underway = 0;
1717         int write_flags = wbc_to_write_flags(wbc);
1718
1719         head = create_page_buffers(page, inode,
1720                                         (1 << BH_Dirty)|(1 << BH_Uptodate));
1721
1722         /*
1723          * Be very careful.  We have no exclusion from __set_page_dirty_buffers
1724          * here, and the (potentially unmapped) buffers may become dirty at
1725          * any time.  If a buffer becomes dirty here after we've inspected it
1726          * then we just miss that fact, and the page stays dirty.
1727          *
1728          * Buffers outside i_size may be dirtied by __set_page_dirty_buffers;
1729          * handle that here by just cleaning them.
1730          */
1731
1732         bh = head;
1733         blocksize = bh->b_size;
1734         bbits = block_size_bits(blocksize);
1735
1736         block = (sector_t)page->index << (PAGE_SHIFT - bbits);
1737         last_block = (i_size_read(inode) - 1) >> bbits;
1738
1739         /*
1740          * Get all the dirty buffers mapped to disk addresses and
1741          * handle any aliases from the underlying blockdev's mapping.
1742          */
1743         do {
1744                 if (block > last_block) {
1745                         /*
1746                          * mapped buffers outside i_size will occur, because
1747                          * this page can be outside i_size when there is a
1748                          * truncate in progress.
1749                          */
1750                         /*
1751                          * The buffer was zeroed by block_write_full_page()
1752                          */
1753                         clear_buffer_dirty(bh);
1754                         set_buffer_uptodate(bh);
1755                 } else if ((!buffer_mapped(bh) || buffer_delay(bh)) &&
1756                            buffer_dirty(bh)) {
1757                         WARN_ON(bh->b_size != blocksize);
1758                         err = get_block(inode, block, bh, 1);
1759                         if (err)
1760                                 goto recover;
1761                         clear_buffer_delay(bh);
1762                         if (buffer_new(bh)) {
1763                                 /* blockdev mappings never come here */
1764                                 clear_buffer_new(bh);
1765                                 clean_bdev_bh_alias(bh);
1766                         }
1767                 }
1768                 bh = bh->b_this_page;
1769                 block++;
1770         } while (bh != head);
1771
1772         do {
1773                 if (!buffer_mapped(bh))
1774                         continue;
1775                 /*
1776                  * If it's a fully non-blocking write attempt and we cannot
1777                  * lock the buffer then redirty the page.  Note that this can
1778                  * potentially cause a busy-wait loop from writeback threads
1779                  * and kswapd activity, but those code paths have their own
1780                  * higher-level throttling.
1781                  */
1782                 if (wbc->sync_mode != WB_SYNC_NONE) {
1783                         lock_buffer(bh);
1784                 } else if (!trylock_buffer(bh)) {
1785                         redirty_page_for_writepage(wbc, page);
1786                         continue;
1787                 }
1788                 if (test_clear_buffer_dirty(bh)) {
1789                         mark_buffer_async_write_endio(bh, handler);
1790                 } else {
1791                         unlock_buffer(bh);
1792                 }
1793         } while ((bh = bh->b_this_page) != head);
1794
1795         /*
1796          * The page and its buffers are protected by PageWriteback(), so we can
1797          * drop the bh refcounts early.
1798          */
1799         BUG_ON(PageWriteback(page));
1800         set_page_writeback(page);
1801
1802         do {
1803                 struct buffer_head *next = bh->b_this_page;
1804                 if (buffer_async_write(bh)) {
1805                         submit_bh_wbc(REQ_OP_WRITE, write_flags, bh,
1806                                         inode->i_write_hint, wbc);
1807                         nr_underway++;
1808                 }
1809                 bh = next;
1810         } while (bh != head);
1811         unlock_page(page);
1812
1813         err = 0;
1814 done:
1815         if (nr_underway == 0) {
1816                 /*
1817                  * The page was marked dirty, but the buffers were
1818                  * clean.  Someone wrote them back by hand with
1819                  * ll_rw_block/submit_bh.  A rare case.
1820                  */
1821                 end_page_writeback(page);
1822
1823                 /*
1824                  * The page and buffer_heads can be released at any time from
1825                  * here on.
1826                  */
1827         }
1828         return err;
1829
1830 recover:
1831         /*
1832          * ENOSPC, or some other error.  We may already have added some
1833          * blocks to the file, so we need to write these out to avoid
1834          * exposing stale data.
1835          * The page is currently locked and not marked for writeback
1836          */
1837         bh = head;
1838         /* Recovery: lock and submit the mapped buffers */
1839         do {
1840                 if (buffer_mapped(bh) && buffer_dirty(bh) &&
1841                     !buffer_delay(bh)) {
1842                         lock_buffer(bh);
1843                         mark_buffer_async_write_endio(bh, handler);
1844                 } else {
1845                         /*
1846                          * The buffer may have been set dirty during
1847                          * attachment to a dirty page.
1848                          */
1849                         clear_buffer_dirty(bh);
1850                 }
1851         } while ((bh = bh->b_this_page) != head);
1852         SetPageError(page);
1853         BUG_ON(PageWriteback(page));
1854         mapping_set_error(page->mapping, err);
1855         set_page_writeback(page);
1856         do {
1857                 struct buffer_head *next = bh->b_this_page;
1858                 if (buffer_async_write(bh)) {
1859                         clear_buffer_dirty(bh);
1860                         submit_bh_wbc(REQ_OP_WRITE, write_flags, bh,
1861                                         inode->i_write_hint, wbc);
1862                         nr_underway++;
1863                 }
1864                 bh = next;
1865         } while (bh != head);
1866         unlock_page(page);
1867         goto done;
1868 }
1869 EXPORT_SYMBOL(__block_write_full_page);
1870
1871 /*
1872  * If a page has any new buffers, zero them out here, and mark them uptodate
1873  * and dirty so they'll be written out (in order to prevent uninitialised
1874  * block data from leaking). And clear the new bit.
1875  */
1876 void page_zero_new_buffers(struct page *page, unsigned from, unsigned to)
1877 {
1878         unsigned int block_start, block_end;
1879         struct buffer_head *head, *bh;
1880
1881         BUG_ON(!PageLocked(page));
1882         if (!page_has_buffers(page))
1883                 return;
1884
1885         bh = head = page_buffers(page);
1886         block_start = 0;
1887         do {
1888                 block_end = block_start + bh->b_size;
1889
1890                 if (buffer_new(bh)) {
1891                         if (block_end > from && block_start < to) {
1892                                 if (!PageUptodate(page)) {
1893                                         unsigned start, size;
1894
1895                                         start = max(from, block_start);
1896                                         size = min(to, block_end) - start;
1897
1898                                         zero_user(page, start, size);
1899                                         set_buffer_uptodate(bh);
1900                                 }
1901
1902                                 clear_buffer_new(bh);
1903                                 mark_buffer_dirty(bh);
1904                         }
1905                 }
1906
1907                 block_start = block_end;
1908                 bh = bh->b_this_page;
1909         } while (bh != head);
1910 }
1911 EXPORT_SYMBOL(page_zero_new_buffers);
1912
1913 static void
1914 iomap_to_bh(struct inode *inode, sector_t block, struct buffer_head *bh,
1915                 struct iomap *iomap)
1916 {
1917         loff_t offset = block << inode->i_blkbits;
1918
1919         bh->b_bdev = iomap->bdev;
1920
1921         /*
1922          * Block points to offset in file we need to map, iomap contains
1923          * the offset at which the map starts. If the map ends before the
1924          * current block, then do not map the buffer and let the caller
1925          * handle it.
1926          */
1927         BUG_ON(offset >= iomap->offset + iomap->length);
1928
1929         switch (iomap->type) {
1930         case IOMAP_HOLE:
1931                 /*
1932                  * If the buffer is not up to date or beyond the current EOF,
1933                  * we need to mark it as new to ensure sub-block zeroing is
1934                  * executed if necessary.
1935                  */
1936                 if (!buffer_uptodate(bh) ||
1937                     (offset >= i_size_read(inode)))
1938                         set_buffer_new(bh);
1939                 break;
1940         case IOMAP_DELALLOC:
1941                 if (!buffer_uptodate(bh) ||
1942                     (offset >= i_size_read(inode)))
1943                         set_buffer_new(bh);
1944                 set_buffer_uptodate(bh);
1945                 set_buffer_mapped(bh);
1946                 set_buffer_delay(bh);
1947                 break;
1948         case IOMAP_UNWRITTEN:
1949                 /*
1950                  * For unwritten regions, we always need to ensure that regions
1951                  * in the block we are not writing to are zeroed. Mark the
1952                  * buffer as new to ensure this.
1953                  */
1954                 set_buffer_new(bh);
1955                 set_buffer_unwritten(bh);
1956                 /* FALLTHRU */
1957         case IOMAP_MAPPED:
1958                 if ((iomap->flags & IOMAP_F_NEW) ||
1959                     offset >= i_size_read(inode))
1960                         set_buffer_new(bh);
1961                 bh->b_blocknr = (iomap->addr + offset - iomap->offset) >>
1962                                 inode->i_blkbits;
1963                 set_buffer_mapped(bh);
1964                 break;
1965         }
1966 }
1967
1968 int __block_write_begin_int(struct page *page, loff_t pos, unsigned len,
1969                 get_block_t *get_block, struct iomap *iomap)
1970 {
1971         unsigned from = pos & (PAGE_SIZE - 1);
1972         unsigned to = from + len;
1973         struct inode *inode = page->mapping->host;
1974         unsigned block_start, block_end;
1975         sector_t block;
1976         int err = 0;
1977         unsigned blocksize, bbits;
1978         struct buffer_head *bh, *head, *wait[2], **wait_bh=wait;
1979
1980         BUG_ON(!PageLocked(page));
1981         BUG_ON(from > PAGE_SIZE);
1982         BUG_ON(to > PAGE_SIZE);
1983         BUG_ON(from > to);
1984
1985         head = create_page_buffers(page, inode, 0);
1986         blocksize = head->b_size;
1987         bbits = block_size_bits(blocksize);
1988
1989         block = (sector_t)page->index << (PAGE_SHIFT - bbits);
1990
1991         for(bh = head, block_start = 0; bh != head || !block_start;
1992             block++, block_start=block_end, bh = bh->b_this_page) {
1993                 block_end = block_start + blocksize;
1994                 if (block_end <= from || block_start >= to) {
1995                         if (PageUptodate(page)) {
1996                                 if (!buffer_uptodate(bh))
1997                                         set_buffer_uptodate(bh);
1998                         }
1999                         continue;
2000                 }
2001                 if (buffer_new(bh))
2002                         clear_buffer_new(bh);
2003                 if (!buffer_mapped(bh)) {
2004                         WARN_ON(bh->b_size != blocksize);
2005                         if (get_block) {
2006                                 err = get_block(inode, block, bh, 1);
2007                                 if (err)
2008                                         break;
2009                         } else {
2010                                 iomap_to_bh(inode, block, bh, iomap);
2011                         }
2012
2013                         if (buffer_new(bh)) {
2014                                 clean_bdev_bh_alias(bh);
2015                                 if (PageUptodate(page)) {
2016                                         clear_buffer_new(bh);
2017                                         set_buffer_uptodate(bh);
2018                                         mark_buffer_dirty(bh);
2019                                         continue;
2020                                 }
2021                                 if (block_end > to || block_start < from)
2022                                         zero_user_segments(page,
2023                                                 to, block_end,
2024                                                 block_start, from);
2025                                 continue;
2026                         }
2027                 }
2028                 if (PageUptodate(page)) {
2029                         if (!buffer_uptodate(bh))
2030                                 set_buffer_uptodate(bh);
2031                         continue; 
2032                 }
2033                 if (!buffer_uptodate(bh) && !buffer_delay(bh) &&
2034                     !buffer_unwritten(bh) &&
2035                      (block_start < from || block_end > to)) {
2036                         ll_rw_block(REQ_OP_READ, 0, 1, &bh);
2037                         *wait_bh++=bh;
2038                 }
2039         }
2040         /*
2041          * If we issued read requests - let them complete.
2042          */
2043         while(wait_bh > wait) {
2044                 wait_on_buffer(*--wait_bh);
2045                 if (!buffer_uptodate(*wait_bh))
2046                         err = -EIO;
2047         }
2048         if (unlikely(err))
2049                 page_zero_new_buffers(page, from, to);
2050         return err;
2051 }
2052
2053 int __block_write_begin(struct page *page, loff_t pos, unsigned len,
2054                 get_block_t *get_block)
2055 {
2056         return __block_write_begin_int(page, pos, len, get_block, NULL);
2057 }
2058 EXPORT_SYMBOL(__block_write_begin);
2059
2060 static int __block_commit_write(struct inode *inode, struct page *page,
2061                 unsigned from, unsigned to)
2062 {
2063         unsigned block_start, block_end;
2064         int partial = 0;
2065         unsigned blocksize;
2066         struct buffer_head *bh, *head;
2067
2068         bh = head = page_buffers(page);
2069         blocksize = bh->b_size;
2070
2071         block_start = 0;
2072         do {
2073                 block_end = block_start + blocksize;
2074                 if (block_end <= from || block_start >= to) {
2075                         if (!buffer_uptodate(bh))
2076                                 partial = 1;
2077                 } else {
2078                         set_buffer_uptodate(bh);
2079                         mark_buffer_dirty(bh);
2080                 }
2081                 clear_buffer_new(bh);
2082
2083                 block_start = block_end;
2084                 bh = bh->b_this_page;
2085         } while (bh != head);
2086
2087         /*
2088          * If this is a partial write which happened to make all buffers
2089          * uptodate then we can optimize away a bogus readpage() for
2090          * the next read(). Here we 'discover' whether the page went
2091          * uptodate as a result of this (potentially partial) write.
2092          */
2093         if (!partial)
2094                 SetPageUptodate(page);
2095         return 0;
2096 }
2097
2098 /*
2099  * block_write_begin takes care of the basic task of block allocation and
2100  * bringing partial write blocks uptodate first.
2101  *
2102  * The filesystem needs to handle block truncation upon failure.
2103  */
2104 int block_write_begin(struct address_space *mapping, loff_t pos, unsigned len,
2105                 unsigned flags, struct page **pagep, get_block_t *get_block)
2106 {
2107         pgoff_t index = pos >> PAGE_SHIFT;
2108         struct page *page;
2109         int status;
2110
2111         page = grab_cache_page_write_begin(mapping, index, flags);
2112         if (!page)
2113                 return -ENOMEM;
2114
2115         status = __block_write_begin(page, pos, len, get_block);
2116         if (unlikely(status)) {
2117                 unlock_page(page);
2118                 put_page(page);
2119                 page = NULL;
2120         }
2121
2122         *pagep = page;
2123         return status;
2124 }
2125 EXPORT_SYMBOL(block_write_begin);
2126
2127 int block_write_end(struct file *file, struct address_space *mapping,
2128                         loff_t pos, unsigned len, unsigned copied,
2129                         struct page *page, void *fsdata)
2130 {
2131         struct inode *inode = mapping->host;
2132         unsigned start;
2133
2134         start = pos & (PAGE_SIZE - 1);
2135
2136         if (unlikely(copied < len)) {
2137                 /*
2138                  * The buffers that were written will now be uptodate, so we
2139                  * don't have to worry about a readpage reading them and
2140                  * overwriting a partial write. However if we have encountered
2141                  * a short write and only partially written into a buffer, it
2142                  * will not be marked uptodate, so a readpage might come in and
2143                  * destroy our partial write.
2144                  *
2145                  * Do the simplest thing, and just treat any short write to a
2146                  * non uptodate page as a zero-length write, and force the
2147                  * caller to redo the whole thing.
2148                  */
2149                 if (!PageUptodate(page))
2150                         copied = 0;
2151
2152                 page_zero_new_buffers(page, start+copied, start+len);
2153         }
2154         flush_dcache_page(page);
2155
2156         /* This could be a short (even 0-length) commit */
2157         __block_commit_write(inode, page, start, start+copied);
2158
2159         return copied;
2160 }
2161 EXPORT_SYMBOL(block_write_end);
2162
2163 int generic_write_end(struct file *file, struct address_space *mapping,
2164                         loff_t pos, unsigned len, unsigned copied,
2165                         struct page *page, void *fsdata)
2166 {
2167         struct inode *inode = mapping->host;
2168         loff_t old_size = inode->i_size;
2169         bool i_size_changed = false;
2170
2171         copied = block_write_end(file, mapping, pos, len, copied, page, fsdata);
2172
2173         /*
2174          * No need to use i_size_read() here, the i_size cannot change under us
2175          * because we hold i_rwsem.
2176          *
2177          * But it's important to update i_size while still holding page lock:
2178          * page writeout could otherwise come in and zero beyond i_size.
2179          */
2180         if (pos + copied > inode->i_size) {
2181                 i_size_write(inode, pos + copied);
2182                 i_size_changed = true;
2183         }
2184
2185         unlock_page(page);
2186         put_page(page);
2187
2188         if (old_size < pos)
2189                 pagecache_isize_extended(inode, old_size, pos);
2190         /*
2191          * Don't mark the inode dirty under page lock. First, it unnecessarily
2192          * makes the holding time of page lock longer. Second, it forces lock
2193          * ordering of page lock and transaction start for journaling
2194          * filesystems.
2195          */
2196         if (i_size_changed)
2197                 mark_inode_dirty(inode);
2198         return copied;
2199 }
2200 EXPORT_SYMBOL(generic_write_end);
2201
2202 /*
2203  * block_is_partially_uptodate checks whether buffers within a page are
2204  * uptodate or not.
2205  *
2206  * Returns true if all buffers which correspond to a file portion
2207  * we want to read are uptodate.
2208  */
2209 int block_is_partially_uptodate(struct page *page, unsigned long from,
2210                                         unsigned long count)
2211 {
2212         unsigned block_start, block_end, blocksize;
2213         unsigned to;
2214         struct buffer_head *bh, *head;
2215         int ret = 1;
2216
2217         if (!page_has_buffers(page))
2218                 return 0;
2219
2220         head = page_buffers(page);
2221         blocksize = head->b_size;
2222         to = min_t(unsigned, PAGE_SIZE - from, count);
2223         to = from + to;
2224         if (from < blocksize && to > PAGE_SIZE - blocksize)
2225                 return 0;
2226
2227         bh = head;
2228         block_start = 0;
2229         do {
2230                 block_end = block_start + blocksize;
2231                 if (block_end > from && block_start < to) {
2232                         if (!buffer_uptodate(bh)) {
2233                                 ret = 0;
2234                                 break;
2235                         }
2236                         if (block_end >= to)
2237                                 break;
2238                 }
2239                 block_start = block_end;
2240                 bh = bh->b_this_page;
2241         } while (bh != head);
2242
2243         return ret;
2244 }
2245 EXPORT_SYMBOL(block_is_partially_uptodate);
2246
2247 /*
2248  * Generic "read page" function for block devices that have the normal
2249  * get_block functionality. This is most of the block device filesystems.
2250  * Reads the page asynchronously --- the unlock_buffer() and
2251  * set/clear_buffer_uptodate() functions propagate buffer state into the
2252  * page struct once IO has completed.
2253  */
2254 int block_read_full_page(struct page *page, get_block_t *get_block)
2255 {
2256         struct inode *inode = page->mapping->host;
2257         sector_t iblock, lblock;
2258         struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE];
2259         unsigned int blocksize, bbits;
2260         int nr, i;
2261         int fully_mapped = 1;
2262
2263         head = create_page_buffers(page, inode, 0);
2264         blocksize = head->b_size;
2265         bbits = block_size_bits(blocksize);
2266
2267         iblock = (sector_t)page->index << (PAGE_SHIFT - bbits);
2268         lblock = (i_size_read(inode)+blocksize-1) >> bbits;
2269         bh = head;
2270         nr = 0;
2271         i = 0;
2272
2273         do {
2274                 if (buffer_uptodate(bh))
2275                         continue;
2276
2277                 if (!buffer_mapped(bh)) {
2278                         int err = 0;
2279
2280                         fully_mapped = 0;
2281                         if (iblock < lblock) {
2282                                 WARN_ON(bh->b_size != blocksize);
2283                                 err = get_block(inode, iblock, bh, 0);
2284                                 if (err)
2285                                         SetPageError(page);
2286                         }
2287                         if (!buffer_mapped(bh)) {
2288                                 zero_user(page, i * blocksize, blocksize);
2289                                 if (!err)
2290                                         set_buffer_uptodate(bh);
2291                                 continue;
2292                         }
2293                         /*
2294                          * get_block() might have updated the buffer
2295                          * synchronously
2296                          */
2297                         if (buffer_uptodate(bh))
2298                                 continue;
2299                 }
2300                 arr[nr++] = bh;
2301         } while (i++, iblock++, (bh = bh->b_this_page) != head);
2302
2303         if (fully_mapped)
2304                 SetPageMappedToDisk(page);
2305
2306         if (!nr) {
2307                 /*
2308                  * All buffers are uptodate - we can set the page uptodate
2309                  * as well. But not if get_block() returned an error.
2310                  */
2311                 if (!PageError(page))
2312                         SetPageUptodate(page);
2313                 unlock_page(page);
2314                 return 0;
2315         }
2316
2317         /* Stage two: lock the buffers */
2318         for (i = 0; i < nr; i++) {
2319                 bh = arr[i];
2320                 lock_buffer(bh);
2321                 mark_buffer_async_read(bh);
2322         }
2323
2324         /*
2325          * Stage 3: start the IO.  Check for uptodateness
2326          * inside the buffer lock in case another process reading
2327          * the underlying blockdev brought it uptodate (the sct fix).
2328          */
2329         for (i = 0; i < nr; i++) {
2330                 bh = arr[i];
2331                 if (buffer_uptodate(bh))
2332                         end_buffer_async_read(bh, 1);
2333                 else
2334                         submit_bh(REQ_OP_READ, 0, bh);
2335         }
2336         return 0;
2337 }
2338 EXPORT_SYMBOL(block_read_full_page);
2339
2340 /* utility function for filesystems that need to do work on expanding
2341  * truncates.  Uses filesystem pagecache writes to allow the filesystem to
2342  * deal with the hole.  
2343  */
2344 int generic_cont_expand_simple(struct inode *inode, loff_t size)
2345 {
2346         struct address_space *mapping = inode->i_mapping;
2347         struct page *page;
2348         void *fsdata;
2349         int err;
2350
2351         err = inode_newsize_ok(inode, size);
2352         if (err)
2353                 goto out;
2354
2355         err = pagecache_write_begin(NULL, mapping, size, 0,
2356                                     AOP_FLAG_CONT_EXPAND, &page, &fsdata);
2357         if (err)
2358                 goto out;
2359
2360         err = pagecache_write_end(NULL, mapping, size, 0, 0, page, fsdata);
2361         BUG_ON(err > 0);
2362
2363 out:
2364         return err;
2365 }
2366 EXPORT_SYMBOL(generic_cont_expand_simple);
2367
2368 static int cont_expand_zero(struct file *file, struct address_space *mapping,
2369                             loff_t pos, loff_t *bytes)
2370 {
2371         struct inode *inode = mapping->host;
2372         unsigned int blocksize = i_blocksize(inode);
2373         struct page *page;
2374         void *fsdata;
2375         pgoff_t index, curidx;
2376         loff_t curpos;
2377         unsigned zerofrom, offset, len;
2378         int err = 0;
2379
2380         index = pos >> PAGE_SHIFT;
2381         offset = pos & ~PAGE_MASK;
2382
2383         while (index > (curidx = (curpos = *bytes)>>PAGE_SHIFT)) {
2384                 zerofrom = curpos & ~PAGE_MASK;
2385                 if (zerofrom & (blocksize-1)) {
2386                         *bytes |= (blocksize-1);
2387                         (*bytes)++;
2388                 }
2389                 len = PAGE_SIZE - zerofrom;
2390
2391                 err = pagecache_write_begin(file, mapping, curpos, len, 0,
2392                                             &page, &fsdata);
2393                 if (err)
2394                         goto out;
2395                 zero_user(page, zerofrom, len);
2396                 err = pagecache_write_end(file, mapping, curpos, len, len,
2397                                                 page, fsdata);
2398                 if (err < 0)
2399                         goto out;
2400                 BUG_ON(err != len);
2401                 err = 0;
2402
2403                 balance_dirty_pages_ratelimited(mapping);
2404
2405                 if (fatal_signal_pending(current)) {
2406                         err = -EINTR;
2407                         goto out;
2408                 }
2409         }
2410
2411         /* page covers the boundary, find the boundary offset */
2412         if (index == curidx) {
2413                 zerofrom = curpos & ~PAGE_MASK;
2414                 /* if we will expand the thing last block will be filled */
2415                 if (offset <= zerofrom) {
2416                         goto out;
2417                 }
2418                 if (zerofrom & (blocksize-1)) {
2419                         *bytes |= (blocksize-1);
2420                         (*bytes)++;
2421                 }
2422                 len = offset - zerofrom;
2423
2424                 err = pagecache_write_begin(file, mapping, curpos, len, 0,
2425                                             &page, &fsdata);
2426                 if (err)
2427                         goto out;
2428                 zero_user(page, zerofrom, len);
2429                 err = pagecache_write_end(file, mapping, curpos, len, len,
2430                                                 page, fsdata);
2431                 if (err < 0)
2432                         goto out;
2433                 BUG_ON(err != len);
2434                 err = 0;
2435         }
2436 out:
2437         return err;
2438 }
2439
2440 /*
2441  * For moronic filesystems that do not allow holes in file.
2442  * We may have to extend the file.
2443  */
2444 int cont_write_begin(struct file *file, struct address_space *mapping,
2445                         loff_t pos, unsigned len, unsigned flags,
2446                         struct page **pagep, void **fsdata,
2447                         get_block_t *get_block, loff_t *bytes)
2448 {
2449         struct inode *inode = mapping->host;
2450         unsigned int blocksize = i_blocksize(inode);
2451         unsigned int zerofrom;
2452         int err;
2453
2454         err = cont_expand_zero(file, mapping, pos, bytes);
2455         if (err)
2456                 return err;
2457
2458         zerofrom = *bytes & ~PAGE_MASK;
2459         if (pos+len > *bytes && zerofrom & (blocksize-1)) {
2460                 *bytes |= (blocksize-1);
2461                 (*bytes)++;
2462         }
2463
2464         return block_write_begin(mapping, pos, len, flags, pagep, get_block);
2465 }
2466 EXPORT_SYMBOL(cont_write_begin);
2467
2468 int block_commit_write(struct page *page, unsigned from, unsigned to)
2469 {
2470         struct inode *inode = page->mapping->host;
2471         __block_commit_write(inode,page,from,to);
2472         return 0;
2473 }
2474 EXPORT_SYMBOL(block_commit_write);
2475
2476 /*
2477  * block_page_mkwrite() is not allowed to change the file size as it gets
2478  * called from a page fault handler when a page is first dirtied. Hence we must
2479  * be careful to check for EOF conditions here. We set the page up correctly
2480  * for a written page which means we get ENOSPC checking when writing into
2481  * holes and correct delalloc and unwritten extent mapping on filesystems that
2482  * support these features.
2483  *
2484  * We are not allowed to take the i_mutex here so we have to play games to
2485  * protect against truncate races as the page could now be beyond EOF.  Because
2486  * truncate writes the inode size before removing pages, once we have the
2487  * page lock we can determine safely if the page is beyond EOF. If it is not
2488  * beyond EOF, then the page is guaranteed safe against truncation until we
2489  * unlock the page.
2490  *
2491  * Direct callers of this function should protect against filesystem freezing
2492  * using sb_start_pagefault() - sb_end_pagefault() functions.
2493  */
2494 int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
2495                          get_block_t get_block)
2496 {
2497         struct page *page = vmf->page;
2498         struct inode *inode = file_inode(vma->vm_file);
2499         unsigned long end;
2500         loff_t size;
2501         int ret;
2502
2503         lock_page(page);
2504         size = i_size_read(inode);
2505         if ((page->mapping != inode->i_mapping) ||
2506             (page_offset(page) > size)) {
2507                 /* We overload EFAULT to mean page got truncated */
2508                 ret = -EFAULT;
2509                 goto out_unlock;
2510         }
2511
2512         /* page is wholly or partially inside EOF */
2513         if (((page->index + 1) << PAGE_SHIFT) > size)
2514                 end = size & ~PAGE_MASK;
2515         else
2516                 end = PAGE_SIZE;
2517
2518         ret = __block_write_begin(page, 0, end, get_block);
2519         if (!ret)
2520                 ret = block_commit_write(page, 0, end);
2521
2522         if (unlikely(ret < 0))
2523                 goto out_unlock;
2524         set_page_dirty(page);
2525         wait_for_stable_page(page);
2526         return 0;
2527 out_unlock:
2528         unlock_page(page);
2529         return ret;
2530 }
2531 EXPORT_SYMBOL(block_page_mkwrite);
2532
2533 /*
2534  * nobh_write_begin()'s prereads are special: the buffer_heads are freed
2535  * immediately, while under the page lock.  So it needs a special end_io
2536  * handler which does not touch the bh after unlocking it.
2537  */
2538 static void end_buffer_read_nobh(struct buffer_head *bh, int uptodate)
2539 {
2540         __end_buffer_read_notouch(bh, uptodate);
2541 }
2542
2543 /*
2544  * Attach the singly-linked list of buffers created by nobh_write_begin, to
2545  * the page (converting it to circular linked list and taking care of page
2546  * dirty races).
2547  */
2548 static void attach_nobh_buffers(struct page *page, struct buffer_head *head)
2549 {
2550         struct buffer_head *bh;
2551
2552         BUG_ON(!PageLocked(page));
2553
2554         spin_lock(&page->mapping->private_lock);
2555         bh = head;
2556         do {
2557                 if (PageDirty(page))
2558                         set_buffer_dirty(bh);
2559                 if (!bh->b_this_page)
2560                         bh->b_this_page = head;
2561                 bh = bh->b_this_page;
2562         } while (bh != head);
2563         attach_page_buffers(page, head);
2564         spin_unlock(&page->mapping->private_lock);
2565 }
2566
2567 /*
2568  * On entry, the page is fully not uptodate.
2569  * On exit the page is fully uptodate in the areas outside (from,to)
2570  * The filesystem needs to handle block truncation upon failure.
2571  */
2572 int nobh_write_begin(struct address_space *mapping,
2573                         loff_t pos, unsigned len, unsigned flags,
2574                         struct page **pagep, void **fsdata,
2575                         get_block_t *get_block)
2576 {
2577         struct inode *inode = mapping->host;
2578         const unsigned blkbits = inode->i_blkbits;
2579         const unsigned blocksize = 1 << blkbits;
2580         struct buffer_head *head, *bh;
2581         struct page *page;
2582         pgoff_t index;
2583         unsigned from, to;
2584         unsigned block_in_page;
2585         unsigned block_start, block_end;
2586         sector_t block_in_file;
2587         int nr_reads = 0;
2588         int ret = 0;
2589         int is_mapped_to_disk = 1;
2590
2591         index = pos >> PAGE_SHIFT;
2592         from = pos & (PAGE_SIZE - 1);
2593         to = from + len;
2594
2595         page = grab_cache_page_write_begin(mapping, index, flags);
2596         if (!page)
2597                 return -ENOMEM;
2598         *pagep = page;
2599         *fsdata = NULL;
2600
2601         if (page_has_buffers(page)) {
2602                 ret = __block_write_begin(page, pos, len, get_block);
2603                 if (unlikely(ret))
2604                         goto out_release;
2605                 return ret;
2606         }
2607
2608         if (PageMappedToDisk(page))
2609                 return 0;
2610
2611         /*
2612          * Allocate buffers so that we can keep track of state, and potentially
2613          * attach them to the page if an error occurs. In the common case of
2614          * no error, they will just be freed again without ever being attached
2615          * to the page (which is all OK, because we're under the page lock).
2616          *
2617          * Be careful: the buffer linked list is a NULL terminated one, rather
2618          * than the circular one we're used to.
2619          */
2620         head = alloc_page_buffers(page, blocksize, false);
2621         if (!head) {
2622                 ret = -ENOMEM;
2623                 goto out_release;
2624         }
2625
2626         block_in_file = (sector_t)page->index << (PAGE_SHIFT - blkbits);
2627
2628         /*
2629          * We loop across all blocks in the page, whether or not they are
2630          * part of the affected region.  This is so we can discover if the
2631          * page is fully mapped-to-disk.
2632          */
2633         for (block_start = 0, block_in_page = 0, bh = head;
2634                   block_start < PAGE_SIZE;
2635                   block_in_page++, block_start += blocksize, bh = bh->b_this_page) {
2636                 int create;
2637
2638                 block_end = block_start + blocksize;
2639                 bh->b_state = 0;
2640                 create = 1;
2641                 if (block_start >= to)
2642                         create = 0;
2643                 ret = get_block(inode, block_in_file + block_in_page,
2644                                         bh, create);
2645                 if (ret)
2646                         goto failed;
2647                 if (!buffer_mapped(bh))
2648                         is_mapped_to_disk = 0;
2649                 if (buffer_new(bh))
2650                         clean_bdev_bh_alias(bh);
2651                 if (PageUptodate(page)) {
2652                         set_buffer_uptodate(bh);
2653                         continue;
2654                 }
2655                 if (buffer_new(bh) || !buffer_mapped(bh)) {
2656                         zero_user_segments(page, block_start, from,
2657                                                         to, block_end);
2658                         continue;
2659                 }
2660                 if (buffer_uptodate(bh))
2661                         continue;       /* reiserfs does this */
2662                 if (block_start < from || block_end > to) {
2663                         lock_buffer(bh);
2664                         bh->b_end_io = end_buffer_read_nobh;
2665                         submit_bh(REQ_OP_READ, 0, bh);
2666                         nr_reads++;
2667                 }
2668         }
2669
2670         if (nr_reads) {
2671                 /*
2672                  * The page is locked, so these buffers are protected from
2673                  * any VM or truncate activity.  Hence we don't need to care
2674                  * for the buffer_head refcounts.
2675                  */
2676                 for (bh = head; bh; bh = bh->b_this_page) {
2677                         wait_on_buffer(bh);
2678                         if (!buffer_uptodate(bh))
2679                                 ret = -EIO;
2680                 }
2681                 if (ret)
2682                         goto failed;
2683         }
2684
2685         if (is_mapped_to_disk)
2686                 SetPageMappedToDisk(page);
2687
2688         *fsdata = head; /* to be released by nobh_write_end */
2689
2690         return 0;
2691
2692 failed:
2693         BUG_ON(!ret);
2694         /*
2695          * Error recovery is a bit difficult. We need to zero out blocks that
2696          * were newly allocated, and dirty them to ensure they get written out.
2697          * Buffers need to be attached to the page at this point, otherwise
2698          * the handling of potential IO errors during writeout would be hard
2699          * (could try doing synchronous writeout, but what if that fails too?)
2700          */
2701         attach_nobh_buffers(page, head);
2702         page_zero_new_buffers(page, from, to);
2703
2704 out_release:
2705         unlock_page(page);
2706         put_page(page);
2707         *pagep = NULL;
2708
2709         return ret;
2710 }
2711 EXPORT_SYMBOL(nobh_write_begin);
2712
2713 int nobh_write_end(struct file *file, struct address_space *mapping,
2714                         loff_t pos, unsigned len, unsigned copied,
2715                         struct page *page, void *fsdata)
2716 {
2717         struct inode *inode = page->mapping->host;
2718         struct buffer_head *head = fsdata;
2719         struct buffer_head *bh;
2720         BUG_ON(fsdata != NULL && page_has_buffers(page));
2721
2722         if (unlikely(copied < len) && head)
2723                 attach_nobh_buffers(page, head);
2724         if (page_has_buffers(page))
2725                 return generic_write_end(file, mapping, pos, len,
2726                                         copied, page, fsdata);
2727
2728         SetPageUptodate(page);
2729         set_page_dirty(page);
2730         if (pos+copied > inode->i_size) {
2731                 i_size_write(inode, pos+copied);
2732                 mark_inode_dirty(inode);
2733         }
2734
2735         unlock_page(page);
2736         put_page(page);
2737
2738         while (head) {
2739                 bh = head;
2740                 head = head->b_this_page;
2741                 free_buffer_head(bh);
2742         }
2743
2744         return copied;
2745 }
2746 EXPORT_SYMBOL(nobh_write_end);
2747
2748 /*
2749  * nobh_writepage() - based on block_full_write_page() except
2750  * that it tries to operate without attaching bufferheads to
2751  * the page.
2752  */
2753 int nobh_writepage(struct page *page, get_block_t *get_block,
2754                         struct writeback_control *wbc)
2755 {
2756         struct inode * const inode = page->mapping->host;
2757         loff_t i_size = i_size_read(inode);
2758         const pgoff_t end_index = i_size >> PAGE_SHIFT;
2759         unsigned offset;
2760         int ret;
2761
2762         /* Is the page fully inside i_size? */
2763         if (page->index < end_index)
2764                 goto out;
2765
2766         /* Is the page fully outside i_size? (truncate in progress) */
2767         offset = i_size & (PAGE_SIZE-1);
2768         if (page->index >= end_index+1 || !offset) {
2769                 /*
2770                  * The page may have dirty, unmapped buffers.  For example,
2771                  * they may have been added in ext3_writepage().  Make them
2772                  * freeable here, so the page does not leak.
2773                  */
2774 #if 0
2775                 /* Not really sure about this  - do we need this ? */
2776                 if (page->mapping->a_ops->invalidatepage)
2777                         page->mapping->a_ops->invalidatepage(page, offset);
2778 #endif
2779                 unlock_page(page);
2780                 return 0; /* don't care */
2781         }
2782
2783         /*
2784          * The page straddles i_size.  It must be zeroed out on each and every
2785          * writepage invocation because it may be mmapped.  "A file is mapped
2786          * in multiples of the page size.  For a file that is not a multiple of
2787          * the  page size, the remaining memory is zeroed when mapped, and
2788          * writes to that region are not written out to the file."
2789          */
2790         zero_user_segment(page, offset, PAGE_SIZE);
2791 out:
2792         ret = mpage_writepage(page, get_block, wbc);
2793         if (ret == -EAGAIN)
2794                 ret = __block_write_full_page(inode, page, get_block, wbc,
2795                                               end_buffer_async_write);
2796         return ret;
2797 }
2798 EXPORT_SYMBOL(nobh_writepage);
2799
2800 int nobh_truncate_page(struct address_space *mapping,
2801                         loff_t from, get_block_t *get_block)
2802 {
2803         pgoff_t index = from >> PAGE_SHIFT;
2804         unsigned offset = from & (PAGE_SIZE-1);
2805         unsigned blocksize;
2806         sector_t iblock;
2807         unsigned length, pos;
2808         struct inode *inode = mapping->host;
2809         struct page *page;
2810         struct buffer_head map_bh;
2811         int err;
2812
2813         blocksize = i_blocksize(inode);
2814         length = offset & (blocksize - 1);
2815
2816         /* Block boundary? Nothing to do */
2817         if (!length)
2818                 return 0;
2819
2820         length = blocksize - length;
2821         iblock = (sector_t)index << (PAGE_SHIFT - inode->i_blkbits);
2822
2823         page = grab_cache_page(mapping, index);
2824         err = -ENOMEM;
2825         if (!page)
2826                 goto out;
2827
2828         if (page_has_buffers(page)) {
2829 has_buffers:
2830                 unlock_page(page);
2831                 put_page(page);
2832                 return block_truncate_page(mapping, from, get_block);
2833         }
2834
2835         /* Find the buffer that contains "offset" */
2836         pos = blocksize;
2837         while (offset >= pos) {
2838                 iblock++;
2839                 pos += blocksize;
2840         }
2841
2842         map_bh.b_size = blocksize;
2843         map_bh.b_state = 0;
2844         err = get_block(inode, iblock, &map_bh, 0);
2845         if (err)
2846                 goto unlock;
2847         /* unmapped? It's a hole - nothing to do */
2848         if (!buffer_mapped(&map_bh))
2849                 goto unlock;
2850
2851         /* Ok, it's mapped. Make sure it's up-to-date */
2852         if (!PageUptodate(page)) {
2853                 err = mapping->a_ops->readpage(NULL, page);
2854                 if (err) {
2855                         put_page(page);
2856                         goto out;
2857                 }
2858                 lock_page(page);
2859                 if (!PageUptodate(page)) {
2860                         err = -EIO;
2861                         goto unlock;
2862                 }
2863                 if (page_has_buffers(page))
2864                         goto has_buffers;
2865         }
2866         zero_user(page, offset, length);
2867         set_page_dirty(page);
2868         err = 0;
2869
2870 unlock:
2871         unlock_page(page);
2872         put_page(page);
2873 out:
2874         return err;
2875 }
2876 EXPORT_SYMBOL(nobh_truncate_page);
2877
2878 int block_truncate_page(struct address_space *mapping,
2879                         loff_t from, get_block_t *get_block)
2880 {
2881         pgoff_t index = from >> PAGE_SHIFT;
2882         unsigned offset = from & (PAGE_SIZE-1);
2883         unsigned blocksize;
2884         sector_t iblock;
2885         unsigned length, pos;
2886         struct inode *inode = mapping->host;
2887         struct page *page;
2888         struct buffer_head *bh;
2889         int err;
2890
2891         blocksize = i_blocksize(inode);
2892         length = offset & (blocksize - 1);
2893
2894         /* Block boundary? Nothing to do */
2895         if (!length)
2896                 return 0;
2897
2898         length = blocksize - length;
2899         iblock = (sector_t)index << (PAGE_SHIFT - inode->i_blkbits);
2900         
2901         page = grab_cache_page(mapping, index);
2902         err = -ENOMEM;
2903         if (!page)
2904                 goto out;
2905
2906         if (!page_has_buffers(page))
2907                 create_empty_buffers(page, blocksize, 0);
2908
2909         /* Find the buffer that contains "offset" */
2910         bh = page_buffers(page);
2911         pos = blocksize;
2912         while (offset >= pos) {
2913                 bh = bh->b_this_page;
2914                 iblock++;
2915                 pos += blocksize;
2916         }
2917
2918         err = 0;
2919         if (!buffer_mapped(bh)) {
2920                 WARN_ON(bh->b_size != blocksize);
2921                 err = get_block(inode, iblock, bh, 0);
2922                 if (err)
2923                         goto unlock;
2924                 /* unmapped? It's a hole - nothing to do */
2925                 if (!buffer_mapped(bh))
2926                         goto unlock;
2927         }
2928
2929         /* Ok, it's mapped. Make sure it's up-to-date */
2930         if (PageUptodate(page))
2931                 set_buffer_uptodate(bh);
2932
2933         if (!buffer_uptodate(bh) && !buffer_delay(bh) && !buffer_unwritten(bh)) {
2934                 err = -EIO;
2935                 ll_rw_block(REQ_OP_READ, 0, 1, &bh);
2936                 wait_on_buffer(bh);
2937                 /* Uhhuh. Read error. Complain and punt. */
2938                 if (!buffer_uptodate(bh))
2939                         goto unlock;
2940         }
2941
2942         zero_user(page, offset, length);
2943         mark_buffer_dirty(bh);
2944         err = 0;
2945
2946 unlock:
2947         unlock_page(page);
2948         put_page(page);
2949 out:
2950         return err;
2951 }
2952 EXPORT_SYMBOL(block_truncate_page);
2953
2954 /*
2955  * The generic ->writepage function for buffer-backed address_spaces
2956  */
2957 int block_write_full_page(struct page *page, get_block_t *get_block,
2958                         struct writeback_control *wbc)
2959 {
2960         struct inode * const inode = page->mapping->host;
2961         loff_t i_size = i_size_read(inode);
2962         const pgoff_t end_index = i_size >> PAGE_SHIFT;
2963         unsigned offset;
2964
2965         /* Is the page fully inside i_size? */
2966         if (page->index < end_index)
2967                 return __block_write_full_page(inode, page, get_block, wbc,
2968                                                end_buffer_async_write);
2969
2970         /* Is the page fully outside i_size? (truncate in progress) */
2971         offset = i_size & (PAGE_SIZE-1);
2972         if (page->index >= end_index+1 || !offset) {
2973                 /*
2974                  * The page may have dirty, unmapped buffers.  For example,
2975                  * they may have been added in ext3_writepage().  Make them
2976                  * freeable here, so the page does not leak.
2977                  */
2978                 do_invalidatepage(page, 0, PAGE_SIZE);
2979                 unlock_page(page);
2980                 return 0; /* don't care */
2981         }
2982
2983         /*
2984          * The page straddles i_size.  It must be zeroed out on each and every
2985          * writepage invocation because it may be mmapped.  "A file is mapped
2986          * in multiples of the page size.  For a file that is not a multiple of
2987          * the  page size, the remaining memory is zeroed when mapped, and
2988          * writes to that region are not written out to the file."
2989          */
2990         zero_user_segment(page, offset, PAGE_SIZE);
2991         return __block_write_full_page(inode, page, get_block, wbc,
2992                                                         end_buffer_async_write);
2993 }
2994 EXPORT_SYMBOL(block_write_full_page);
2995
2996 sector_t generic_block_bmap(struct address_space *mapping, sector_t block,
2997                             get_block_t *get_block)
2998 {
2999         struct inode *inode = mapping->host;
3000         struct buffer_head tmp = {
3001                 .b_size = i_blocksize(inode),
3002         };
3003
3004         get_block(inode, block, &tmp, 0);
3005         return tmp.b_blocknr;
3006 }
3007 EXPORT_SYMBOL(generic_block_bmap);
3008
3009 static void end_bio_bh_io_sync(struct bio *bio)
3010 {
3011         struct buffer_head *bh = bio->bi_private;
3012
3013         if (unlikely(bio_flagged(bio, BIO_QUIET)))
3014                 set_bit(BH_Quiet, &bh->b_state);
3015
3016         bh->b_end_io(bh, !bio->bi_status);
3017         bio_put(bio);
3018 }
3019
3020 /*
3021  * This allows us to do IO even on the odd last sectors
3022  * of a device, even if the block size is some multiple
3023  * of the physical sector size.
3024  *
3025  * We'll just truncate the bio to the size of the device,
3026  * and clear the end of the buffer head manually.
3027  *
3028  * Truly out-of-range accesses will turn into actual IO
3029  * errors, this only handles the "we need to be able to
3030  * do IO at the final sector" case.
3031  */
3032 void guard_bio_eod(int op, struct bio *bio)
3033 {
3034         sector_t maxsector;
3035         struct bio_vec *bvec = bio_last_bvec_all(bio);
3036         unsigned truncated_bytes;
3037         struct hd_struct *part;
3038
3039         rcu_read_lock();
3040         part = __disk_get_part(bio->bi_disk, bio->bi_partno);
3041         if (part)
3042                 maxsector = part_nr_sects_read(part);
3043         else
3044                 maxsector = get_capacity(bio->bi_disk);
3045         rcu_read_unlock();
3046
3047         if (!maxsector)
3048                 return;
3049
3050         /*
3051          * If the *whole* IO is past the end of the device,
3052          * let it through, and the IO layer will turn it into
3053          * an EIO.
3054          */
3055         if (unlikely(bio->bi_iter.bi_sector >= maxsector))
3056                 return;
3057
3058         maxsector -= bio->bi_iter.bi_sector;
3059         if (likely((bio->bi_iter.bi_size >> 9) <= maxsector))
3060                 return;
3061
3062         /* Uhhuh. We've got a bio that straddles the device size! */
3063         truncated_bytes = bio->bi_iter.bi_size - (maxsector << 9);
3064
3065         /*
3066          * The bio contains more than one segment which spans EOD, just return
3067          * and let IO layer turn it into an EIO
3068          */
3069         if (truncated_bytes > bvec->bv_len)
3070                 return;
3071
3072         /* Truncate the bio.. */
3073         bio->bi_iter.bi_size -= truncated_bytes;
3074         bvec->bv_len -= truncated_bytes;
3075
3076         /* ..and clear the end of the buffer for reads */
3077         if (op == REQ_OP_READ) {
3078                 struct bio_vec bv;
3079
3080                 mp_bvec_last_segment(bvec, &bv);
3081                 zero_user(bv.bv_page, bv.bv_offset + bv.bv_len,
3082                                 truncated_bytes);
3083         }
3084 }
3085
3086 static int submit_bh_wbc(int op, int op_flags, struct buffer_head *bh,
3087                          enum rw_hint write_hint, struct writeback_control *wbc)
3088 {
3089         struct bio *bio;
3090
3091         BUG_ON(!buffer_locked(bh));
3092         BUG_ON(!buffer_mapped(bh));
3093         BUG_ON(!bh->b_end_io);
3094         BUG_ON(buffer_delay(bh));
3095         BUG_ON(buffer_unwritten(bh));
3096
3097         /*
3098          * Only clear out a write error when rewriting
3099          */
3100         if (test_set_buffer_req(bh) && (op == REQ_OP_WRITE))
3101                 clear_buffer_write_io_error(bh);
3102
3103         /*
3104          * from here on down, it's all bio -- do the initial mapping,
3105          * submit_bio -> generic_make_request may further map this bio around
3106          */
3107         bio = bio_alloc(GFP_NOIO, 1);
3108
3109         bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
3110         bio_set_dev(bio, bh->b_bdev);
3111         bio->bi_write_hint = write_hint;
3112
3113         bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
3114         BUG_ON(bio->bi_iter.bi_size != bh->b_size);
3115
3116         bio->bi_end_io = end_bio_bh_io_sync;
3117         bio->bi_private = bh;
3118
3119         /* Take care of bh's that straddle the end of the device */
3120         guard_bio_eod(op, bio);
3121
3122         if (buffer_meta(bh))
3123                 op_flags |= REQ_META;
3124         if (buffer_prio(bh))
3125                 op_flags |= REQ_PRIO;
3126         bio_set_op_attrs(bio, op, op_flags);
3127
3128         if (wbc) {
3129                 wbc_init_bio(wbc, bio);
3130                 wbc_account_cgroup_owner(wbc, bh->b_page, bh->b_size);
3131         }
3132
3133         submit_bio(bio);
3134         return 0;
3135 }
3136
3137 int submit_bh(int op, int op_flags, struct buffer_head *bh)
3138 {
3139         return submit_bh_wbc(op, op_flags, bh, 0, NULL);
3140 }
3141 EXPORT_SYMBOL(submit_bh);
3142
3143 /**
3144  * ll_rw_block: low-level access to block devices (DEPRECATED)
3145  * @op: whether to %READ or %WRITE
3146  * @op_flags: req_flag_bits
3147  * @nr: number of &struct buffer_heads in the array
3148  * @bhs: array of pointers to &struct buffer_head
3149  *
3150  * ll_rw_block() takes an array of pointers to &struct buffer_heads, and
3151  * requests an I/O operation on them, either a %REQ_OP_READ or a %REQ_OP_WRITE.
3152  * @op_flags contains flags modifying the detailed I/O behavior, most notably
3153  * %REQ_RAHEAD.
3154  *
3155  * This function drops any buffer that it cannot get a lock on (with the
3156  * BH_Lock state bit), any buffer that appears to be clean when doing a write
3157  * request, and any buffer that appears to be up-to-date when doing read
3158  * request.  Further it marks as clean buffers that are processed for
3159  * writing (the buffer cache won't assume that they are actually clean
3160  * until the buffer gets unlocked).
3161  *
3162  * ll_rw_block sets b_end_io to simple completion handler that marks
3163  * the buffer up-to-date (if appropriate), unlocks the buffer and wakes
3164  * any waiters. 
3165  *
3166  * All of the buffers must be for the same device, and must also be a
3167  * multiple of the current approved size for the device.
3168  */
3169 void ll_rw_block(int op, int op_flags,  int nr, struct buffer_head *bhs[])
3170 {
3171         int i;
3172
3173         for (i = 0; i < nr; i++) {
3174                 struct buffer_head *bh = bhs[i];
3175
3176                 if (!trylock_buffer(bh))
3177                         continue;
3178                 if (op == WRITE) {
3179                         if (test_clear_buffer_dirty(bh)) {
3180                                 bh->b_end_io = end_buffer_write_sync;
3181                                 get_bh(bh);
3182                                 submit_bh(op, op_flags, bh);
3183                                 continue;
3184                         }
3185                 } else {
3186                         if (!buffer_uptodate(bh)) {
3187                                 bh->b_end_io = end_buffer_read_sync;
3188                                 get_bh(bh);
3189                                 submit_bh(op, op_flags, bh);
3190                                 continue;
3191                         }
3192                 }
3193                 unlock_buffer(bh);
3194         }
3195 }
3196 EXPORT_SYMBOL(ll_rw_block);
3197
3198 void write_dirty_buffer(struct buffer_head *bh, int op_flags)
3199 {
3200         lock_buffer(bh);
3201         if (!test_clear_buffer_dirty(bh)) {
3202                 unlock_buffer(bh);
3203                 return;
3204         }
3205         bh->b_end_io = end_buffer_write_sync;
3206         get_bh(bh);
3207         submit_bh(REQ_OP_WRITE, op_flags, bh);
3208 }
3209 EXPORT_SYMBOL(write_dirty_buffer);
3210
3211 /*
3212  * For a data-integrity writeout, we need to wait upon any in-progress I/O
3213  * and then start new I/O and then wait upon it.  The caller must have a ref on
3214  * the buffer_head.
3215  */
3216 int __sync_dirty_buffer(struct buffer_head *bh, int op_flags)
3217 {
3218         int ret = 0;
3219
3220         WARN_ON(atomic_read(&bh->b_count) < 1);
3221         lock_buffer(bh);
3222         if (test_clear_buffer_dirty(bh)) {
3223                 get_bh(bh);
3224                 bh->b_end_io = end_buffer_write_sync;
3225                 ret = submit_bh(REQ_OP_WRITE, op_flags, bh);
3226                 wait_on_buffer(bh);
3227                 if (!ret && !buffer_uptodate(bh))
3228                         ret = -EIO;
3229         } else {
3230                 unlock_buffer(bh);
3231         }
3232         return ret;
3233 }
3234 EXPORT_SYMBOL(__sync_dirty_buffer);
3235
3236 int sync_dirty_buffer(struct buffer_head *bh)
3237 {
3238         return __sync_dirty_buffer(bh, REQ_SYNC);
3239 }
3240 EXPORT_SYMBOL(sync_dirty_buffer);
3241
3242 /*
3243  * try_to_free_buffers() checks if all the buffers on this particular page
3244  * are unused, and releases them if so.
3245  *
3246  * Exclusion against try_to_free_buffers may be obtained by either
3247  * locking the page or by holding its mapping's private_lock.
3248  *
3249  * If the page is dirty but all the buffers are clean then we need to
3250  * be sure to mark the page clean as well.  This is because the page
3251  * may be against a block device, and a later reattachment of buffers
3252  * to a dirty page will set *all* buffers dirty.  Which would corrupt
3253  * filesystem data on the same device.
3254  *
3255  * The same applies to regular filesystem pages: if all the buffers are
3256  * clean then we set the page clean and proceed.  To do that, we require
3257  * total exclusion from __set_page_dirty_buffers().  That is obtained with
3258  * private_lock.
3259  *
3260  * try_to_free_buffers() is non-blocking.
3261  */
3262 static inline int buffer_busy(struct buffer_head *bh)
3263 {
3264         return atomic_read(&bh->b_count) |
3265                 (bh->b_state & ((1 << BH_Dirty) | (1 << BH_Lock)));
3266 }
3267
3268 static int
3269 drop_buffers(struct page *page, struct buffer_head **buffers_to_free)
3270 {
3271         struct buffer_head *head = page_buffers(page);
3272         struct buffer_head *bh;
3273
3274         bh = head;
3275         do {
3276                 if (buffer_busy(bh))
3277                         goto failed;
3278                 bh = bh->b_this_page;
3279         } while (bh != head);
3280
3281         do {
3282                 struct buffer_head *next = bh->b_this_page;
3283
3284                 if (bh->b_assoc_map)
3285                         __remove_assoc_queue(bh);
3286                 bh = next;
3287         } while (bh != head);
3288         *buffers_to_free = head;
3289         __clear_page_buffers(page);
3290         return 1;
3291 failed:
3292         return 0;
3293 }
3294
3295 int try_to_free_buffers(struct page *page)
3296 {
3297         struct address_space * const mapping = page->mapping;
3298         struct buffer_head *buffers_to_free = NULL;
3299         int ret = 0;
3300
3301         BUG_ON(!PageLocked(page));
3302         if (PageWriteback(page))
3303                 return 0;
3304
3305         if (mapping == NULL) {          /* can this still happen? */
3306                 ret = drop_buffers(page, &buffers_to_free);
3307                 goto out;
3308         }
3309
3310         spin_lock(&mapping->private_lock);
3311         ret = drop_buffers(page, &buffers_to_free);
3312
3313         /*
3314          * If the filesystem writes its buffers by hand (eg ext3)
3315          * then we can have clean buffers against a dirty page.  We
3316          * clean the page here; otherwise the VM will never notice
3317          * that the filesystem did any IO at all.
3318          *
3319          * Also, during truncate, discard_buffer will have marked all
3320          * the page's buffers clean.  We discover that here and clean
3321          * the page also.
3322          *
3323          * private_lock must be held over this entire operation in order
3324          * to synchronise against __set_page_dirty_buffers and prevent the
3325          * dirty bit from being lost.
3326          */
3327         if (ret)
3328                 cancel_dirty_page(page);
3329         spin_unlock(&mapping->private_lock);
3330 out:
3331         if (buffers_to_free) {
3332                 struct buffer_head *bh = buffers_to_free;
3333
3334                 do {
3335                         struct buffer_head *next = bh->b_this_page;
3336                         free_buffer_head(bh);
3337                         bh = next;
3338                 } while (bh != buffers_to_free);
3339         }
3340         return ret;
3341 }
3342 EXPORT_SYMBOL(try_to_free_buffers);
3343
3344 /*
3345  * There are no bdflush tunables left.  But distributions are
3346  * still running obsolete flush daemons, so we terminate them here.
3347  *
3348  * Use of bdflush() is deprecated and will be removed in a future kernel.
3349  * The `flush-X' kernel threads fully replace bdflush daemons and this call.
3350  */
3351 SYSCALL_DEFINE2(bdflush, int, func, long, data)
3352 {
3353         static int msg_count;
3354
3355         if (!capable(CAP_SYS_ADMIN))
3356                 return -EPERM;
3357
3358         if (msg_count < 5) {
3359                 msg_count++;
3360                 printk(KERN_INFO
3361                         "warning: process `%s' used the obsolete bdflush"
3362                         " system call\n", current->comm);
3363                 printk(KERN_INFO "Fix your initscripts?\n");
3364         }
3365
3366         if (func == 1)
3367                 do_exit(0);
3368         return 0;
3369 }
3370
3371 /*
3372  * Buffer-head allocation
3373  */
3374 static struct kmem_cache *bh_cachep __read_mostly;
3375
3376 /*
3377  * Once the number of bh's in the machine exceeds this level, we start
3378  * stripping them in writeback.
3379  */
3380 static unsigned long max_buffer_heads;
3381
3382 int buffer_heads_over_limit;
3383
3384 struct bh_accounting {
3385         int nr;                 /* Number of live bh's */
3386         int ratelimit;          /* Limit cacheline bouncing */
3387 };
3388
3389 static DEFINE_PER_CPU(struct bh_accounting, bh_accounting) = {0, 0};
3390
3391 static void recalc_bh_state(void)
3392 {
3393         int i;
3394         int tot = 0;
3395
3396         if (__this_cpu_inc_return(bh_accounting.ratelimit) - 1 < 4096)
3397                 return;
3398         __this_cpu_write(bh_accounting.ratelimit, 0);
3399         for_each_online_cpu(i)
3400                 tot += per_cpu(bh_accounting, i).nr;
3401         buffer_heads_over_limit = (tot > max_buffer_heads);
3402 }
3403
3404 struct buffer_head *alloc_buffer_head(gfp_t gfp_flags)
3405 {
3406         struct buffer_head *ret = kmem_cache_zalloc(bh_cachep, gfp_flags);
3407         if (ret) {
3408                 INIT_LIST_HEAD(&ret->b_assoc_buffers);
3409                 preempt_disable();
3410                 __this_cpu_inc(bh_accounting.nr);
3411                 recalc_bh_state();
3412                 preempt_enable();
3413         }
3414         return ret;
3415 }
3416 EXPORT_SYMBOL(alloc_buffer_head);
3417
3418 void free_buffer_head(struct buffer_head *bh)
3419 {
3420         BUG_ON(!list_empty(&bh->b_assoc_buffers));
3421         kmem_cache_free(bh_cachep, bh);
3422         preempt_disable();
3423         __this_cpu_dec(bh_accounting.nr);
3424         recalc_bh_state();
3425         preempt_enable();
3426 }
3427 EXPORT_SYMBOL(free_buffer_head);
3428
3429 static int buffer_exit_cpu_dead(unsigned int cpu)
3430 {
3431         int i;
3432         struct bh_lru *b = &per_cpu(bh_lrus, cpu);
3433
3434         for (i = 0; i < BH_LRU_SIZE; i++) {
3435                 brelse(b->bhs[i]);
3436                 b->bhs[i] = NULL;
3437         }
3438         this_cpu_add(bh_accounting.nr, per_cpu(bh_accounting, cpu).nr);
3439         per_cpu(bh_accounting, cpu).nr = 0;
3440         return 0;
3441 }
3442
3443 /**
3444  * bh_uptodate_or_lock - Test whether the buffer is uptodate
3445  * @bh: struct buffer_head
3446  *
3447  * Return true if the buffer is up-to-date and false,
3448  * with the buffer locked, if not.
3449  */
3450 int bh_uptodate_or_lock(struct buffer_head *bh)
3451 {
3452         if (!buffer_uptodate(bh)) {
3453                 lock_buffer(bh);
3454                 if (!buffer_uptodate(bh))
3455                         return 0;
3456                 unlock_buffer(bh);
3457         }
3458         return 1;
3459 }
3460 EXPORT_SYMBOL(bh_uptodate_or_lock);
3461
3462 /**
3463  * bh_submit_read - Submit a locked buffer for reading
3464  * @bh: struct buffer_head
3465  *
3466  * Returns zero on success and -EIO on error.
3467  */
3468 int bh_submit_read(struct buffer_head *bh)
3469 {
3470         BUG_ON(!buffer_locked(bh));
3471
3472         if (buffer_uptodate(bh)) {
3473                 unlock_buffer(bh);
3474                 return 0;
3475         }
3476
3477         get_bh(bh);
3478         bh->b_end_io = end_buffer_read_sync;
3479         submit_bh(REQ_OP_READ, 0, bh);
3480         wait_on_buffer(bh);
3481         if (buffer_uptodate(bh))
3482                 return 0;
3483         return -EIO;
3484 }
3485 EXPORT_SYMBOL(bh_submit_read);
3486
3487 void __init buffer_init(void)
3488 {
3489         unsigned long nrpages;
3490         int ret;
3491
3492         bh_cachep = kmem_cache_create("buffer_head",
3493                         sizeof(struct buffer_head), 0,
3494                                 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
3495                                 SLAB_MEM_SPREAD),
3496                                 NULL);
3497
3498         /*
3499          * Limit the bh occupancy to 10% of ZONE_NORMAL
3500          */
3501         nrpages = (nr_free_buffer_pages() * 10) / 100;
3502         max_buffer_heads = nrpages * (PAGE_SIZE / sizeof(struct buffer_head));
3503         ret = cpuhp_setup_state_nocalls(CPUHP_FS_BUFF_DEAD, "fs/buffer:dead",
3504                                         NULL, buffer_exit_cpu_dead);
3505         WARN_ON(ret < 0);
3506 }