]> git.karo-electronics.de Git - karo-tx-linux.git/blob - fs/xfs/xfs_aops.c
Merge tag 'blackfin-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/realm...
[karo-tx-linux.git] / fs / xfs / 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_log.h"
20 #include "xfs_sb.h"
21 #include "xfs_ag.h"
22 #include "xfs_trans.h"
23 #include "xfs_mount.h"
24 #include "xfs_bmap_btree.h"
25 #include "xfs_dinode.h"
26 #include "xfs_inode.h"
27 #include "xfs_inode_item.h"
28 #include "xfs_alloc.h"
29 #include "xfs_error.h"
30 #include "xfs_iomap.h"
31 #include "xfs_trace.h"
32 #include "xfs_bmap.h"
33 #include "xfs_bmap_util.h"
34 #include <linux/aio.h>
35 #include <linux/gfp.h>
36 #include <linux/mpage.h>
37 #include <linux/pagevec.h>
38 #include <linux/writeback.h>
39
40 void
41 xfs_count_page_state(
42         struct page             *page,
43         int                     *delalloc,
44         int                     *unwritten)
45 {
46         struct buffer_head      *bh, *head;
47
48         *delalloc = *unwritten = 0;
49
50         bh = head = page_buffers(page);
51         do {
52                 if (buffer_unwritten(bh))
53                         (*unwritten) = 1;
54                 else if (buffer_delay(bh))
55                         (*delalloc) = 1;
56         } while ((bh = bh->b_this_page) != head);
57 }
58
59 STATIC struct block_device *
60 xfs_find_bdev_for_inode(
61         struct inode            *inode)
62 {
63         struct xfs_inode        *ip = XFS_I(inode);
64         struct xfs_mount        *mp = ip->i_mount;
65
66         if (XFS_IS_REALTIME_INODE(ip))
67                 return mp->m_rtdev_targp->bt_bdev;
68         else
69                 return mp->m_ddev_targp->bt_bdev;
70 }
71
72 /*
73  * We're now finished for good with this ioend structure.
74  * Update the page state via the associated buffer_heads,
75  * release holds on the inode and bio, and finally free
76  * up memory.  Do not use the ioend after this.
77  */
78 STATIC void
79 xfs_destroy_ioend(
80         xfs_ioend_t             *ioend)
81 {
82         struct buffer_head      *bh, *next;
83
84         for (bh = ioend->io_buffer_head; bh; bh = next) {
85                 next = bh->b_private;
86                 bh->b_end_io(bh, !ioend->io_error);
87         }
88
89         mempool_free(ioend, xfs_ioend_pool);
90 }
91
92 /*
93  * Fast and loose check if this write could update the on-disk inode size.
94  */
95 static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend)
96 {
97         return ioend->io_offset + ioend->io_size >
98                 XFS_I(ioend->io_inode)->i_d.di_size;
99 }
100
101 STATIC int
102 xfs_setfilesize_trans_alloc(
103         struct xfs_ioend        *ioend)
104 {
105         struct xfs_mount        *mp = XFS_I(ioend->io_inode)->i_mount;
106         struct xfs_trans        *tp;
107         int                     error;
108
109         tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS);
110
111         error = xfs_trans_reserve(tp, &M_RES(mp)->tr_fsyncts, 0, 0);
112         if (error) {
113                 xfs_trans_cancel(tp, 0);
114                 return error;
115         }
116
117         ioend->io_append_trans = tp;
118
119         /*
120          * We may pass freeze protection with a transaction.  So tell lockdep
121          * we released it.
122          */
123         rwsem_release(&ioend->io_inode->i_sb->s_writers.lock_map[SB_FREEZE_FS-1],
124                       1, _THIS_IP_);
125         /*
126          * We hand off the transaction to the completion thread now, so
127          * clear the flag here.
128          */
129         current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS);
130         return 0;
131 }
132
133 /*
134  * Update on-disk file size now that data has been written to disk.
135  */
136 STATIC int
137 xfs_setfilesize(
138         struct xfs_ioend        *ioend)
139 {
140         struct xfs_inode        *ip = XFS_I(ioend->io_inode);
141         struct xfs_trans        *tp = ioend->io_append_trans;
142         xfs_fsize_t             isize;
143
144         /*
145          * The transaction may have been allocated in the I/O submission thread,
146          * thus we need to mark ourselves as beeing in a transaction manually.
147          * Similarly for freeze protection.
148          */
149         current_set_flags_nested(&tp->t_pflags, PF_FSTRANS);
150         rwsem_acquire_read(&VFS_I(ip)->i_sb->s_writers.lock_map[SB_FREEZE_FS-1],
151                            0, 1, _THIS_IP_);
152
153         xfs_ilock(ip, XFS_ILOCK_EXCL);
154         isize = xfs_new_eof(ip, ioend->io_offset + ioend->io_size);
155         if (!isize) {
156                 xfs_iunlock(ip, XFS_ILOCK_EXCL);
157                 xfs_trans_cancel(tp, 0);
158                 return 0;
159         }
160
161         trace_xfs_setfilesize(ip, ioend->io_offset, ioend->io_size);
162
163         ip->i_d.di_size = isize;
164         xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
165         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
166
167         return xfs_trans_commit(tp, 0);
168 }
169
170 /*
171  * Schedule IO completion handling on the final put of an ioend.
172  *
173  * If there is no work to do we might as well call it a day and free the
174  * ioend right now.
175  */
176 STATIC void
177 xfs_finish_ioend(
178         struct xfs_ioend        *ioend)
179 {
180         if (atomic_dec_and_test(&ioend->io_remaining)) {
181                 struct xfs_mount        *mp = XFS_I(ioend->io_inode)->i_mount;
182
183                 if (ioend->io_type == XFS_IO_UNWRITTEN)
184                         queue_work(mp->m_unwritten_workqueue, &ioend->io_work);
185                 else if (ioend->io_append_trans ||
186                          (ioend->io_isdirect && xfs_ioend_is_append(ioend)))
187                         queue_work(mp->m_data_workqueue, &ioend->io_work);
188                 else
189                         xfs_destroy_ioend(ioend);
190         }
191 }
192
193 /*
194  * IO write completion.
195  */
196 STATIC void
197 xfs_end_io(
198         struct work_struct *work)
199 {
200         xfs_ioend_t     *ioend = container_of(work, xfs_ioend_t, io_work);
201         struct xfs_inode *ip = XFS_I(ioend->io_inode);
202         int             error = 0;
203
204         if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {
205                 ioend->io_error = -EIO;
206                 goto done;
207         }
208         if (ioend->io_error)
209                 goto done;
210
211         /*
212          * For unwritten extents we need to issue transactions to convert a
213          * range to normal written extens after the data I/O has finished.
214          */
215         if (ioend->io_type == XFS_IO_UNWRITTEN) {
216                 error = xfs_iomap_write_unwritten(ip, ioend->io_offset,
217                                                   ioend->io_size);
218         } else if (ioend->io_isdirect && xfs_ioend_is_append(ioend)) {
219                 /*
220                  * For direct I/O we do not know if we need to allocate blocks
221                  * or not so we can't preallocate an append transaction as that
222                  * results in nested reservations and log space deadlocks. Hence
223                  * allocate the transaction here. While this is sub-optimal and
224                  * can block IO completion for some time, we're stuck with doing
225                  * it this way until we can pass the ioend to the direct IO
226                  * allocation callbacks and avoid nesting that way.
227                  */
228                 error = xfs_setfilesize_trans_alloc(ioend);
229                 if (error)
230                         goto done;
231                 error = xfs_setfilesize(ioend);
232         } else if (ioend->io_append_trans) {
233                 error = xfs_setfilesize(ioend);
234         } else {
235                 ASSERT(!xfs_ioend_is_append(ioend));
236         }
237
238 done:
239         if (error)
240                 ioend->io_error = -error;
241         xfs_destroy_ioend(ioend);
242 }
243
244 /*
245  * Call IO completion handling in caller context on the final put of an ioend.
246  */
247 STATIC void
248 xfs_finish_ioend_sync(
249         struct xfs_ioend        *ioend)
250 {
251         if (atomic_dec_and_test(&ioend->io_remaining))
252                 xfs_end_io(&ioend->io_work);
253 }
254
255 /*
256  * Allocate and initialise an IO completion structure.
257  * We need to track unwritten extent write completion here initially.
258  * We'll need to extend this for updating the ondisk inode size later
259  * (vs. incore size).
260  */
261 STATIC xfs_ioend_t *
262 xfs_alloc_ioend(
263         struct inode            *inode,
264         unsigned int            type)
265 {
266         xfs_ioend_t             *ioend;
267
268         ioend = mempool_alloc(xfs_ioend_pool, GFP_NOFS);
269
270         /*
271          * Set the count to 1 initially, which will prevent an I/O
272          * completion callback from happening before we have started
273          * all the I/O from calling the completion routine too early.
274          */
275         atomic_set(&ioend->io_remaining, 1);
276         ioend->io_isdirect = 0;
277         ioend->io_error = 0;
278         ioend->io_list = NULL;
279         ioend->io_type = type;
280         ioend->io_inode = inode;
281         ioend->io_buffer_head = NULL;
282         ioend->io_buffer_tail = NULL;
283         ioend->io_offset = 0;
284         ioend->io_size = 0;
285         ioend->io_append_trans = NULL;
286
287         INIT_WORK(&ioend->io_work, xfs_end_io);
288         return ioend;
289 }
290
291 STATIC int
292 xfs_map_blocks(
293         struct inode            *inode,
294         loff_t                  offset,
295         struct xfs_bmbt_irec    *imap,
296         int                     type,
297         int                     nonblocking)
298 {
299         struct xfs_inode        *ip = XFS_I(inode);
300         struct xfs_mount        *mp = ip->i_mount;
301         ssize_t                 count = 1 << inode->i_blkbits;
302         xfs_fileoff_t           offset_fsb, end_fsb;
303         int                     error = 0;
304         int                     bmapi_flags = XFS_BMAPI_ENTIRE;
305         int                     nimaps = 1;
306
307         if (XFS_FORCED_SHUTDOWN(mp))
308                 return -XFS_ERROR(EIO);
309
310         if (type == XFS_IO_UNWRITTEN)
311                 bmapi_flags |= XFS_BMAPI_IGSTATE;
312
313         if (!xfs_ilock_nowait(ip, XFS_ILOCK_SHARED)) {
314                 if (nonblocking)
315                         return -XFS_ERROR(EAGAIN);
316                 xfs_ilock(ip, XFS_ILOCK_SHARED);
317         }
318
319         ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
320                (ip->i_df.if_flags & XFS_IFEXTENTS));
321         ASSERT(offset <= mp->m_super->s_maxbytes);
322
323         if (offset + count > mp->m_super->s_maxbytes)
324                 count = mp->m_super->s_maxbytes - offset;
325         end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
326         offset_fsb = XFS_B_TO_FSBT(mp, offset);
327         error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
328                                 imap, &nimaps, bmapi_flags);
329         xfs_iunlock(ip, XFS_ILOCK_SHARED);
330
331         if (error)
332                 return -XFS_ERROR(error);
333
334         if (type == XFS_IO_DELALLOC &&
335             (!nimaps || isnullstartblock(imap->br_startblock))) {
336                 error = xfs_iomap_write_allocate(ip, offset, count, imap);
337                 if (!error)
338                         trace_xfs_map_blocks_alloc(ip, offset, count, type, imap);
339                 return -XFS_ERROR(error);
340         }
341
342 #ifdef DEBUG
343         if (type == XFS_IO_UNWRITTEN) {
344                 ASSERT(nimaps);
345                 ASSERT(imap->br_startblock != HOLESTARTBLOCK);
346                 ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
347         }
348 #endif
349         if (nimaps)
350                 trace_xfs_map_blocks_found(ip, offset, count, type, imap);
351         return 0;
352 }
353
354 STATIC int
355 xfs_imap_valid(
356         struct inode            *inode,
357         struct xfs_bmbt_irec    *imap,
358         xfs_off_t               offset)
359 {
360         offset >>= inode->i_blkbits;
361
362         return offset >= imap->br_startoff &&
363                 offset < imap->br_startoff + imap->br_blockcount;
364 }
365
366 /*
367  * BIO completion handler for buffered IO.
368  */
369 STATIC void
370 xfs_end_bio(
371         struct bio              *bio,
372         int                     error)
373 {
374         xfs_ioend_t             *ioend = bio->bi_private;
375
376         ASSERT(atomic_read(&bio->bi_cnt) >= 1);
377         ioend->io_error = test_bit(BIO_UPTODATE, &bio->bi_flags) ? 0 : error;
378
379         /* Toss bio and pass work off to an xfsdatad thread */
380         bio->bi_private = NULL;
381         bio->bi_end_io = NULL;
382         bio_put(bio);
383
384         xfs_finish_ioend(ioend);
385 }
386
387 STATIC void
388 xfs_submit_ioend_bio(
389         struct writeback_control *wbc,
390         xfs_ioend_t             *ioend,
391         struct bio              *bio)
392 {
393         atomic_inc(&ioend->io_remaining);
394         bio->bi_private = ioend;
395         bio->bi_end_io = xfs_end_bio;
396         submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE, bio);
397 }
398
399 STATIC struct bio *
400 xfs_alloc_ioend_bio(
401         struct buffer_head      *bh)
402 {
403         int                     nvecs = bio_get_nr_vecs(bh->b_bdev);
404         struct bio              *bio = bio_alloc(GFP_NOIO, nvecs);
405
406         ASSERT(bio->bi_private == NULL);
407         bio->bi_sector = bh->b_blocknr * (bh->b_size >> 9);
408         bio->bi_bdev = bh->b_bdev;
409         return bio;
410 }
411
412 STATIC void
413 xfs_start_buffer_writeback(
414         struct buffer_head      *bh)
415 {
416         ASSERT(buffer_mapped(bh));
417         ASSERT(buffer_locked(bh));
418         ASSERT(!buffer_delay(bh));
419         ASSERT(!buffer_unwritten(bh));
420
421         mark_buffer_async_write(bh);
422         set_buffer_uptodate(bh);
423         clear_buffer_dirty(bh);
424 }
425
426 STATIC void
427 xfs_start_page_writeback(
428         struct page             *page,
429         int                     clear_dirty,
430         int                     buffers)
431 {
432         ASSERT(PageLocked(page));
433         ASSERT(!PageWriteback(page));
434         if (clear_dirty)
435                 clear_page_dirty_for_io(page);
436         set_page_writeback(page);
437         unlock_page(page);
438         /* If no buffers on the page are to be written, finish it here */
439         if (!buffers)
440                 end_page_writeback(page);
441 }
442
443 static inline int xfs_bio_add_buffer(struct bio *bio, struct buffer_head *bh)
444 {
445         return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
446 }
447
448 /*
449  * Submit all of the bios for all of the ioends we have saved up, covering the
450  * initial writepage page and also any probed pages.
451  *
452  * Because we may have multiple ioends spanning a page, we need to start
453  * writeback on all the buffers before we submit them for I/O. If we mark the
454  * buffers as we got, then we can end up with a page that only has buffers
455  * marked async write and I/O complete on can occur before we mark the other
456  * buffers async write.
457  *
458  * The end result of this is that we trip a bug in end_page_writeback() because
459  * we call it twice for the one page as the code in end_buffer_async_write()
460  * assumes that all buffers on the page are started at the same time.
461  *
462  * The fix is two passes across the ioend list - one to start writeback on the
463  * buffer_heads, and then submit them for I/O on the second pass.
464  *
465  * If @fail is non-zero, it means that we have a situation where some part of
466  * the submission process has failed after we have marked paged for writeback
467  * and unlocked them. In this situation, we need to fail the ioend chain rather
468  * than submit it to IO. This typically only happens on a filesystem shutdown.
469  */
470 STATIC void
471 xfs_submit_ioend(
472         struct writeback_control *wbc,
473         xfs_ioend_t             *ioend,
474         int                     fail)
475 {
476         xfs_ioend_t             *head = ioend;
477         xfs_ioend_t             *next;
478         struct buffer_head      *bh;
479         struct bio              *bio;
480         sector_t                lastblock = 0;
481
482         /* Pass 1 - start writeback */
483         do {
484                 next = ioend->io_list;
485                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private)
486                         xfs_start_buffer_writeback(bh);
487         } while ((ioend = next) != NULL);
488
489         /* Pass 2 - submit I/O */
490         ioend = head;
491         do {
492                 next = ioend->io_list;
493                 bio = NULL;
494
495                 /*
496                  * If we are failing the IO now, just mark the ioend with an
497                  * error and finish it. This will run IO completion immediately
498                  * as there is only one reference to the ioend at this point in
499                  * time.
500                  */
501                 if (fail) {
502                         ioend->io_error = -fail;
503                         xfs_finish_ioend(ioend);
504                         continue;
505                 }
506
507                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private) {
508
509                         if (!bio) {
510  retry:
511                                 bio = xfs_alloc_ioend_bio(bh);
512                         } else if (bh->b_blocknr != lastblock + 1) {
513                                 xfs_submit_ioend_bio(wbc, ioend, bio);
514                                 goto retry;
515                         }
516
517                         if (xfs_bio_add_buffer(bio, bh) != bh->b_size) {
518                                 xfs_submit_ioend_bio(wbc, ioend, bio);
519                                 goto retry;
520                         }
521
522                         lastblock = bh->b_blocknr;
523                 }
524                 if (bio)
525                         xfs_submit_ioend_bio(wbc, ioend, bio);
526                 xfs_finish_ioend(ioend);
527         } while ((ioend = next) != NULL);
528 }
529
530 /*
531  * Cancel submission of all buffer_heads so far in this endio.
532  * Toss the endio too.  Only ever called for the initial page
533  * in a writepage request, so only ever one page.
534  */
535 STATIC void
536 xfs_cancel_ioend(
537         xfs_ioend_t             *ioend)
538 {
539         xfs_ioend_t             *next;
540         struct buffer_head      *bh, *next_bh;
541
542         do {
543                 next = ioend->io_list;
544                 bh = ioend->io_buffer_head;
545                 do {
546                         next_bh = bh->b_private;
547                         clear_buffer_async_write(bh);
548                         unlock_buffer(bh);
549                 } while ((bh = next_bh) != NULL);
550
551                 mempool_free(ioend, xfs_ioend_pool);
552         } while ((ioend = next) != NULL);
553 }
554
555 /*
556  * Test to see if we've been building up a completion structure for
557  * earlier buffers -- if so, we try to append to this ioend if we
558  * can, otherwise we finish off any current ioend and start another.
559  * Return true if we've finished the given ioend.
560  */
561 STATIC void
562 xfs_add_to_ioend(
563         struct inode            *inode,
564         struct buffer_head      *bh,
565         xfs_off_t               offset,
566         unsigned int            type,
567         xfs_ioend_t             **result,
568         int                     need_ioend)
569 {
570         xfs_ioend_t             *ioend = *result;
571
572         if (!ioend || need_ioend || type != ioend->io_type) {
573                 xfs_ioend_t     *previous = *result;
574
575                 ioend = xfs_alloc_ioend(inode, type);
576                 ioend->io_offset = offset;
577                 ioend->io_buffer_head = bh;
578                 ioend->io_buffer_tail = bh;
579                 if (previous)
580                         previous->io_list = ioend;
581                 *result = ioend;
582         } else {
583                 ioend->io_buffer_tail->b_private = bh;
584                 ioend->io_buffer_tail = bh;
585         }
586
587         bh->b_private = NULL;
588         ioend->io_size += bh->b_size;
589 }
590
591 STATIC void
592 xfs_map_buffer(
593         struct inode            *inode,
594         struct buffer_head      *bh,
595         struct xfs_bmbt_irec    *imap,
596         xfs_off_t               offset)
597 {
598         sector_t                bn;
599         struct xfs_mount        *m = XFS_I(inode)->i_mount;
600         xfs_off_t               iomap_offset = XFS_FSB_TO_B(m, imap->br_startoff);
601         xfs_daddr_t             iomap_bn = xfs_fsb_to_db(XFS_I(inode), imap->br_startblock);
602
603         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
604         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
605
606         bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
607               ((offset - iomap_offset) >> inode->i_blkbits);
608
609         ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
610
611         bh->b_blocknr = bn;
612         set_buffer_mapped(bh);
613 }
614
615 STATIC void
616 xfs_map_at_offset(
617         struct inode            *inode,
618         struct buffer_head      *bh,
619         struct xfs_bmbt_irec    *imap,
620         xfs_off_t               offset)
621 {
622         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
623         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
624
625         xfs_map_buffer(inode, bh, imap, offset);
626         set_buffer_mapped(bh);
627         clear_buffer_delay(bh);
628         clear_buffer_unwritten(bh);
629 }
630
631 /*
632  * Test if a given page is suitable for writing as part of an unwritten
633  * or delayed allocate extent.
634  */
635 STATIC int
636 xfs_check_page_type(
637         struct page             *page,
638         unsigned int            type)
639 {
640         if (PageWriteback(page))
641                 return 0;
642
643         if (page->mapping && page_has_buffers(page)) {
644                 struct buffer_head      *bh, *head;
645                 int                     acceptable = 0;
646
647                 bh = head = page_buffers(page);
648                 do {
649                         if (buffer_unwritten(bh))
650                                 acceptable += (type == XFS_IO_UNWRITTEN);
651                         else if (buffer_delay(bh))
652                                 acceptable += (type == XFS_IO_DELALLOC);
653                         else if (buffer_dirty(bh) && buffer_mapped(bh))
654                                 acceptable += (type == XFS_IO_OVERWRITE);
655                         else
656                                 break;
657                 } while ((bh = bh->b_this_page) != head);
658
659                 if (acceptable)
660                         return 1;
661         }
662
663         return 0;
664 }
665
666 /*
667  * Allocate & map buffers for page given the extent map. Write it out.
668  * except for the original page of a writepage, this is called on
669  * delalloc/unwritten pages only, for the original page it is possible
670  * that the page has no mapping at all.
671  */
672 STATIC int
673 xfs_convert_page(
674         struct inode            *inode,
675         struct page             *page,
676         loff_t                  tindex,
677         struct xfs_bmbt_irec    *imap,
678         xfs_ioend_t             **ioendp,
679         struct writeback_control *wbc)
680 {
681         struct buffer_head      *bh, *head;
682         xfs_off_t               end_offset;
683         unsigned long           p_offset;
684         unsigned int            type;
685         int                     len, page_dirty;
686         int                     count = 0, done = 0, uptodate = 1;
687         xfs_off_t               offset = page_offset(page);
688
689         if (page->index != tindex)
690                 goto fail;
691         if (!trylock_page(page))
692                 goto fail;
693         if (PageWriteback(page))
694                 goto fail_unlock_page;
695         if (page->mapping != inode->i_mapping)
696                 goto fail_unlock_page;
697         if (!xfs_check_page_type(page, (*ioendp)->io_type))
698                 goto fail_unlock_page;
699
700         /*
701          * page_dirty is initially a count of buffers on the page before
702          * EOF and is decremented as we move each into a cleanable state.
703          *
704          * Derivation:
705          *
706          * End offset is the highest offset that this page should represent.
707          * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1))
708          * will evaluate non-zero and be less than PAGE_CACHE_SIZE and
709          * hence give us the correct page_dirty count. On any other page,
710          * it will be zero and in that case we need page_dirty to be the
711          * count of buffers on the page.
712          */
713         end_offset = min_t(unsigned long long,
714                         (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
715                         i_size_read(inode));
716
717         /*
718          * If the current map does not span the entire page we are about to try
719          * to write, then give up. The only way we can write a page that spans
720          * multiple mappings in a single writeback iteration is via the
721          * xfs_vm_writepage() function. Data integrity writeback requires the
722          * entire page to be written in a single attempt, otherwise the part of
723          * the page we don't write here doesn't get written as part of the data
724          * integrity sync.
725          *
726          * For normal writeback, we also don't attempt to write partial pages
727          * here as it simply means that write_cache_pages() will see it under
728          * writeback and ignore the page until some point in the future, at
729          * which time this will be the only page in the file that needs
730          * writeback.  Hence for more optimal IO patterns, we should always
731          * avoid partial page writeback due to multiple mappings on a page here.
732          */
733         if (!xfs_imap_valid(inode, imap, end_offset))
734                 goto fail_unlock_page;
735
736         len = 1 << inode->i_blkbits;
737         p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1),
738                                         PAGE_CACHE_SIZE);
739         p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE;
740         page_dirty = p_offset / len;
741
742         bh = head = page_buffers(page);
743         do {
744                 if (offset >= end_offset)
745                         break;
746                 if (!buffer_uptodate(bh))
747                         uptodate = 0;
748                 if (!(PageUptodate(page) || buffer_uptodate(bh))) {
749                         done = 1;
750                         continue;
751                 }
752
753                 if (buffer_unwritten(bh) || buffer_delay(bh) ||
754                     buffer_mapped(bh)) {
755                         if (buffer_unwritten(bh))
756                                 type = XFS_IO_UNWRITTEN;
757                         else if (buffer_delay(bh))
758                                 type = XFS_IO_DELALLOC;
759                         else
760                                 type = XFS_IO_OVERWRITE;
761
762                         if (!xfs_imap_valid(inode, imap, offset)) {
763                                 done = 1;
764                                 continue;
765                         }
766
767                         lock_buffer(bh);
768                         if (type != XFS_IO_OVERWRITE)
769                                 xfs_map_at_offset(inode, bh, imap, offset);
770                         xfs_add_to_ioend(inode, bh, offset, type,
771                                          ioendp, done);
772
773                         page_dirty--;
774                         count++;
775                 } else {
776                         done = 1;
777                 }
778         } while (offset += len, (bh = bh->b_this_page) != head);
779
780         if (uptodate && bh == head)
781                 SetPageUptodate(page);
782
783         if (count) {
784                 if (--wbc->nr_to_write <= 0 &&
785                     wbc->sync_mode == WB_SYNC_NONE)
786                         done = 1;
787         }
788         xfs_start_page_writeback(page, !page_dirty, count);
789
790         return done;
791  fail_unlock_page:
792         unlock_page(page);
793  fail:
794         return 1;
795 }
796
797 /*
798  * Convert & write out a cluster of pages in the same extent as defined
799  * by mp and following the start page.
800  */
801 STATIC void
802 xfs_cluster_write(
803         struct inode            *inode,
804         pgoff_t                 tindex,
805         struct xfs_bmbt_irec    *imap,
806         xfs_ioend_t             **ioendp,
807         struct writeback_control *wbc,
808         pgoff_t                 tlast)
809 {
810         struct pagevec          pvec;
811         int                     done = 0, i;
812
813         pagevec_init(&pvec, 0);
814         while (!done && tindex <= tlast) {
815                 unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1);
816
817                 if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len))
818                         break;
819
820                 for (i = 0; i < pagevec_count(&pvec); i++) {
821                         done = xfs_convert_page(inode, pvec.pages[i], tindex++,
822                                         imap, ioendp, wbc);
823                         if (done)
824                                 break;
825                 }
826
827                 pagevec_release(&pvec);
828                 cond_resched();
829         }
830 }
831
832 STATIC void
833 xfs_vm_invalidatepage(
834         struct page             *page,
835         unsigned int            offset,
836         unsigned int            length)
837 {
838         trace_xfs_invalidatepage(page->mapping->host, page, offset,
839                                  length);
840         block_invalidatepage(page, offset, length);
841 }
842
843 /*
844  * If the page has delalloc buffers on it, we need to punch them out before we
845  * invalidate the page. If we don't, we leave a stale delalloc mapping on the
846  * inode that can trip a BUG() in xfs_get_blocks() later on if a direct IO read
847  * is done on that same region - the delalloc extent is returned when none is
848  * supposed to be there.
849  *
850  * We prevent this by truncating away the delalloc regions on the page before
851  * invalidating it. Because they are delalloc, we can do this without needing a
852  * transaction. Indeed - if we get ENOSPC errors, we have to be able to do this
853  * truncation without a transaction as there is no space left for block
854  * reservation (typically why we see a ENOSPC in writeback).
855  *
856  * This is not a performance critical path, so for now just do the punching a
857  * buffer head at a time.
858  */
859 STATIC void
860 xfs_aops_discard_page(
861         struct page             *page)
862 {
863         struct inode            *inode = page->mapping->host;
864         struct xfs_inode        *ip = XFS_I(inode);
865         struct buffer_head      *bh, *head;
866         loff_t                  offset = page_offset(page);
867
868         if (!xfs_check_page_type(page, XFS_IO_DELALLOC))
869                 goto out_invalidate;
870
871         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
872                 goto out_invalidate;
873
874         xfs_alert(ip->i_mount,
875                 "page discard on page %p, inode 0x%llx, offset %llu.",
876                         page, ip->i_ino, offset);
877
878         xfs_ilock(ip, XFS_ILOCK_EXCL);
879         bh = head = page_buffers(page);
880         do {
881                 int             error;
882                 xfs_fileoff_t   start_fsb;
883
884                 if (!buffer_delay(bh))
885                         goto next_buffer;
886
887                 start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);
888                 error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);
889                 if (error) {
890                         /* something screwed, just bail */
891                         if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
892                                 xfs_alert(ip->i_mount,
893                         "page discard unable to remove delalloc mapping.");
894                         }
895                         break;
896                 }
897 next_buffer:
898                 offset += 1 << inode->i_blkbits;
899
900         } while ((bh = bh->b_this_page) != head);
901
902         xfs_iunlock(ip, XFS_ILOCK_EXCL);
903 out_invalidate:
904         xfs_vm_invalidatepage(page, 0, PAGE_CACHE_SIZE);
905         return;
906 }
907
908 /*
909  * Write out a dirty page.
910  *
911  * For delalloc space on the page we need to allocate space and flush it.
912  * For unwritten space on the page we need to start the conversion to
913  * regular allocated space.
914  * For any other dirty buffer heads on the page we should flush them.
915  */
916 STATIC int
917 xfs_vm_writepage(
918         struct page             *page,
919         struct writeback_control *wbc)
920 {
921         struct inode            *inode = page->mapping->host;
922         struct buffer_head      *bh, *head;
923         struct xfs_bmbt_irec    imap;
924         xfs_ioend_t             *ioend = NULL, *iohead = NULL;
925         loff_t                  offset;
926         unsigned int            type;
927         __uint64_t              end_offset;
928         pgoff_t                 end_index, last_index;
929         ssize_t                 len;
930         int                     err, imap_valid = 0, uptodate = 1;
931         int                     count = 0;
932         int                     nonblocking = 0;
933
934         trace_xfs_writepage(inode, page, 0, 0);
935
936         ASSERT(page_has_buffers(page));
937
938         /*
939          * Refuse to write the page out if we are called from reclaim context.
940          *
941          * This avoids stack overflows when called from deeply used stacks in
942          * random callers for direct reclaim or memcg reclaim.  We explicitly
943          * allow reclaim from kswapd as the stack usage there is relatively low.
944          *
945          * This should never happen except in the case of a VM regression so
946          * warn about it.
947          */
948         if (WARN_ON_ONCE((current->flags & (PF_MEMALLOC|PF_KSWAPD)) ==
949                         PF_MEMALLOC))
950                 goto redirty;
951
952         /*
953          * Given that we do not allow direct reclaim to call us, we should
954          * never be called while in a filesystem transaction.
955          */
956         if (WARN_ON(current->flags & PF_FSTRANS))
957                 goto redirty;
958
959         /* Is this page beyond the end of the file? */
960         offset = i_size_read(inode);
961         end_index = offset >> PAGE_CACHE_SHIFT;
962         last_index = (offset - 1) >> PAGE_CACHE_SHIFT;
963         if (page->index >= end_index) {
964                 unsigned offset_into_page = offset & (PAGE_CACHE_SIZE - 1);
965
966                 /*
967                  * Skip the page if it is fully outside i_size, e.g. due to a
968                  * truncate operation that is in progress. We must redirty the
969                  * page so that reclaim stops reclaiming it. Otherwise
970                  * xfs_vm_releasepage() is called on it and gets confused.
971                  */
972                 if (page->index >= end_index + 1 || offset_into_page == 0)
973                         goto redirty;
974
975                 /*
976                  * The page straddles i_size.  It must be zeroed out on each
977                  * and every writepage invocation because it may be mmapped.
978                  * "A file is mapped in multiples of the page size.  For a file
979                  * that is not a multiple of the  page size, the remaining
980                  * memory is zeroed when mapped, and writes to that region are
981                  * not written out to the file."
982                  */
983                 zero_user_segment(page, offset_into_page, PAGE_CACHE_SIZE);
984         }
985
986         end_offset = min_t(unsigned long long,
987                         (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
988                         offset);
989         len = 1 << inode->i_blkbits;
990
991         bh = head = page_buffers(page);
992         offset = page_offset(page);
993         type = XFS_IO_OVERWRITE;
994
995         if (wbc->sync_mode == WB_SYNC_NONE)
996                 nonblocking = 1;
997
998         do {
999                 int new_ioend = 0;
1000
1001                 if (offset >= end_offset)
1002                         break;
1003                 if (!buffer_uptodate(bh))
1004                         uptodate = 0;
1005
1006                 /*
1007                  * set_page_dirty dirties all buffers in a page, independent
1008                  * of their state.  The dirty state however is entirely
1009                  * meaningless for holes (!mapped && uptodate), so skip
1010                  * buffers covering holes here.
1011                  */
1012                 if (!buffer_mapped(bh) && buffer_uptodate(bh)) {
1013                         imap_valid = 0;
1014                         continue;
1015                 }
1016
1017                 if (buffer_unwritten(bh)) {
1018                         if (type != XFS_IO_UNWRITTEN) {
1019                                 type = XFS_IO_UNWRITTEN;
1020                                 imap_valid = 0;
1021                         }
1022                 } else if (buffer_delay(bh)) {
1023                         if (type != XFS_IO_DELALLOC) {
1024                                 type = XFS_IO_DELALLOC;
1025                                 imap_valid = 0;
1026                         }
1027                 } else if (buffer_uptodate(bh)) {
1028                         if (type != XFS_IO_OVERWRITE) {
1029                                 type = XFS_IO_OVERWRITE;
1030                                 imap_valid = 0;
1031                         }
1032                 } else {
1033                         if (PageUptodate(page))
1034                                 ASSERT(buffer_mapped(bh));
1035                         /*
1036                          * This buffer is not uptodate and will not be
1037                          * written to disk.  Ensure that we will put any
1038                          * subsequent writeable buffers into a new
1039                          * ioend.
1040                          */
1041                         imap_valid = 0;
1042                         continue;
1043                 }
1044
1045                 if (imap_valid)
1046                         imap_valid = xfs_imap_valid(inode, &imap, offset);
1047                 if (!imap_valid) {
1048                         /*
1049                          * If we didn't have a valid mapping then we need to
1050                          * put the new mapping into a separate ioend structure.
1051                          * This ensures non-contiguous extents always have
1052                          * separate ioends, which is particularly important
1053                          * for unwritten extent conversion at I/O completion
1054                          * time.
1055                          */
1056                         new_ioend = 1;
1057                         err = xfs_map_blocks(inode, offset, &imap, type,
1058                                              nonblocking);
1059                         if (err)
1060                                 goto error;
1061                         imap_valid = xfs_imap_valid(inode, &imap, offset);
1062                 }
1063                 if (imap_valid) {
1064                         lock_buffer(bh);
1065                         if (type != XFS_IO_OVERWRITE)
1066                                 xfs_map_at_offset(inode, bh, &imap, offset);
1067                         xfs_add_to_ioend(inode, bh, offset, type, &ioend,
1068                                          new_ioend);
1069                         count++;
1070                 }
1071
1072                 if (!iohead)
1073                         iohead = ioend;
1074
1075         } while (offset += len, ((bh = bh->b_this_page) != head));
1076
1077         if (uptodate && bh == head)
1078                 SetPageUptodate(page);
1079
1080         xfs_start_page_writeback(page, 1, count);
1081
1082         /* if there is no IO to be submitted for this page, we are done */
1083         if (!ioend)
1084                 return 0;
1085
1086         ASSERT(iohead);
1087
1088         /*
1089          * Any errors from this point onwards need tobe reported through the IO
1090          * completion path as we have marked the initial page as under writeback
1091          * and unlocked it.
1092          */
1093         if (imap_valid) {
1094                 xfs_off_t               end_index;
1095
1096                 end_index = imap.br_startoff + imap.br_blockcount;
1097
1098                 /* to bytes */
1099                 end_index <<= inode->i_blkbits;
1100
1101                 /* to pages */
1102                 end_index = (end_index - 1) >> PAGE_CACHE_SHIFT;
1103
1104                 /* check against file size */
1105                 if (end_index > last_index)
1106                         end_index = last_index;
1107
1108                 xfs_cluster_write(inode, page->index + 1, &imap, &ioend,
1109                                   wbc, end_index);
1110         }
1111
1112
1113         /*
1114          * Reserve log space if we might write beyond the on-disk inode size.
1115          */
1116         err = 0;
1117         if (ioend->io_type != XFS_IO_UNWRITTEN && xfs_ioend_is_append(ioend))
1118                 err = xfs_setfilesize_trans_alloc(ioend);
1119
1120         xfs_submit_ioend(wbc, iohead, err);
1121
1122         return 0;
1123
1124 error:
1125         if (iohead)
1126                 xfs_cancel_ioend(iohead);
1127
1128         if (err == -EAGAIN)
1129                 goto redirty;
1130
1131         xfs_aops_discard_page(page);
1132         ClearPageUptodate(page);
1133         unlock_page(page);
1134         return err;
1135
1136 redirty:
1137         redirty_page_for_writepage(wbc, page);
1138         unlock_page(page);
1139         return 0;
1140 }
1141
1142 STATIC int
1143 xfs_vm_writepages(
1144         struct address_space    *mapping,
1145         struct writeback_control *wbc)
1146 {
1147         xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1148         return generic_writepages(mapping, wbc);
1149 }
1150
1151 /*
1152  * Called to move a page into cleanable state - and from there
1153  * to be released. The page should already be clean. We always
1154  * have buffer heads in this call.
1155  *
1156  * Returns 1 if the page is ok to release, 0 otherwise.
1157  */
1158 STATIC int
1159 xfs_vm_releasepage(
1160         struct page             *page,
1161         gfp_t                   gfp_mask)
1162 {
1163         int                     delalloc, unwritten;
1164
1165         trace_xfs_releasepage(page->mapping->host, page, 0, 0);
1166
1167         xfs_count_page_state(page, &delalloc, &unwritten);
1168
1169         if (WARN_ON(delalloc))
1170                 return 0;
1171         if (WARN_ON(unwritten))
1172                 return 0;
1173
1174         return try_to_free_buffers(page);
1175 }
1176
1177 STATIC int
1178 __xfs_get_blocks(
1179         struct inode            *inode,
1180         sector_t                iblock,
1181         struct buffer_head      *bh_result,
1182         int                     create,
1183         int                     direct)
1184 {
1185         struct xfs_inode        *ip = XFS_I(inode);
1186         struct xfs_mount        *mp = ip->i_mount;
1187         xfs_fileoff_t           offset_fsb, end_fsb;
1188         int                     error = 0;
1189         int                     lockmode = 0;
1190         struct xfs_bmbt_irec    imap;
1191         int                     nimaps = 1;
1192         xfs_off_t               offset;
1193         ssize_t                 size;
1194         int                     new = 0;
1195
1196         if (XFS_FORCED_SHUTDOWN(mp))
1197                 return -XFS_ERROR(EIO);
1198
1199         offset = (xfs_off_t)iblock << inode->i_blkbits;
1200         ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1201         size = bh_result->b_size;
1202
1203         if (!create && direct && offset >= i_size_read(inode))
1204                 return 0;
1205
1206         /*
1207          * Direct I/O is usually done on preallocated files, so try getting
1208          * a block mapping without an exclusive lock first.  For buffered
1209          * writes we already have the exclusive iolock anyway, so avoiding
1210          * a lock roundtrip here by taking the ilock exclusive from the
1211          * beginning is a useful micro optimization.
1212          */
1213         if (create && !direct) {
1214                 lockmode = XFS_ILOCK_EXCL;
1215                 xfs_ilock(ip, lockmode);
1216         } else {
1217                 lockmode = xfs_ilock_map_shared(ip);
1218         }
1219
1220         ASSERT(offset <= mp->m_super->s_maxbytes);
1221         if (offset + size > mp->m_super->s_maxbytes)
1222                 size = mp->m_super->s_maxbytes - offset;
1223         end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1224         offset_fsb = XFS_B_TO_FSBT(mp, offset);
1225
1226         error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
1227                                 &imap, &nimaps, XFS_BMAPI_ENTIRE);
1228         if (error)
1229                 goto out_unlock;
1230
1231         if (create &&
1232             (!nimaps ||
1233              (imap.br_startblock == HOLESTARTBLOCK ||
1234               imap.br_startblock == DELAYSTARTBLOCK))) {
1235                 if (direct || xfs_get_extsz_hint(ip)) {
1236                         /*
1237                          * Drop the ilock in preparation for starting the block
1238                          * allocation transaction.  It will be retaken
1239                          * exclusively inside xfs_iomap_write_direct for the
1240                          * actual allocation.
1241                          */
1242                         xfs_iunlock(ip, lockmode);
1243                         error = xfs_iomap_write_direct(ip, offset, size,
1244                                                        &imap, nimaps);
1245                         if (error)
1246                                 return -error;
1247                         new = 1;
1248                 } else {
1249                         /*
1250                          * Delalloc reservations do not require a transaction,
1251                          * we can go on without dropping the lock here. If we
1252                          * are allocating a new delalloc block, make sure that
1253                          * we set the new flag so that we mark the buffer new so
1254                          * that we know that it is newly allocated if the write
1255                          * fails.
1256                          */
1257                         if (nimaps && imap.br_startblock == HOLESTARTBLOCK)
1258                                 new = 1;
1259                         error = xfs_iomap_write_delay(ip, offset, size, &imap);
1260                         if (error)
1261                                 goto out_unlock;
1262
1263                         xfs_iunlock(ip, lockmode);
1264                 }
1265
1266                 trace_xfs_get_blocks_alloc(ip, offset, size, 0, &imap);
1267         } else if (nimaps) {
1268                 trace_xfs_get_blocks_found(ip, offset, size, 0, &imap);
1269                 xfs_iunlock(ip, lockmode);
1270         } else {
1271                 trace_xfs_get_blocks_notfound(ip, offset, size);
1272                 goto out_unlock;
1273         }
1274
1275         if (imap.br_startblock != HOLESTARTBLOCK &&
1276             imap.br_startblock != DELAYSTARTBLOCK) {
1277                 /*
1278                  * For unwritten extents do not report a disk address on
1279                  * the read case (treat as if we're reading into a hole).
1280                  */
1281                 if (create || !ISUNWRITTEN(&imap))
1282                         xfs_map_buffer(inode, bh_result, &imap, offset);
1283                 if (create && ISUNWRITTEN(&imap)) {
1284                         if (direct) {
1285                                 bh_result->b_private = inode;
1286                                 set_buffer_defer_completion(bh_result);
1287                         }
1288                         set_buffer_unwritten(bh_result);
1289                 }
1290         }
1291
1292         /*
1293          * If this is a realtime file, data may be on a different device.
1294          * to that pointed to from the buffer_head b_bdev currently.
1295          */
1296         bh_result->b_bdev = xfs_find_bdev_for_inode(inode);
1297
1298         /*
1299          * If we previously allocated a block out beyond eof and we are now
1300          * coming back to use it then we will need to flag it as new even if it
1301          * has a disk address.
1302          *
1303          * With sub-block writes into unwritten extents we also need to mark
1304          * the buffer as new so that the unwritten parts of the buffer gets
1305          * correctly zeroed.
1306          */
1307         if (create &&
1308             ((!buffer_mapped(bh_result) && !buffer_uptodate(bh_result)) ||
1309              (offset >= i_size_read(inode)) ||
1310              (new || ISUNWRITTEN(&imap))))
1311                 set_buffer_new(bh_result);
1312
1313         if (imap.br_startblock == DELAYSTARTBLOCK) {
1314                 BUG_ON(direct);
1315                 if (create) {
1316                         set_buffer_uptodate(bh_result);
1317                         set_buffer_mapped(bh_result);
1318                         set_buffer_delay(bh_result);
1319                 }
1320         }
1321
1322         /*
1323          * If this is O_DIRECT or the mpage code calling tell them how large
1324          * the mapping is, so that we can avoid repeated get_blocks calls.
1325          */
1326         if (direct || size > (1 << inode->i_blkbits)) {
1327                 xfs_off_t               mapping_size;
1328
1329                 mapping_size = imap.br_startoff + imap.br_blockcount - iblock;
1330                 mapping_size <<= inode->i_blkbits;
1331
1332                 ASSERT(mapping_size > 0);
1333                 if (mapping_size > size)
1334                         mapping_size = size;
1335                 if (mapping_size > LONG_MAX)
1336                         mapping_size = LONG_MAX;
1337
1338                 bh_result->b_size = mapping_size;
1339         }
1340
1341         return 0;
1342
1343 out_unlock:
1344         xfs_iunlock(ip, lockmode);
1345         return -error;
1346 }
1347
1348 int
1349 xfs_get_blocks(
1350         struct inode            *inode,
1351         sector_t                iblock,
1352         struct buffer_head      *bh_result,
1353         int                     create)
1354 {
1355         return __xfs_get_blocks(inode, iblock, bh_result, create, 0);
1356 }
1357
1358 STATIC int
1359 xfs_get_blocks_direct(
1360         struct inode            *inode,
1361         sector_t                iblock,
1362         struct buffer_head      *bh_result,
1363         int                     create)
1364 {
1365         return __xfs_get_blocks(inode, iblock, bh_result, create, 1);
1366 }
1367
1368 /*
1369  * Complete a direct I/O write request.
1370  *
1371  * If the private argument is non-NULL __xfs_get_blocks signals us that we
1372  * need to issue a transaction to convert the range from unwritten to written
1373  * extents.  In case this is regular synchronous I/O we just call xfs_end_io
1374  * to do this and we are done.  But in case this was a successful AIO
1375  * request this handler is called from interrupt context, from which we
1376  * can't start transactions.  In that case offload the I/O completion to
1377  * the workqueues we also use for buffered I/O completion.
1378  */
1379 STATIC void
1380 xfs_end_io_direct_write(
1381         struct kiocb            *iocb,
1382         loff_t                  offset,
1383         ssize_t                 size,
1384         void                    *private)
1385 {
1386         struct xfs_ioend        *ioend = iocb->private;
1387
1388         /*
1389          * While the generic direct I/O code updates the inode size, it does
1390          * so only after the end_io handler is called, which means our
1391          * end_io handler thinks the on-disk size is outside the in-core
1392          * size.  To prevent this just update it a little bit earlier here.
1393          */
1394         if (offset + size > i_size_read(ioend->io_inode))
1395                 i_size_write(ioend->io_inode, offset + size);
1396
1397         /*
1398          * blockdev_direct_IO can return an error even after the I/O
1399          * completion handler was called.  Thus we need to protect
1400          * against double-freeing.
1401          */
1402         iocb->private = NULL;
1403
1404         ioend->io_offset = offset;
1405         ioend->io_size = size;
1406         if (private && size > 0)
1407                 ioend->io_type = XFS_IO_UNWRITTEN;
1408
1409         xfs_finish_ioend_sync(ioend);
1410 }
1411
1412 STATIC ssize_t
1413 xfs_vm_direct_IO(
1414         int                     rw,
1415         struct kiocb            *iocb,
1416         const struct iovec      *iov,
1417         loff_t                  offset,
1418         unsigned long           nr_segs)
1419 {
1420         struct inode            *inode = iocb->ki_filp->f_mapping->host;
1421         struct block_device     *bdev = xfs_find_bdev_for_inode(inode);
1422         struct xfs_ioend        *ioend = NULL;
1423         ssize_t                 ret;
1424
1425         if (rw & WRITE) {
1426                 size_t size = iov_length(iov, nr_segs);
1427
1428                 /*
1429                  * We cannot preallocate a size update transaction here as we
1430                  * don't know whether allocation is necessary or not. Hence we
1431                  * can only tell IO completion that one is necessary if we are
1432                  * not doing unwritten extent conversion.
1433                  */
1434                 iocb->private = ioend = xfs_alloc_ioend(inode, XFS_IO_DIRECT);
1435                 if (offset + size > XFS_I(inode)->i_d.di_size)
1436                         ioend->io_isdirect = 1;
1437
1438                 ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
1439                                             offset, nr_segs,
1440                                             xfs_get_blocks_direct,
1441                                             xfs_end_io_direct_write, NULL, 0);
1442                 if (ret != -EIOCBQUEUED && iocb->private)
1443                         goto out_destroy_ioend;
1444         } else {
1445                 ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
1446                                             offset, nr_segs,
1447                                             xfs_get_blocks_direct,
1448                                             NULL, NULL, 0);
1449         }
1450
1451         return ret;
1452
1453 out_destroy_ioend:
1454         xfs_destroy_ioend(ioend);
1455         return ret;
1456 }
1457
1458 /*
1459  * Punch out the delalloc blocks we have already allocated.
1460  *
1461  * Don't bother with xfs_setattr given that nothing can have made it to disk yet
1462  * as the page is still locked at this point.
1463  */
1464 STATIC void
1465 xfs_vm_kill_delalloc_range(
1466         struct inode            *inode,
1467         loff_t                  start,
1468         loff_t                  end)
1469 {
1470         struct xfs_inode        *ip = XFS_I(inode);
1471         xfs_fileoff_t           start_fsb;
1472         xfs_fileoff_t           end_fsb;
1473         int                     error;
1474
1475         start_fsb = XFS_B_TO_FSB(ip->i_mount, start);
1476         end_fsb = XFS_B_TO_FSB(ip->i_mount, end);
1477         if (end_fsb <= start_fsb)
1478                 return;
1479
1480         xfs_ilock(ip, XFS_ILOCK_EXCL);
1481         error = xfs_bmap_punch_delalloc_range(ip, start_fsb,
1482                                                 end_fsb - start_fsb);
1483         if (error) {
1484                 /* something screwed, just bail */
1485                 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
1486                         xfs_alert(ip->i_mount,
1487                 "xfs_vm_write_failed: unable to clean up ino %lld",
1488                                         ip->i_ino);
1489                 }
1490         }
1491         xfs_iunlock(ip, XFS_ILOCK_EXCL);
1492 }
1493
1494 STATIC void
1495 xfs_vm_write_failed(
1496         struct inode            *inode,
1497         struct page             *page,
1498         loff_t                  pos,
1499         unsigned                len)
1500 {
1501         loff_t                  block_offset;
1502         loff_t                  block_start;
1503         loff_t                  block_end;
1504         loff_t                  from = pos & (PAGE_CACHE_SIZE - 1);
1505         loff_t                  to = from + len;
1506         struct buffer_head      *bh, *head;
1507
1508         /*
1509          * The request pos offset might be 32 or 64 bit, this is all fine
1510          * on 64-bit platform.  However, for 64-bit pos request on 32-bit
1511          * platform, the high 32-bit will be masked off if we evaluate the
1512          * block_offset via (pos & PAGE_MASK) because the PAGE_MASK is
1513          * 0xfffff000 as an unsigned long, hence the result is incorrect
1514          * which could cause the following ASSERT failed in most cases.
1515          * In order to avoid this, we can evaluate the block_offset of the
1516          * start of the page by using shifts rather than masks the mismatch
1517          * problem.
1518          */
1519         block_offset = (pos >> PAGE_CACHE_SHIFT) << PAGE_CACHE_SHIFT;
1520
1521         ASSERT(block_offset + from == pos);
1522
1523         head = page_buffers(page);
1524         block_start = 0;
1525         for (bh = head; bh != head || !block_start;
1526              bh = bh->b_this_page, block_start = block_end,
1527                                    block_offset += bh->b_size) {
1528                 block_end = block_start + bh->b_size;
1529
1530                 /* skip buffers before the write */
1531                 if (block_end <= from)
1532                         continue;
1533
1534                 /* if the buffer is after the write, we're done */
1535                 if (block_start >= to)
1536                         break;
1537
1538                 if (!buffer_delay(bh))
1539                         continue;
1540
1541                 if (!buffer_new(bh) && block_offset < i_size_read(inode))
1542                         continue;
1543
1544                 xfs_vm_kill_delalloc_range(inode, block_offset,
1545                                            block_offset + bh->b_size);
1546         }
1547
1548 }
1549
1550 /*
1551  * This used to call block_write_begin(), but it unlocks and releases the page
1552  * on error, and we need that page to be able to punch stale delalloc blocks out
1553  * on failure. hence we copy-n-waste it here and call xfs_vm_write_failed() at
1554  * the appropriate point.
1555  */
1556 STATIC int
1557 xfs_vm_write_begin(
1558         struct file             *file,
1559         struct address_space    *mapping,
1560         loff_t                  pos,
1561         unsigned                len,
1562         unsigned                flags,
1563         struct page             **pagep,
1564         void                    **fsdata)
1565 {
1566         pgoff_t                 index = pos >> PAGE_CACHE_SHIFT;
1567         struct page             *page;
1568         int                     status;
1569
1570         ASSERT(len <= PAGE_CACHE_SIZE);
1571
1572         page = grab_cache_page_write_begin(mapping, index,
1573                                            flags | AOP_FLAG_NOFS);
1574         if (!page)
1575                 return -ENOMEM;
1576
1577         status = __block_write_begin(page, pos, len, xfs_get_blocks);
1578         if (unlikely(status)) {
1579                 struct inode    *inode = mapping->host;
1580
1581                 xfs_vm_write_failed(inode, page, pos, len);
1582                 unlock_page(page);
1583
1584                 if (pos + len > i_size_read(inode))
1585                         truncate_pagecache(inode, i_size_read(inode));
1586
1587                 page_cache_release(page);
1588                 page = NULL;
1589         }
1590
1591         *pagep = page;
1592         return status;
1593 }
1594
1595 /*
1596  * On failure, we only need to kill delalloc blocks beyond EOF because they
1597  * will never be written. For blocks within EOF, generic_write_end() zeros them
1598  * so they are safe to leave alone and be written with all the other valid data.
1599  */
1600 STATIC int
1601 xfs_vm_write_end(
1602         struct file             *file,
1603         struct address_space    *mapping,
1604         loff_t                  pos,
1605         unsigned                len,
1606         unsigned                copied,
1607         struct page             *page,
1608         void                    *fsdata)
1609 {
1610         int                     ret;
1611
1612         ASSERT(len <= PAGE_CACHE_SIZE);
1613
1614         ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
1615         if (unlikely(ret < len)) {
1616                 struct inode    *inode = mapping->host;
1617                 size_t          isize = i_size_read(inode);
1618                 loff_t          to = pos + len;
1619
1620                 if (to > isize) {
1621                         truncate_pagecache(inode, isize);
1622                         xfs_vm_kill_delalloc_range(inode, isize, to);
1623                 }
1624         }
1625         return ret;
1626 }
1627
1628 STATIC sector_t
1629 xfs_vm_bmap(
1630         struct address_space    *mapping,
1631         sector_t                block)
1632 {
1633         struct inode            *inode = (struct inode *)mapping->host;
1634         struct xfs_inode        *ip = XFS_I(inode);
1635
1636         trace_xfs_vm_bmap(XFS_I(inode));
1637         xfs_ilock(ip, XFS_IOLOCK_SHARED);
1638         filemap_write_and_wait(mapping);
1639         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
1640         return generic_block_bmap(mapping, block, xfs_get_blocks);
1641 }
1642
1643 STATIC int
1644 xfs_vm_readpage(
1645         struct file             *unused,
1646         struct page             *page)
1647 {
1648         return mpage_readpage(page, xfs_get_blocks);
1649 }
1650
1651 STATIC int
1652 xfs_vm_readpages(
1653         struct file             *unused,
1654         struct address_space    *mapping,
1655         struct list_head        *pages,
1656         unsigned                nr_pages)
1657 {
1658         return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1659 }
1660
1661 const struct address_space_operations xfs_address_space_operations = {
1662         .readpage               = xfs_vm_readpage,
1663         .readpages              = xfs_vm_readpages,
1664         .writepage              = xfs_vm_writepage,
1665         .writepages             = xfs_vm_writepages,
1666         .releasepage            = xfs_vm_releasepage,
1667         .invalidatepage         = xfs_vm_invalidatepage,
1668         .write_begin            = xfs_vm_write_begin,
1669         .write_end              = xfs_vm_write_end,
1670         .bmap                   = xfs_vm_bmap,
1671         .direct_IO              = xfs_vm_direct_IO,
1672         .migratepage            = buffer_migrate_page,
1673         .is_partially_uptodate  = block_is_partially_uptodate,
1674         .error_remove_page      = generic_error_remove_page,
1675 };