Merge branch 'from-tomtucker' into for-2.6.28
[linux-2.6] / fs / xfs / linux-2.6 / xfs_aops.c
1 /*
2  * Copyright (c) 2000-2005 Silicon Graphics, Inc.
3  * All Rights Reserved.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it would be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write the Free Software Foundation,
16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18 #include "xfs.h"
19 #include "xfs_bit.h"
20 #include "xfs_log.h"
21 #include "xfs_inum.h"
22 #include "xfs_sb.h"
23 #include "xfs_ag.h"
24 #include "xfs_dir2.h"
25 #include "xfs_trans.h"
26 #include "xfs_dmapi.h"
27 #include "xfs_mount.h"
28 #include "xfs_bmap_btree.h"
29 #include "xfs_alloc_btree.h"
30 #include "xfs_ialloc_btree.h"
31 #include "xfs_dir2_sf.h"
32 #include "xfs_attr_sf.h"
33 #include "xfs_dinode.h"
34 #include "xfs_inode.h"
35 #include "xfs_alloc.h"
36 #include "xfs_btree.h"
37 #include "xfs_error.h"
38 #include "xfs_rw.h"
39 #include "xfs_iomap.h"
40 #include "xfs_vnodeops.h"
41 #include <linux/mpage.h>
42 #include <linux/pagevec.h>
43 #include <linux/writeback.h>
44
45 STATIC void
46 xfs_count_page_state(
47         struct page             *page,
48         int                     *delalloc,
49         int                     *unmapped,
50         int                     *unwritten)
51 {
52         struct buffer_head      *bh, *head;
53
54         *delalloc = *unmapped = *unwritten = 0;
55
56         bh = head = page_buffers(page);
57         do {
58                 if (buffer_uptodate(bh) && !buffer_mapped(bh))
59                         (*unmapped) = 1;
60                 else if (buffer_unwritten(bh))
61                         (*unwritten) = 1;
62                 else if (buffer_delay(bh))
63                         (*delalloc) = 1;
64         } while ((bh = bh->b_this_page) != head);
65 }
66
67 #if defined(XFS_RW_TRACE)
68 void
69 xfs_page_trace(
70         int             tag,
71         struct inode    *inode,
72         struct page     *page,
73         unsigned long   pgoff)
74 {
75         xfs_inode_t     *ip;
76         loff_t          isize = i_size_read(inode);
77         loff_t          offset = page_offset(page);
78         int             delalloc = -1, unmapped = -1, unwritten = -1;
79
80         if (page_has_buffers(page))
81                 xfs_count_page_state(page, &delalloc, &unmapped, &unwritten);
82
83         ip = XFS_I(inode);
84         if (!ip->i_rwtrace)
85                 return;
86
87         ktrace_enter(ip->i_rwtrace,
88                 (void *)((unsigned long)tag),
89                 (void *)ip,
90                 (void *)inode,
91                 (void *)page,
92                 (void *)pgoff,
93                 (void *)((unsigned long)((ip->i_d.di_size >> 32) & 0xffffffff)),
94                 (void *)((unsigned long)(ip->i_d.di_size & 0xffffffff)),
95                 (void *)((unsigned long)((isize >> 32) & 0xffffffff)),
96                 (void *)((unsigned long)(isize & 0xffffffff)),
97                 (void *)((unsigned long)((offset >> 32) & 0xffffffff)),
98                 (void *)((unsigned long)(offset & 0xffffffff)),
99                 (void *)((unsigned long)delalloc),
100                 (void *)((unsigned long)unmapped),
101                 (void *)((unsigned long)unwritten),
102                 (void *)((unsigned long)current_pid()),
103                 (void *)NULL);
104 }
105 #else
106 #define xfs_page_trace(tag, inode, page, pgoff)
107 #endif
108
109 STATIC struct block_device *
110 xfs_find_bdev_for_inode(
111         struct xfs_inode        *ip)
112 {
113         struct xfs_mount        *mp = ip->i_mount;
114
115         if (XFS_IS_REALTIME_INODE(ip))
116                 return mp->m_rtdev_targp->bt_bdev;
117         else
118                 return mp->m_ddev_targp->bt_bdev;
119 }
120
121 /*
122  * Schedule IO completion handling on a xfsdatad if this was
123  * the final hold on this ioend. If we are asked to wait,
124  * flush the workqueue.
125  */
126 STATIC void
127 xfs_finish_ioend(
128         xfs_ioend_t     *ioend,
129         int             wait)
130 {
131         if (atomic_dec_and_test(&ioend->io_remaining)) {
132                 queue_work(xfsdatad_workqueue, &ioend->io_work);
133                 if (wait)
134                         flush_workqueue(xfsdatad_workqueue);
135         }
136 }
137
138 /*
139  * We're now finished for good with this ioend structure.
140  * Update the page state via the associated buffer_heads,
141  * release holds on the inode and bio, and finally free
142  * up memory.  Do not use the ioend after this.
143  */
144 STATIC void
145 xfs_destroy_ioend(
146         xfs_ioend_t             *ioend)
147 {
148         struct buffer_head      *bh, *next;
149
150         for (bh = ioend->io_buffer_head; bh; bh = next) {
151                 next = bh->b_private;
152                 bh->b_end_io(bh, !ioend->io_error);
153         }
154         if (unlikely(ioend->io_error)) {
155                 vn_ioerror(XFS_I(ioend->io_inode), ioend->io_error,
156                                 __FILE__,__LINE__);
157         }
158         vn_iowake(XFS_I(ioend->io_inode));
159         mempool_free(ioend, xfs_ioend_pool);
160 }
161
162 /*
163  * Update on-disk file size now that data has been written to disk.
164  * The current in-memory file size is i_size.  If a write is beyond
165  * eof i_new_size will be the intended file size until i_size is
166  * updated.  If this write does not extend all the way to the valid
167  * file size then restrict this update to the end of the write.
168  */
169 STATIC void
170 xfs_setfilesize(
171         xfs_ioend_t             *ioend)
172 {
173         xfs_inode_t             *ip = XFS_I(ioend->io_inode);
174         xfs_fsize_t             isize;
175         xfs_fsize_t             bsize;
176
177         ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFREG);
178         ASSERT(ioend->io_type != IOMAP_READ);
179
180         if (unlikely(ioend->io_error))
181                 return;
182
183         bsize = ioend->io_offset + ioend->io_size;
184
185         xfs_ilock(ip, XFS_ILOCK_EXCL);
186
187         isize = MAX(ip->i_size, ip->i_new_size);
188         isize = MIN(isize, bsize);
189
190         if (ip->i_d.di_size < isize) {
191                 ip->i_d.di_size = isize;
192                 ip->i_update_core = 1;
193                 ip->i_update_size = 1;
194                 mark_inode_dirty_sync(ioend->io_inode);
195         }
196
197         xfs_iunlock(ip, XFS_ILOCK_EXCL);
198 }
199
200 /*
201  * Buffered IO write completion for delayed allocate extents.
202  */
203 STATIC void
204 xfs_end_bio_delalloc(
205         struct work_struct      *work)
206 {
207         xfs_ioend_t             *ioend =
208                 container_of(work, xfs_ioend_t, io_work);
209
210         xfs_setfilesize(ioend);
211         xfs_destroy_ioend(ioend);
212 }
213
214 /*
215  * Buffered IO write completion for regular, written extents.
216  */
217 STATIC void
218 xfs_end_bio_written(
219         struct work_struct      *work)
220 {
221         xfs_ioend_t             *ioend =
222                 container_of(work, xfs_ioend_t, io_work);
223
224         xfs_setfilesize(ioend);
225         xfs_destroy_ioend(ioend);
226 }
227
228 /*
229  * IO write completion for unwritten extents.
230  *
231  * Issue transactions to convert a buffer range from unwritten
232  * to written extents.
233  */
234 STATIC void
235 xfs_end_bio_unwritten(
236         struct work_struct      *work)
237 {
238         xfs_ioend_t             *ioend =
239                 container_of(work, xfs_ioend_t, io_work);
240         struct xfs_inode        *ip = XFS_I(ioend->io_inode);
241         xfs_off_t               offset = ioend->io_offset;
242         size_t                  size = ioend->io_size;
243
244         if (likely(!ioend->io_error)) {
245                 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
246                         int error;
247                         error = xfs_iomap_write_unwritten(ip, offset, size);
248                         if (error)
249                                 ioend->io_error = error;
250                 }
251                 xfs_setfilesize(ioend);
252         }
253         xfs_destroy_ioend(ioend);
254 }
255
256 /*
257  * IO read completion for regular, written extents.
258  */
259 STATIC void
260 xfs_end_bio_read(
261         struct work_struct      *work)
262 {
263         xfs_ioend_t             *ioend =
264                 container_of(work, xfs_ioend_t, io_work);
265
266         xfs_destroy_ioend(ioend);
267 }
268
269 /*
270  * Allocate and initialise an IO completion structure.
271  * We need to track unwritten extent write completion here initially.
272  * We'll need to extend this for updating the ondisk inode size later
273  * (vs. incore size).
274  */
275 STATIC xfs_ioend_t *
276 xfs_alloc_ioend(
277         struct inode            *inode,
278         unsigned int            type)
279 {
280         xfs_ioend_t             *ioend;
281
282         ioend = mempool_alloc(xfs_ioend_pool, GFP_NOFS);
283
284         /*
285          * Set the count to 1 initially, which will prevent an I/O
286          * completion callback from happening before we have started
287          * all the I/O from calling the completion routine too early.
288          */
289         atomic_set(&ioend->io_remaining, 1);
290         ioend->io_error = 0;
291         ioend->io_list = NULL;
292         ioend->io_type = type;
293         ioend->io_inode = inode;
294         ioend->io_buffer_head = NULL;
295         ioend->io_buffer_tail = NULL;
296         atomic_inc(&XFS_I(ioend->io_inode)->i_iocount);
297         ioend->io_offset = 0;
298         ioend->io_size = 0;
299
300         if (type == IOMAP_UNWRITTEN)
301                 INIT_WORK(&ioend->io_work, xfs_end_bio_unwritten);
302         else if (type == IOMAP_DELAY)
303                 INIT_WORK(&ioend->io_work, xfs_end_bio_delalloc);
304         else if (type == IOMAP_READ)
305                 INIT_WORK(&ioend->io_work, xfs_end_bio_read);
306         else
307                 INIT_WORK(&ioend->io_work, xfs_end_bio_written);
308
309         return ioend;
310 }
311
312 STATIC int
313 xfs_map_blocks(
314         struct inode            *inode,
315         loff_t                  offset,
316         ssize_t                 count,
317         xfs_iomap_t             *mapp,
318         int                     flags)
319 {
320         xfs_inode_t             *ip = XFS_I(inode);
321         int                     error, nmaps = 1;
322
323         error = xfs_iomap(ip, offset, count,
324                                 flags, mapp, &nmaps);
325         if (!error && (flags & (BMAPI_WRITE|BMAPI_ALLOCATE)))
326                 xfs_iflags_set(ip, XFS_IMODIFIED);
327         return -error;
328 }
329
330 STATIC_INLINE int
331 xfs_iomap_valid(
332         xfs_iomap_t             *iomapp,
333         loff_t                  offset)
334 {
335         return offset >= iomapp->iomap_offset &&
336                 offset < iomapp->iomap_offset + iomapp->iomap_bsize;
337 }
338
339 /*
340  * BIO completion handler for buffered IO.
341  */
342 STATIC void
343 xfs_end_bio(
344         struct bio              *bio,
345         int                     error)
346 {
347         xfs_ioend_t             *ioend = bio->bi_private;
348
349         ASSERT(atomic_read(&bio->bi_cnt) >= 1);
350         ioend->io_error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? 0 : error;
351
352         /* Toss bio and pass work off to an xfsdatad thread */
353         bio->bi_private = NULL;
354         bio->bi_end_io = NULL;
355         bio_put(bio);
356
357         xfs_finish_ioend(ioend, 0);
358 }
359
360 STATIC void
361 xfs_submit_ioend_bio(
362         xfs_ioend_t     *ioend,
363         struct bio      *bio)
364 {
365         atomic_inc(&ioend->io_remaining);
366
367         bio->bi_private = ioend;
368         bio->bi_end_io = xfs_end_bio;
369
370         submit_bio(WRITE, bio);
371         ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP));
372         bio_put(bio);
373 }
374
375 STATIC struct bio *
376 xfs_alloc_ioend_bio(
377         struct buffer_head      *bh)
378 {
379         struct bio              *bio;
380         int                     nvecs = bio_get_nr_vecs(bh->b_bdev);
381
382         do {
383                 bio = bio_alloc(GFP_NOIO, nvecs);
384                 nvecs >>= 1;
385         } while (!bio);
386
387         ASSERT(bio->bi_private == NULL);
388         bio->bi_sector = bh->b_blocknr * (bh->b_size >> 9);
389         bio->bi_bdev = bh->b_bdev;
390         bio_get(bio);
391         return bio;
392 }
393
394 STATIC void
395 xfs_start_buffer_writeback(
396         struct buffer_head      *bh)
397 {
398         ASSERT(buffer_mapped(bh));
399         ASSERT(buffer_locked(bh));
400         ASSERT(!buffer_delay(bh));
401         ASSERT(!buffer_unwritten(bh));
402
403         mark_buffer_async_write(bh);
404         set_buffer_uptodate(bh);
405         clear_buffer_dirty(bh);
406 }
407
408 STATIC void
409 xfs_start_page_writeback(
410         struct page             *page,
411         int                     clear_dirty,
412         int                     buffers)
413 {
414         ASSERT(PageLocked(page));
415         ASSERT(!PageWriteback(page));
416         if (clear_dirty)
417                 clear_page_dirty_for_io(page);
418         set_page_writeback(page);
419         unlock_page(page);
420         /* If no buffers on the page are to be written, finish it here */
421         if (!buffers)
422                 end_page_writeback(page);
423 }
424
425 static inline int bio_add_buffer(struct bio *bio, struct buffer_head *bh)
426 {
427         return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
428 }
429
430 /*
431  * Submit all of the bios for all of the ioends we have saved up, covering the
432  * initial writepage page and also any probed pages.
433  *
434  * Because we may have multiple ioends spanning a page, we need to start
435  * writeback on all the buffers before we submit them for I/O. If we mark the
436  * buffers as we got, then we can end up with a page that only has buffers
437  * marked async write and I/O complete on can occur before we mark the other
438  * buffers async write.
439  *
440  * The end result of this is that we trip a bug in end_page_writeback() because
441  * we call it twice for the one page as the code in end_buffer_async_write()
442  * assumes that all buffers on the page are started at the same time.
443  *
444  * The fix is two passes across the ioend list - one to start writeback on the
445  * buffer_heads, and then submit them for I/O on the second pass.
446  */
447 STATIC void
448 xfs_submit_ioend(
449         xfs_ioend_t             *ioend)
450 {
451         xfs_ioend_t             *head = ioend;
452         xfs_ioend_t             *next;
453         struct buffer_head      *bh;
454         struct bio              *bio;
455         sector_t                lastblock = 0;
456
457         /* Pass 1 - start writeback */
458         do {
459                 next = ioend->io_list;
460                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private) {
461                         xfs_start_buffer_writeback(bh);
462                 }
463         } while ((ioend = next) != NULL);
464
465         /* Pass 2 - submit I/O */
466         ioend = head;
467         do {
468                 next = ioend->io_list;
469                 bio = NULL;
470
471                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private) {
472
473                         if (!bio) {
474  retry:
475                                 bio = xfs_alloc_ioend_bio(bh);
476                         } else if (bh->b_blocknr != lastblock + 1) {
477                                 xfs_submit_ioend_bio(ioend, bio);
478                                 goto retry;
479                         }
480
481                         if (bio_add_buffer(bio, bh) != bh->b_size) {
482                                 xfs_submit_ioend_bio(ioend, bio);
483                                 goto retry;
484                         }
485
486                         lastblock = bh->b_blocknr;
487                 }
488                 if (bio)
489                         xfs_submit_ioend_bio(ioend, bio);
490                 xfs_finish_ioend(ioend, 0);
491         } while ((ioend = next) != NULL);
492 }
493
494 /*
495  * Cancel submission of all buffer_heads so far in this endio.
496  * Toss the endio too.  Only ever called for the initial page
497  * in a writepage request, so only ever one page.
498  */
499 STATIC void
500 xfs_cancel_ioend(
501         xfs_ioend_t             *ioend)
502 {
503         xfs_ioend_t             *next;
504         struct buffer_head      *bh, *next_bh;
505
506         do {
507                 next = ioend->io_list;
508                 bh = ioend->io_buffer_head;
509                 do {
510                         next_bh = bh->b_private;
511                         clear_buffer_async_write(bh);
512                         unlock_buffer(bh);
513                 } while ((bh = next_bh) != NULL);
514
515                 vn_iowake(XFS_I(ioend->io_inode));
516                 mempool_free(ioend, xfs_ioend_pool);
517         } while ((ioend = next) != NULL);
518 }
519
520 /*
521  * Test to see if we've been building up a completion structure for
522  * earlier buffers -- if so, we try to append to this ioend if we
523  * can, otherwise we finish off any current ioend and start another.
524  * Return true if we've finished the given ioend.
525  */
526 STATIC void
527 xfs_add_to_ioend(
528         struct inode            *inode,
529         struct buffer_head      *bh,
530         xfs_off_t               offset,
531         unsigned int            type,
532         xfs_ioend_t             **result,
533         int                     need_ioend)
534 {
535         xfs_ioend_t             *ioend = *result;
536
537         if (!ioend || need_ioend || type != ioend->io_type) {
538                 xfs_ioend_t     *previous = *result;
539
540                 ioend = xfs_alloc_ioend(inode, type);
541                 ioend->io_offset = offset;
542                 ioend->io_buffer_head = bh;
543                 ioend->io_buffer_tail = bh;
544                 if (previous)
545                         previous->io_list = ioend;
546                 *result = ioend;
547         } else {
548                 ioend->io_buffer_tail->b_private = bh;
549                 ioend->io_buffer_tail = bh;
550         }
551
552         bh->b_private = NULL;
553         ioend->io_size += bh->b_size;
554 }
555
556 STATIC void
557 xfs_map_buffer(
558         struct buffer_head      *bh,
559         xfs_iomap_t             *mp,
560         xfs_off_t               offset,
561         uint                    block_bits)
562 {
563         sector_t                bn;
564
565         ASSERT(mp->iomap_bn != IOMAP_DADDR_NULL);
566
567         bn = (mp->iomap_bn >> (block_bits - BBSHIFT)) +
568               ((offset - mp->iomap_offset) >> block_bits);
569
570         ASSERT(bn || (mp->iomap_flags & IOMAP_REALTIME));
571
572         bh->b_blocknr = bn;
573         set_buffer_mapped(bh);
574 }
575
576 STATIC void
577 xfs_map_at_offset(
578         struct buffer_head      *bh,
579         loff_t                  offset,
580         int                     block_bits,
581         xfs_iomap_t             *iomapp)
582 {
583         ASSERT(!(iomapp->iomap_flags & IOMAP_HOLE));
584         ASSERT(!(iomapp->iomap_flags & IOMAP_DELAY));
585
586         lock_buffer(bh);
587         xfs_map_buffer(bh, iomapp, offset, block_bits);
588         bh->b_bdev = iomapp->iomap_target->bt_bdev;
589         set_buffer_mapped(bh);
590         clear_buffer_delay(bh);
591         clear_buffer_unwritten(bh);
592 }
593
594 /*
595  * Look for a page at index that is suitable for clustering.
596  */
597 STATIC unsigned int
598 xfs_probe_page(
599         struct page             *page,
600         unsigned int            pg_offset,
601         int                     mapped)
602 {
603         int                     ret = 0;
604
605         if (PageWriteback(page))
606                 return 0;
607
608         if (page->mapping && PageDirty(page)) {
609                 if (page_has_buffers(page)) {
610                         struct buffer_head      *bh, *head;
611
612                         bh = head = page_buffers(page);
613                         do {
614                                 if (!buffer_uptodate(bh))
615                                         break;
616                                 if (mapped != buffer_mapped(bh))
617                                         break;
618                                 ret += bh->b_size;
619                                 if (ret >= pg_offset)
620                                         break;
621                         } while ((bh = bh->b_this_page) != head);
622                 } else
623                         ret = mapped ? 0 : PAGE_CACHE_SIZE;
624         }
625
626         return ret;
627 }
628
629 STATIC size_t
630 xfs_probe_cluster(
631         struct inode            *inode,
632         struct page             *startpage,
633         struct buffer_head      *bh,
634         struct buffer_head      *head,
635         int                     mapped)
636 {
637         struct pagevec          pvec;
638         pgoff_t                 tindex, tlast, tloff;
639         size_t                  total = 0;
640         int                     done = 0, i;
641
642         /* First sum forwards in this page */
643         do {
644                 if (!buffer_uptodate(bh) || (mapped != buffer_mapped(bh)))
645                         return total;
646                 total += bh->b_size;
647         } while ((bh = bh->b_this_page) != head);
648
649         /* if we reached the end of the page, sum forwards in following pages */
650         tlast = i_size_read(inode) >> PAGE_CACHE_SHIFT;
651         tindex = startpage->index + 1;
652
653         /* Prune this back to avoid pathological behavior */
654         tloff = min(tlast, startpage->index + 64);
655
656         pagevec_init(&pvec, 0);
657         while (!done && tindex <= tloff) {
658                 unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1);
659
660                 if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len))
661                         break;
662
663                 for (i = 0; i < pagevec_count(&pvec); i++) {
664                         struct page *page = pvec.pages[i];
665                         size_t pg_offset, pg_len = 0;
666
667                         if (tindex == tlast) {
668                                 pg_offset =
669                                     i_size_read(inode) & (PAGE_CACHE_SIZE - 1);
670                                 if (!pg_offset) {
671                                         done = 1;
672                                         break;
673                                 }
674                         } else
675                                 pg_offset = PAGE_CACHE_SIZE;
676
677                         if (page->index == tindex && trylock_page(page)) {
678                                 pg_len = xfs_probe_page(page, pg_offset, mapped);
679                                 unlock_page(page);
680                         }
681
682                         if (!pg_len) {
683                                 done = 1;
684                                 break;
685                         }
686
687                         total += pg_len;
688                         tindex++;
689                 }
690
691                 pagevec_release(&pvec);
692                 cond_resched();
693         }
694
695         return total;
696 }
697
698 /*
699  * Test if a given page is suitable for writing as part of an unwritten
700  * or delayed allocate extent.
701  */
702 STATIC int
703 xfs_is_delayed_page(
704         struct page             *page,
705         unsigned int            type)
706 {
707         if (PageWriteback(page))
708                 return 0;
709
710         if (page->mapping && page_has_buffers(page)) {
711                 struct buffer_head      *bh, *head;
712                 int                     acceptable = 0;
713
714                 bh = head = page_buffers(page);
715                 do {
716                         if (buffer_unwritten(bh))
717                                 acceptable = (type == IOMAP_UNWRITTEN);
718                         else if (buffer_delay(bh))
719                                 acceptable = (type == IOMAP_DELAY);
720                         else if (buffer_dirty(bh) && buffer_mapped(bh))
721                                 acceptable = (type == IOMAP_NEW);
722                         else
723                                 break;
724                 } while ((bh = bh->b_this_page) != head);
725
726                 if (acceptable)
727                         return 1;
728         }
729
730         return 0;
731 }
732
733 /*
734  * Allocate & map buffers for page given the extent map. Write it out.
735  * except for the original page of a writepage, this is called on
736  * delalloc/unwritten pages only, for the original page it is possible
737  * that the page has no mapping at all.
738  */
739 STATIC int
740 xfs_convert_page(
741         struct inode            *inode,
742         struct page             *page,
743         loff_t                  tindex,
744         xfs_iomap_t             *mp,
745         xfs_ioend_t             **ioendp,
746         struct writeback_control *wbc,
747         int                     startio,
748         int                     all_bh)
749 {
750         struct buffer_head      *bh, *head;
751         xfs_off_t               end_offset;
752         unsigned long           p_offset;
753         unsigned int            type;
754         int                     bbits = inode->i_blkbits;
755         int                     len, page_dirty;
756         int                     count = 0, done = 0, uptodate = 1;
757         xfs_off_t               offset = page_offset(page);
758
759         if (page->index != tindex)
760                 goto fail;
761         if (!trylock_page(page))
762                 goto fail;
763         if (PageWriteback(page))
764                 goto fail_unlock_page;
765         if (page->mapping != inode->i_mapping)
766                 goto fail_unlock_page;
767         if (!xfs_is_delayed_page(page, (*ioendp)->io_type))
768                 goto fail_unlock_page;
769
770         /*
771          * page_dirty is initially a count of buffers on the page before
772          * EOF and is decremented as we move each into a cleanable state.
773          *
774          * Derivation:
775          *
776          * End offset is the highest offset that this page should represent.
777          * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1))
778          * will evaluate non-zero and be less than PAGE_CACHE_SIZE and
779          * hence give us the correct page_dirty count. On any other page,
780          * it will be zero and in that case we need page_dirty to be the
781          * count of buffers on the page.
782          */
783         end_offset = min_t(unsigned long long,
784                         (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
785                         i_size_read(inode));
786
787         len = 1 << inode->i_blkbits;
788         p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1),
789                                         PAGE_CACHE_SIZE);
790         p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE;
791         page_dirty = p_offset / len;
792
793         bh = head = page_buffers(page);
794         do {
795                 if (offset >= end_offset)
796                         break;
797                 if (!buffer_uptodate(bh))
798                         uptodate = 0;
799                 if (!(PageUptodate(page) || buffer_uptodate(bh))) {
800                         done = 1;
801                         continue;
802                 }
803
804                 if (buffer_unwritten(bh) || buffer_delay(bh)) {
805                         if (buffer_unwritten(bh))
806                                 type = IOMAP_UNWRITTEN;
807                         else
808                                 type = IOMAP_DELAY;
809
810                         if (!xfs_iomap_valid(mp, offset)) {
811                                 done = 1;
812                                 continue;
813                         }
814
815                         ASSERT(!(mp->iomap_flags & IOMAP_HOLE));
816                         ASSERT(!(mp->iomap_flags & IOMAP_DELAY));
817
818                         xfs_map_at_offset(bh, offset, bbits, mp);
819                         if (startio) {
820                                 xfs_add_to_ioend(inode, bh, offset,
821                                                 type, ioendp, done);
822                         } else {
823                                 set_buffer_dirty(bh);
824                                 unlock_buffer(bh);
825                                 mark_buffer_dirty(bh);
826                         }
827                         page_dirty--;
828                         count++;
829                 } else {
830                         type = IOMAP_NEW;
831                         if (buffer_mapped(bh) && all_bh && startio) {
832                                 lock_buffer(bh);
833                                 xfs_add_to_ioend(inode, bh, offset,
834                                                 type, ioendp, done);
835                                 count++;
836                                 page_dirty--;
837                         } else {
838                                 done = 1;
839                         }
840                 }
841         } while (offset += len, (bh = bh->b_this_page) != head);
842
843         if (uptodate && bh == head)
844                 SetPageUptodate(page);
845
846         if (startio) {
847                 if (count) {
848                         struct backing_dev_info *bdi;
849
850                         bdi = inode->i_mapping->backing_dev_info;
851                         wbc->nr_to_write--;
852                         if (bdi_write_congested(bdi)) {
853                                 wbc->encountered_congestion = 1;
854                                 done = 1;
855                         } else if (wbc->nr_to_write <= 0) {
856                                 done = 1;
857                         }
858                 }
859                 xfs_start_page_writeback(page, !page_dirty, count);
860         }
861
862         return done;
863  fail_unlock_page:
864         unlock_page(page);
865  fail:
866         return 1;
867 }
868
869 /*
870  * Convert & write out a cluster of pages in the same extent as defined
871  * by mp and following the start page.
872  */
873 STATIC void
874 xfs_cluster_write(
875         struct inode            *inode,
876         pgoff_t                 tindex,
877         xfs_iomap_t             *iomapp,
878         xfs_ioend_t             **ioendp,
879         struct writeback_control *wbc,
880         int                     startio,
881         int                     all_bh,
882         pgoff_t                 tlast)
883 {
884         struct pagevec          pvec;
885         int                     done = 0, i;
886
887         pagevec_init(&pvec, 0);
888         while (!done && tindex <= tlast) {
889                 unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1);
890
891                 if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len))
892                         break;
893
894                 for (i = 0; i < pagevec_count(&pvec); i++) {
895                         done = xfs_convert_page(inode, pvec.pages[i], tindex++,
896                                         iomapp, ioendp, wbc, startio, all_bh);
897                         if (done)
898                                 break;
899                 }
900
901                 pagevec_release(&pvec);
902                 cond_resched();
903         }
904 }
905
906 /*
907  * Calling this without startio set means we are being asked to make a dirty
908  * page ready for freeing it's buffers.  When called with startio set then
909  * we are coming from writepage.
910  *
911  * When called with startio set it is important that we write the WHOLE
912  * page if possible.
913  * The bh->b_state's cannot know if any of the blocks or which block for
914  * that matter are dirty due to mmap writes, and therefore bh uptodate is
915  * only valid if the page itself isn't completely uptodate.  Some layers
916  * may clear the page dirty flag prior to calling write page, under the
917  * assumption the entire page will be written out; by not writing out the
918  * whole page the page can be reused before all valid dirty data is
919  * written out.  Note: in the case of a page that has been dirty'd by
920  * mapwrite and but partially setup by block_prepare_write the
921  * bh->b_states's will not agree and only ones setup by BPW/BCW will have
922  * valid state, thus the whole page must be written out thing.
923  */
924
925 STATIC int
926 xfs_page_state_convert(
927         struct inode    *inode,
928         struct page     *page,
929         struct writeback_control *wbc,
930         int             startio,
931         int             unmapped) /* also implies page uptodate */
932 {
933         struct buffer_head      *bh, *head;
934         xfs_iomap_t             iomap;
935         xfs_ioend_t             *ioend = NULL, *iohead = NULL;
936         loff_t                  offset;
937         unsigned long           p_offset = 0;
938         unsigned int            type;
939         __uint64_t              end_offset;
940         pgoff_t                 end_index, last_index, tlast;
941         ssize_t                 size, len;
942         int                     flags, err, iomap_valid = 0, uptodate = 1;
943         int                     page_dirty, count = 0;
944         int                     trylock = 0;
945         int                     all_bh = unmapped;
946
947         if (startio) {
948                 if (wbc->sync_mode == WB_SYNC_NONE && wbc->nonblocking)
949                         trylock |= BMAPI_TRYLOCK;
950         }
951
952         /* Is this page beyond the end of the file? */
953         offset = i_size_read(inode);
954         end_index = offset >> PAGE_CACHE_SHIFT;
955         last_index = (offset - 1) >> PAGE_CACHE_SHIFT;
956         if (page->index >= end_index) {
957                 if ((page->index >= end_index + 1) ||
958                     !(i_size_read(inode) & (PAGE_CACHE_SIZE - 1))) {
959                         if (startio)
960                                 unlock_page(page);
961                         return 0;
962                 }
963         }
964
965         /*
966          * page_dirty is initially a count of buffers on the page before
967          * EOF and is decremented as we move each into a cleanable state.
968          *
969          * Derivation:
970          *
971          * End offset is the highest offset that this page should represent.
972          * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1))
973          * will evaluate non-zero and be less than PAGE_CACHE_SIZE and
974          * hence give us the correct page_dirty count. On any other page,
975          * it will be zero and in that case we need page_dirty to be the
976          * count of buffers on the page.
977          */
978         end_offset = min_t(unsigned long long,
979                         (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT, offset);
980         len = 1 << inode->i_blkbits;
981         p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1),
982                                         PAGE_CACHE_SIZE);
983         p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE;
984         page_dirty = p_offset / len;
985
986         bh = head = page_buffers(page);
987         offset = page_offset(page);
988         flags = BMAPI_READ;
989         type = IOMAP_NEW;
990
991         /* TODO: cleanup count and page_dirty */
992
993         do {
994                 if (offset >= end_offset)
995                         break;
996                 if (!buffer_uptodate(bh))
997                         uptodate = 0;
998                 if (!(PageUptodate(page) || buffer_uptodate(bh)) && !startio) {
999                         /*
1000                          * the iomap is actually still valid, but the ioend
1001                          * isn't.  shouldn't happen too often.
1002                          */
1003                         iomap_valid = 0;
1004                         continue;
1005                 }
1006
1007                 if (iomap_valid)
1008                         iomap_valid = xfs_iomap_valid(&iomap, offset);
1009
1010                 /*
1011                  * First case, map an unwritten extent and prepare for
1012                  * extent state conversion transaction on completion.
1013                  *
1014                  * Second case, allocate space for a delalloc buffer.
1015                  * We can return EAGAIN here in the release page case.
1016                  *
1017                  * Third case, an unmapped buffer was found, and we are
1018                  * in a path where we need to write the whole page out.
1019                  */
1020                 if (buffer_unwritten(bh) || buffer_delay(bh) ||
1021                     ((buffer_uptodate(bh) || PageUptodate(page)) &&
1022                      !buffer_mapped(bh) && (unmapped || startio))) {
1023                         int new_ioend = 0;
1024
1025                         /*
1026                          * Make sure we don't use a read-only iomap
1027                          */
1028                         if (flags == BMAPI_READ)
1029                                 iomap_valid = 0;
1030
1031                         if (buffer_unwritten(bh)) {
1032                                 type = IOMAP_UNWRITTEN;
1033                                 flags = BMAPI_WRITE | BMAPI_IGNSTATE;
1034                         } else if (buffer_delay(bh)) {
1035                                 type = IOMAP_DELAY;
1036                                 flags = BMAPI_ALLOCATE | trylock;
1037                         } else {
1038                                 type = IOMAP_NEW;
1039                                 flags = BMAPI_WRITE | BMAPI_MMAP;
1040                         }
1041
1042                         if (!iomap_valid) {
1043                                 /*
1044                                  * if we didn't have a valid mapping then we
1045                                  * need to ensure that we put the new mapping
1046                                  * in a new ioend structure. This needs to be
1047                                  * done to ensure that the ioends correctly
1048                                  * reflect the block mappings at io completion
1049                                  * for unwritten extent conversion.
1050                                  */
1051                                 new_ioend = 1;
1052                                 if (type == IOMAP_NEW) {
1053                                         size = xfs_probe_cluster(inode,
1054                                                         page, bh, head, 0);
1055                                 } else {
1056                                         size = len;
1057                                 }
1058
1059                                 err = xfs_map_blocks(inode, offset, size,
1060                                                 &iomap, flags);
1061                                 if (err)
1062                                         goto error;
1063                                 iomap_valid = xfs_iomap_valid(&iomap, offset);
1064                         }
1065                         if (iomap_valid) {
1066                                 xfs_map_at_offset(bh, offset,
1067                                                 inode->i_blkbits, &iomap);
1068                                 if (startio) {
1069                                         xfs_add_to_ioend(inode, bh, offset,
1070                                                         type, &ioend,
1071                                                         new_ioend);
1072                                 } else {
1073                                         set_buffer_dirty(bh);
1074                                         unlock_buffer(bh);
1075                                         mark_buffer_dirty(bh);
1076                                 }
1077                                 page_dirty--;
1078                                 count++;
1079                         }
1080                 } else if (buffer_uptodate(bh) && startio) {
1081                         /*
1082                          * we got here because the buffer is already mapped.
1083                          * That means it must already have extents allocated
1084                          * underneath it. Map the extent by reading it.
1085                          */
1086                         if (!iomap_valid || flags != BMAPI_READ) {
1087                                 flags = BMAPI_READ;
1088                                 size = xfs_probe_cluster(inode, page, bh,
1089                                                                 head, 1);
1090                                 err = xfs_map_blocks(inode, offset, size,
1091                                                 &iomap, flags);
1092                                 if (err)
1093                                         goto error;
1094                                 iomap_valid = xfs_iomap_valid(&iomap, offset);
1095                         }
1096
1097                         /*
1098                          * We set the type to IOMAP_NEW in case we are doing a
1099                          * small write at EOF that is extending the file but
1100                          * without needing an allocation. We need to update the
1101                          * file size on I/O completion in this case so it is
1102                          * the same case as having just allocated a new extent
1103                          * that we are writing into for the first time.
1104                          */
1105                         type = IOMAP_NEW;
1106                         if (trylock_buffer(bh)) {
1107                                 ASSERT(buffer_mapped(bh));
1108                                 if (iomap_valid)
1109                                         all_bh = 1;
1110                                 xfs_add_to_ioend(inode, bh, offset, type,
1111                                                 &ioend, !iomap_valid);
1112                                 page_dirty--;
1113                                 count++;
1114                         } else {
1115                                 iomap_valid = 0;
1116                         }
1117                 } else if ((buffer_uptodate(bh) || PageUptodate(page)) &&
1118                            (unmapped || startio)) {
1119                         iomap_valid = 0;
1120                 }
1121
1122                 if (!iohead)
1123                         iohead = ioend;
1124
1125         } while (offset += len, ((bh = bh->b_this_page) != head));
1126
1127         if (uptodate && bh == head)
1128                 SetPageUptodate(page);
1129
1130         if (startio)
1131                 xfs_start_page_writeback(page, 1, count);
1132
1133         if (ioend && iomap_valid) {
1134                 offset = (iomap.iomap_offset + iomap.iomap_bsize - 1) >>
1135                                         PAGE_CACHE_SHIFT;
1136                 tlast = min_t(pgoff_t, offset, last_index);
1137                 xfs_cluster_write(inode, page->index + 1, &iomap, &ioend,
1138                                         wbc, startio, all_bh, tlast);
1139         }
1140
1141         if (iohead)
1142                 xfs_submit_ioend(iohead);
1143
1144         return page_dirty;
1145
1146 error:
1147         if (iohead)
1148                 xfs_cancel_ioend(iohead);
1149
1150         /*
1151          * If it's delalloc and we have nowhere to put it,
1152          * throw it away, unless the lower layers told
1153          * us to try again.
1154          */
1155         if (err != -EAGAIN) {
1156                 if (!unmapped)
1157                         block_invalidatepage(page, 0);
1158                 ClearPageUptodate(page);
1159         }
1160         return err;
1161 }
1162
1163 /*
1164  * writepage: Called from one of two places:
1165  *
1166  * 1. we are flushing a delalloc buffer head.
1167  *
1168  * 2. we are writing out a dirty page. Typically the page dirty
1169  *    state is cleared before we get here. In this case is it
1170  *    conceivable we have no buffer heads.
1171  *
1172  * For delalloc space on the page we need to allocate space and
1173  * flush it. For unmapped buffer heads on the page we should
1174  * allocate space if the page is uptodate. For any other dirty
1175  * buffer heads on the page we should flush them.
1176  *
1177  * If we detect that a transaction would be required to flush
1178  * the page, we have to check the process flags first, if we
1179  * are already in a transaction or disk I/O during allocations
1180  * is off, we need to fail the writepage and redirty the page.
1181  */
1182
1183 STATIC int
1184 xfs_vm_writepage(
1185         struct page             *page,
1186         struct writeback_control *wbc)
1187 {
1188         int                     error;
1189         int                     need_trans;
1190         int                     delalloc, unmapped, unwritten;
1191         struct inode            *inode = page->mapping->host;
1192
1193         xfs_page_trace(XFS_WRITEPAGE_ENTER, inode, page, 0);
1194
1195         /*
1196          * We need a transaction if:
1197          *  1. There are delalloc buffers on the page
1198          *  2. The page is uptodate and we have unmapped buffers
1199          *  3. The page is uptodate and we have no buffers
1200          *  4. There are unwritten buffers on the page
1201          */
1202
1203         if (!page_has_buffers(page)) {
1204                 unmapped = 1;
1205                 need_trans = 1;
1206         } else {
1207                 xfs_count_page_state(page, &delalloc, &unmapped, &unwritten);
1208                 if (!PageUptodate(page))
1209                         unmapped = 0;
1210                 need_trans = delalloc + unmapped + unwritten;
1211         }
1212
1213         /*
1214          * If we need a transaction and the process flags say
1215          * we are already in a transaction, or no IO is allowed
1216          * then mark the page dirty again and leave the page
1217          * as is.
1218          */
1219         if (current_test_flags(PF_FSTRANS) && need_trans)
1220                 goto out_fail;
1221
1222         /*
1223          * Delay hooking up buffer heads until we have
1224          * made our go/no-go decision.
1225          */
1226         if (!page_has_buffers(page))
1227                 create_empty_buffers(page, 1 << inode->i_blkbits, 0);
1228
1229         /*
1230          * Convert delayed allocate, unwritten or unmapped space
1231          * to real space and flush out to disk.
1232          */
1233         error = xfs_page_state_convert(inode, page, wbc, 1, unmapped);
1234         if (error == -EAGAIN)
1235                 goto out_fail;
1236         if (unlikely(error < 0))
1237                 goto out_unlock;
1238
1239         return 0;
1240
1241 out_fail:
1242         redirty_page_for_writepage(wbc, page);
1243         unlock_page(page);
1244         return 0;
1245 out_unlock:
1246         unlock_page(page);
1247         return error;
1248 }
1249
1250 STATIC int
1251 xfs_vm_writepages(
1252         struct address_space    *mapping,
1253         struct writeback_control *wbc)
1254 {
1255         xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1256         return generic_writepages(mapping, wbc);
1257 }
1258
1259 /*
1260  * Called to move a page into cleanable state - and from there
1261  * to be released. Possibly the page is already clean. We always
1262  * have buffer heads in this call.
1263  *
1264  * Returns 0 if the page is ok to release, 1 otherwise.
1265  *
1266  * Possible scenarios are:
1267  *
1268  * 1. We are being called to release a page which has been written
1269  *    to via regular I/O. buffer heads will be dirty and possibly
1270  *    delalloc. If no delalloc buffer heads in this case then we
1271  *    can just return zero.
1272  *
1273  * 2. We are called to release a page which has been written via
1274  *    mmap, all we need to do is ensure there is no delalloc
1275  *    state in the buffer heads, if not we can let the caller
1276  *    free them and we should come back later via writepage.
1277  */
1278 STATIC int
1279 xfs_vm_releasepage(
1280         struct page             *page,
1281         gfp_t                   gfp_mask)
1282 {
1283         struct inode            *inode = page->mapping->host;
1284         int                     dirty, delalloc, unmapped, unwritten;
1285         struct writeback_control wbc = {
1286                 .sync_mode = WB_SYNC_ALL,
1287                 .nr_to_write = 1,
1288         };
1289
1290         xfs_page_trace(XFS_RELEASEPAGE_ENTER, inode, page, 0);
1291
1292         if (!page_has_buffers(page))
1293                 return 0;
1294
1295         xfs_count_page_state(page, &delalloc, &unmapped, &unwritten);
1296         if (!delalloc && !unwritten)
1297                 goto free_buffers;
1298
1299         if (!(gfp_mask & __GFP_FS))
1300                 return 0;
1301
1302         /* If we are already inside a transaction or the thread cannot
1303          * do I/O, we cannot release this page.
1304          */
1305         if (current_test_flags(PF_FSTRANS))
1306                 return 0;
1307
1308         /*
1309          * Convert delalloc space to real space, do not flush the
1310          * data out to disk, that will be done by the caller.
1311          * Never need to allocate space here - we will always
1312          * come back to writepage in that case.
1313          */
1314         dirty = xfs_page_state_convert(inode, page, &wbc, 0, 0);
1315         if (dirty == 0 && !unwritten)
1316                 goto free_buffers;
1317         return 0;
1318
1319 free_buffers:
1320         return try_to_free_buffers(page);
1321 }
1322
1323 STATIC int
1324 __xfs_get_blocks(
1325         struct inode            *inode,
1326         sector_t                iblock,
1327         struct buffer_head      *bh_result,
1328         int                     create,
1329         int                     direct,
1330         bmapi_flags_t           flags)
1331 {
1332         xfs_iomap_t             iomap;
1333         xfs_off_t               offset;
1334         ssize_t                 size;
1335         int                     niomap = 1;
1336         int                     error;
1337
1338         offset = (xfs_off_t)iblock << inode->i_blkbits;
1339         ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1340         size = bh_result->b_size;
1341
1342         if (!create && direct && offset >= i_size_read(inode))
1343                 return 0;
1344
1345         error = xfs_iomap(XFS_I(inode), offset, size,
1346                              create ? flags : BMAPI_READ, &iomap, &niomap);
1347         if (error)
1348                 return -error;
1349         if (niomap == 0)
1350                 return 0;
1351
1352         if (iomap.iomap_bn != IOMAP_DADDR_NULL) {
1353                 /*
1354                  * For unwritten extents do not report a disk address on
1355                  * the read case (treat as if we're reading into a hole).
1356                  */
1357                 if (create || !(iomap.iomap_flags & IOMAP_UNWRITTEN)) {
1358                         xfs_map_buffer(bh_result, &iomap, offset,
1359                                        inode->i_blkbits);
1360                 }
1361                 if (create && (iomap.iomap_flags & IOMAP_UNWRITTEN)) {
1362                         if (direct)
1363                                 bh_result->b_private = inode;
1364                         set_buffer_unwritten(bh_result);
1365                 }
1366         }
1367
1368         /*
1369          * If this is a realtime file, data may be on a different device.
1370          * to that pointed to from the buffer_head b_bdev currently.
1371          */
1372         bh_result->b_bdev = iomap.iomap_target->bt_bdev;
1373
1374         /*
1375          * If we previously allocated a block out beyond eof and we are now
1376          * coming back to use it then we will need to flag it as new even if it
1377          * has a disk address.
1378          *
1379          * With sub-block writes into unwritten extents we also need to mark
1380          * the buffer as new so that the unwritten parts of the buffer gets
1381          * correctly zeroed.
1382          */
1383         if (create &&
1384             ((!buffer_mapped(bh_result) && !buffer_uptodate(bh_result)) ||
1385              (offset >= i_size_read(inode)) ||
1386              (iomap.iomap_flags & (IOMAP_NEW|IOMAP_UNWRITTEN))))
1387                 set_buffer_new(bh_result);
1388
1389         if (iomap.iomap_flags & IOMAP_DELAY) {
1390                 BUG_ON(direct);
1391                 if (create) {
1392                         set_buffer_uptodate(bh_result);
1393                         set_buffer_mapped(bh_result);
1394                         set_buffer_delay(bh_result);
1395                 }
1396         }
1397
1398         if (direct || size > (1 << inode->i_blkbits)) {
1399                 ASSERT(iomap.iomap_bsize - iomap.iomap_delta > 0);
1400                 offset = min_t(xfs_off_t,
1401                                 iomap.iomap_bsize - iomap.iomap_delta, size);
1402                 bh_result->b_size = (ssize_t)min_t(xfs_off_t, LONG_MAX, offset);
1403         }
1404
1405         return 0;
1406 }
1407
1408 int
1409 xfs_get_blocks(
1410         struct inode            *inode,
1411         sector_t                iblock,
1412         struct buffer_head      *bh_result,
1413         int                     create)
1414 {
1415         return __xfs_get_blocks(inode, iblock,
1416                                 bh_result, create, 0, BMAPI_WRITE);
1417 }
1418
1419 STATIC int
1420 xfs_get_blocks_direct(
1421         struct inode            *inode,
1422         sector_t                iblock,
1423         struct buffer_head      *bh_result,
1424         int                     create)
1425 {
1426         return __xfs_get_blocks(inode, iblock,
1427                                 bh_result, create, 1, BMAPI_WRITE|BMAPI_DIRECT);
1428 }
1429
1430 STATIC void
1431 xfs_end_io_direct(
1432         struct kiocb    *iocb,
1433         loff_t          offset,
1434         ssize_t         size,
1435         void            *private)
1436 {
1437         xfs_ioend_t     *ioend = iocb->private;
1438
1439         /*
1440          * Non-NULL private data means we need to issue a transaction to
1441          * convert a range from unwritten to written extents.  This needs
1442          * to happen from process context but aio+dio I/O completion
1443          * happens from irq context so we need to defer it to a workqueue.
1444          * This is not necessary for synchronous direct I/O, but we do
1445          * it anyway to keep the code uniform and simpler.
1446          *
1447          * Well, if only it were that simple. Because synchronous direct I/O
1448          * requires extent conversion to occur *before* we return to userspace,
1449          * we have to wait for extent conversion to complete. Look at the
1450          * iocb that has been passed to us to determine if this is AIO or
1451          * not. If it is synchronous, tell xfs_finish_ioend() to kick the
1452          * workqueue and wait for it to complete.
1453          *
1454          * The core direct I/O code might be changed to always call the
1455          * completion handler in the future, in which case all this can
1456          * go away.
1457          */
1458         ioend->io_offset = offset;
1459         ioend->io_size = size;
1460         if (ioend->io_type == IOMAP_READ) {
1461                 xfs_finish_ioend(ioend, 0);
1462         } else if (private && size > 0) {
1463                 xfs_finish_ioend(ioend, is_sync_kiocb(iocb));
1464         } else {
1465                 /*
1466                  * A direct I/O write ioend starts it's life in unwritten
1467                  * state in case they map an unwritten extent.  This write
1468                  * didn't map an unwritten extent so switch it's completion
1469                  * handler.
1470                  */
1471                 INIT_WORK(&ioend->io_work, xfs_end_bio_written);
1472                 xfs_finish_ioend(ioend, 0);
1473         }
1474
1475         /*
1476          * blockdev_direct_IO can return an error even after the I/O
1477          * completion handler was called.  Thus we need to protect
1478          * against double-freeing.
1479          */
1480         iocb->private = NULL;
1481 }
1482
1483 STATIC ssize_t
1484 xfs_vm_direct_IO(
1485         int                     rw,
1486         struct kiocb            *iocb,
1487         const struct iovec      *iov,
1488         loff_t                  offset,
1489         unsigned long           nr_segs)
1490 {
1491         struct file     *file = iocb->ki_filp;
1492         struct inode    *inode = file->f_mapping->host;
1493         struct block_device *bdev;
1494         ssize_t         ret;
1495
1496         bdev = xfs_find_bdev_for_inode(XFS_I(inode));
1497
1498         if (rw == WRITE) {
1499                 iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN);
1500                 ret = blockdev_direct_IO_own_locking(rw, iocb, inode,
1501                         bdev, iov, offset, nr_segs,
1502                         xfs_get_blocks_direct,
1503                         xfs_end_io_direct);
1504         } else {
1505                 iocb->private = xfs_alloc_ioend(inode, IOMAP_READ);
1506                 ret = blockdev_direct_IO_no_locking(rw, iocb, inode,
1507                         bdev, iov, offset, nr_segs,
1508                         xfs_get_blocks_direct,
1509                         xfs_end_io_direct);
1510         }
1511
1512         if (unlikely(ret != -EIOCBQUEUED && iocb->private))
1513                 xfs_destroy_ioend(iocb->private);
1514         return ret;
1515 }
1516
1517 STATIC int
1518 xfs_vm_write_begin(
1519         struct file             *file,
1520         struct address_space    *mapping,
1521         loff_t                  pos,
1522         unsigned                len,
1523         unsigned                flags,
1524         struct page             **pagep,
1525         void                    **fsdata)
1526 {
1527         *pagep = NULL;
1528         return block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
1529                                                                 xfs_get_blocks);
1530 }
1531
1532 STATIC sector_t
1533 xfs_vm_bmap(
1534         struct address_space    *mapping,
1535         sector_t                block)
1536 {
1537         struct inode            *inode = (struct inode *)mapping->host;
1538         struct xfs_inode        *ip = XFS_I(inode);
1539
1540         xfs_itrace_entry(XFS_I(inode));
1541         xfs_ilock(ip, XFS_IOLOCK_SHARED);
1542         xfs_flush_pages(ip, (xfs_off_t)0, -1, 0, FI_REMAPF);
1543         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
1544         return generic_block_bmap(mapping, block, xfs_get_blocks);
1545 }
1546
1547 STATIC int
1548 xfs_vm_readpage(
1549         struct file             *unused,
1550         struct page             *page)
1551 {
1552         return mpage_readpage(page, xfs_get_blocks);
1553 }
1554
1555 STATIC int
1556 xfs_vm_readpages(
1557         struct file             *unused,
1558         struct address_space    *mapping,
1559         struct list_head        *pages,
1560         unsigned                nr_pages)
1561 {
1562         return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1563 }
1564
1565 STATIC void
1566 xfs_vm_invalidatepage(
1567         struct page             *page,
1568         unsigned long           offset)
1569 {
1570         xfs_page_trace(XFS_INVALIDPAGE_ENTER,
1571                         page->mapping->host, page, offset);
1572         block_invalidatepage(page, offset);
1573 }
1574
1575 const struct address_space_operations xfs_address_space_operations = {
1576         .readpage               = xfs_vm_readpage,
1577         .readpages              = xfs_vm_readpages,
1578         .writepage              = xfs_vm_writepage,
1579         .writepages             = xfs_vm_writepages,
1580         .sync_page              = block_sync_page,
1581         .releasepage            = xfs_vm_releasepage,
1582         .invalidatepage         = xfs_vm_invalidatepage,
1583         .write_begin            = xfs_vm_write_begin,
1584         .write_end              = generic_write_end,
1585         .bmap                   = xfs_vm_bmap,
1586         .direct_IO              = xfs_vm_direct_IO,
1587         .migratepage            = buffer_migrate_page,
1588 };