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