Merge branch 'for-3.19' of git://linux-nfs.org/~bfields/linux
[firefly-linux-kernel-4.4.55.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_shared.h"
20 #include "xfs_format.h"
21 #include "xfs_log_format.h"
22 #include "xfs_trans_resv.h"
23 #include "xfs_mount.h"
24 #include "xfs_inode.h"
25 #include "xfs_trans.h"
26 #include "xfs_inode_item.h"
27 #include "xfs_alloc.h"
28 #include "xfs_error.h"
29 #include "xfs_iomap.h"
30 #include "xfs_trace.h"
31 #include "xfs_bmap.h"
32 #include "xfs_bmap_util.h"
33 #include "xfs_bmap_btree.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 -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 -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 error;
333
334         if (type == XFS_IO_DELALLOC &&
335             (!nimaps || isnullstartblock(imap->br_startblock))) {
336                 error = xfs_iomap_write_allocate(ip, offset, imap);
337                 if (!error)
338                         trace_xfs_map_blocks_alloc(ip, offset, count, type, imap);
339                 return 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_iter.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
435         /*
436          * if the page was not fully cleaned, we need to ensure that the higher
437          * layers come back to it correctly. That means we need to keep the page
438          * dirty, and for WB_SYNC_ALL writeback we need to ensure the
439          * PAGECACHE_TAG_TOWRITE index mark is not removed so another attempt to
440          * write this page in this writeback sweep will be made.
441          */
442         if (clear_dirty) {
443                 clear_page_dirty_for_io(page);
444                 set_page_writeback(page);
445         } else
446                 set_page_writeback_keepwrite(page);
447
448         unlock_page(page);
449
450         /* If no buffers on the page are to be written, finish it here */
451         if (!buffers)
452                 end_page_writeback(page);
453 }
454
455 static inline int xfs_bio_add_buffer(struct bio *bio, struct buffer_head *bh)
456 {
457         return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
458 }
459
460 /*
461  * Submit all of the bios for all of the ioends we have saved up, covering the
462  * initial writepage page and also any probed pages.
463  *
464  * Because we may have multiple ioends spanning a page, we need to start
465  * writeback on all the buffers before we submit them for I/O. If we mark the
466  * buffers as we got, then we can end up with a page that only has buffers
467  * marked async write and I/O complete on can occur before we mark the other
468  * buffers async write.
469  *
470  * The end result of this is that we trip a bug in end_page_writeback() because
471  * we call it twice for the one page as the code in end_buffer_async_write()
472  * assumes that all buffers on the page are started at the same time.
473  *
474  * The fix is two passes across the ioend list - one to start writeback on the
475  * buffer_heads, and then submit them for I/O on the second pass.
476  *
477  * If @fail is non-zero, it means that we have a situation where some part of
478  * the submission process has failed after we have marked paged for writeback
479  * and unlocked them. In this situation, we need to fail the ioend chain rather
480  * than submit it to IO. This typically only happens on a filesystem shutdown.
481  */
482 STATIC void
483 xfs_submit_ioend(
484         struct writeback_control *wbc,
485         xfs_ioend_t             *ioend,
486         int                     fail)
487 {
488         xfs_ioend_t             *head = ioend;
489         xfs_ioend_t             *next;
490         struct buffer_head      *bh;
491         struct bio              *bio;
492         sector_t                lastblock = 0;
493
494         /* Pass 1 - start writeback */
495         do {
496                 next = ioend->io_list;
497                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private)
498                         xfs_start_buffer_writeback(bh);
499         } while ((ioend = next) != NULL);
500
501         /* Pass 2 - submit I/O */
502         ioend = head;
503         do {
504                 next = ioend->io_list;
505                 bio = NULL;
506
507                 /*
508                  * If we are failing the IO now, just mark the ioend with an
509                  * error and finish it. This will run IO completion immediately
510                  * as there is only one reference to the ioend at this point in
511                  * time.
512                  */
513                 if (fail) {
514                         ioend->io_error = fail;
515                         xfs_finish_ioend(ioend);
516                         continue;
517                 }
518
519                 for (bh = ioend->io_buffer_head; bh; bh = bh->b_private) {
520
521                         if (!bio) {
522  retry:
523                                 bio = xfs_alloc_ioend_bio(bh);
524                         } else if (bh->b_blocknr != lastblock + 1) {
525                                 xfs_submit_ioend_bio(wbc, ioend, bio);
526                                 goto retry;
527                         }
528
529                         if (xfs_bio_add_buffer(bio, bh) != bh->b_size) {
530                                 xfs_submit_ioend_bio(wbc, ioend, bio);
531                                 goto retry;
532                         }
533
534                         lastblock = bh->b_blocknr;
535                 }
536                 if (bio)
537                         xfs_submit_ioend_bio(wbc, ioend, bio);
538                 xfs_finish_ioend(ioend);
539         } while ((ioend = next) != NULL);
540 }
541
542 /*
543  * Cancel submission of all buffer_heads so far in this endio.
544  * Toss the endio too.  Only ever called for the initial page
545  * in a writepage request, so only ever one page.
546  */
547 STATIC void
548 xfs_cancel_ioend(
549         xfs_ioend_t             *ioend)
550 {
551         xfs_ioend_t             *next;
552         struct buffer_head      *bh, *next_bh;
553
554         do {
555                 next = ioend->io_list;
556                 bh = ioend->io_buffer_head;
557                 do {
558                         next_bh = bh->b_private;
559                         clear_buffer_async_write(bh);
560                         /*
561                          * The unwritten flag is cleared when added to the
562                          * ioend. We're not submitting for I/O so mark the
563                          * buffer unwritten again for next time around.
564                          */
565                         if (ioend->io_type == XFS_IO_UNWRITTEN)
566                                 set_buffer_unwritten(bh);
567                         unlock_buffer(bh);
568                 } while ((bh = next_bh) != NULL);
569
570                 mempool_free(ioend, xfs_ioend_pool);
571         } while ((ioend = next) != NULL);
572 }
573
574 /*
575  * Test to see if we've been building up a completion structure for
576  * earlier buffers -- if so, we try to append to this ioend if we
577  * can, otherwise we finish off any current ioend and start another.
578  * Return true if we've finished the given ioend.
579  */
580 STATIC void
581 xfs_add_to_ioend(
582         struct inode            *inode,
583         struct buffer_head      *bh,
584         xfs_off_t               offset,
585         unsigned int            type,
586         xfs_ioend_t             **result,
587         int                     need_ioend)
588 {
589         xfs_ioend_t             *ioend = *result;
590
591         if (!ioend || need_ioend || type != ioend->io_type) {
592                 xfs_ioend_t     *previous = *result;
593
594                 ioend = xfs_alloc_ioend(inode, type);
595                 ioend->io_offset = offset;
596                 ioend->io_buffer_head = bh;
597                 ioend->io_buffer_tail = bh;
598                 if (previous)
599                         previous->io_list = ioend;
600                 *result = ioend;
601         } else {
602                 ioend->io_buffer_tail->b_private = bh;
603                 ioend->io_buffer_tail = bh;
604         }
605
606         bh->b_private = NULL;
607         ioend->io_size += bh->b_size;
608 }
609
610 STATIC void
611 xfs_map_buffer(
612         struct inode            *inode,
613         struct buffer_head      *bh,
614         struct xfs_bmbt_irec    *imap,
615         xfs_off_t               offset)
616 {
617         sector_t                bn;
618         struct xfs_mount        *m = XFS_I(inode)->i_mount;
619         xfs_off_t               iomap_offset = XFS_FSB_TO_B(m, imap->br_startoff);
620         xfs_daddr_t             iomap_bn = xfs_fsb_to_db(XFS_I(inode), imap->br_startblock);
621
622         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
623         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
624
625         bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
626               ((offset - iomap_offset) >> inode->i_blkbits);
627
628         ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
629
630         bh->b_blocknr = bn;
631         set_buffer_mapped(bh);
632 }
633
634 STATIC void
635 xfs_map_at_offset(
636         struct inode            *inode,
637         struct buffer_head      *bh,
638         struct xfs_bmbt_irec    *imap,
639         xfs_off_t               offset)
640 {
641         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
642         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
643
644         xfs_map_buffer(inode, bh, imap, offset);
645         set_buffer_mapped(bh);
646         clear_buffer_delay(bh);
647         clear_buffer_unwritten(bh);
648 }
649
650 /*
651  * Test if a given page contains at least one buffer of a given @type.
652  * If @check_all_buffers is true, then we walk all the buffers in the page to
653  * try to find one of the type passed in. If it is not set, then the caller only
654  * needs to check the first buffer on the page for a match.
655  */
656 STATIC bool
657 xfs_check_page_type(
658         struct page             *page,
659         unsigned int            type,
660         bool                    check_all_buffers)
661 {
662         struct buffer_head      *bh;
663         struct buffer_head      *head;
664
665         if (PageWriteback(page))
666                 return false;
667         if (!page->mapping)
668                 return false;
669         if (!page_has_buffers(page))
670                 return false;
671
672         bh = head = page_buffers(page);
673         do {
674                 if (buffer_unwritten(bh)) {
675                         if (type == XFS_IO_UNWRITTEN)
676                                 return true;
677                 } else if (buffer_delay(bh)) {
678                         if (type == XFS_IO_DELALLOC)
679                                 return true;
680                 } else if (buffer_dirty(bh) && buffer_mapped(bh)) {
681                         if (type == XFS_IO_OVERWRITE)
682                                 return true;
683                 }
684
685                 /* If we are only checking the first buffer, we are done now. */
686                 if (!check_all_buffers)
687                         break;
688         } while ((bh = bh->b_this_page) != head);
689
690         return false;
691 }
692
693 /*
694  * Allocate & map buffers for page given the extent map. Write it out.
695  * except for the original page of a writepage, this is called on
696  * delalloc/unwritten pages only, for the original page it is possible
697  * that the page has no mapping at all.
698  */
699 STATIC int
700 xfs_convert_page(
701         struct inode            *inode,
702         struct page             *page,
703         loff_t                  tindex,
704         struct xfs_bmbt_irec    *imap,
705         xfs_ioend_t             **ioendp,
706         struct writeback_control *wbc)
707 {
708         struct buffer_head      *bh, *head;
709         xfs_off_t               end_offset;
710         unsigned long           p_offset;
711         unsigned int            type;
712         int                     len, page_dirty;
713         int                     count = 0, done = 0, uptodate = 1;
714         xfs_off_t               offset = page_offset(page);
715
716         if (page->index != tindex)
717                 goto fail;
718         if (!trylock_page(page))
719                 goto fail;
720         if (PageWriteback(page))
721                 goto fail_unlock_page;
722         if (page->mapping != inode->i_mapping)
723                 goto fail_unlock_page;
724         if (!xfs_check_page_type(page, (*ioendp)->io_type, false))
725                 goto fail_unlock_page;
726
727         /*
728          * page_dirty is initially a count of buffers on the page before
729          * EOF and is decremented as we move each into a cleanable state.
730          *
731          * Derivation:
732          *
733          * End offset is the highest offset that this page should represent.
734          * If we are on the last page, (end_offset & (PAGE_CACHE_SIZE - 1))
735          * will evaluate non-zero and be less than PAGE_CACHE_SIZE and
736          * hence give us the correct page_dirty count. On any other page,
737          * it will be zero and in that case we need page_dirty to be the
738          * count of buffers on the page.
739          */
740         end_offset = min_t(unsigned long long,
741                         (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT,
742                         i_size_read(inode));
743
744         /*
745          * If the current map does not span the entire page we are about to try
746          * to write, then give up. The only way we can write a page that spans
747          * multiple mappings in a single writeback iteration is via the
748          * xfs_vm_writepage() function. Data integrity writeback requires the
749          * entire page to be written in a single attempt, otherwise the part of
750          * the page we don't write here doesn't get written as part of the data
751          * integrity sync.
752          *
753          * For normal writeback, we also don't attempt to write partial pages
754          * here as it simply means that write_cache_pages() will see it under
755          * writeback and ignore the page until some point in the future, at
756          * which time this will be the only page in the file that needs
757          * writeback.  Hence for more optimal IO patterns, we should always
758          * avoid partial page writeback due to multiple mappings on a page here.
759          */
760         if (!xfs_imap_valid(inode, imap, end_offset))
761                 goto fail_unlock_page;
762
763         len = 1 << inode->i_blkbits;
764         p_offset = min_t(unsigned long, end_offset & (PAGE_CACHE_SIZE - 1),
765                                         PAGE_CACHE_SIZE);
766         p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE;
767         page_dirty = p_offset / len;
768
769         /*
770          * The moment we find a buffer that doesn't match our current type
771          * specification or can't be written, abort the loop and start
772          * writeback. As per the above xfs_imap_valid() check, only
773          * xfs_vm_writepage() can handle partial page writeback fully - we are
774          * limited here to the buffers that are contiguous with the current
775          * ioend, and hence a buffer we can't write breaks that contiguity and
776          * we have to defer the rest of the IO to xfs_vm_writepage().
777          */
778         bh = head = page_buffers(page);
779         do {
780                 if (offset >= end_offset)
781                         break;
782                 if (!buffer_uptodate(bh))
783                         uptodate = 0;
784                 if (!(PageUptodate(page) || buffer_uptodate(bh))) {
785                         done = 1;
786                         break;
787                 }
788
789                 if (buffer_unwritten(bh) || buffer_delay(bh) ||
790                     buffer_mapped(bh)) {
791                         if (buffer_unwritten(bh))
792                                 type = XFS_IO_UNWRITTEN;
793                         else if (buffer_delay(bh))
794                                 type = XFS_IO_DELALLOC;
795                         else
796                                 type = XFS_IO_OVERWRITE;
797
798                         /*
799                          * imap should always be valid because of the above
800                          * partial page end_offset check on the imap.
801                          */
802                         ASSERT(xfs_imap_valid(inode, imap, offset));
803
804                         lock_buffer(bh);
805                         if (type != XFS_IO_OVERWRITE)
806                                 xfs_map_at_offset(inode, bh, imap, offset);
807                         xfs_add_to_ioend(inode, bh, offset, type,
808                                          ioendp, done);
809
810                         page_dirty--;
811                         count++;
812                 } else {
813                         done = 1;
814                         break;
815                 }
816         } while (offset += len, (bh = bh->b_this_page) != head);
817
818         if (uptodate && bh == head)
819                 SetPageUptodate(page);
820
821         if (count) {
822                 if (--wbc->nr_to_write <= 0 &&
823                     wbc->sync_mode == WB_SYNC_NONE)
824                         done = 1;
825         }
826         xfs_start_page_writeback(page, !page_dirty, count);
827
828         return done;
829  fail_unlock_page:
830         unlock_page(page);
831  fail:
832         return 1;
833 }
834
835 /*
836  * Convert & write out a cluster of pages in the same extent as defined
837  * by mp and following the start page.
838  */
839 STATIC void
840 xfs_cluster_write(
841         struct inode            *inode,
842         pgoff_t                 tindex,
843         struct xfs_bmbt_irec    *imap,
844         xfs_ioend_t             **ioendp,
845         struct writeback_control *wbc,
846         pgoff_t                 tlast)
847 {
848         struct pagevec          pvec;
849         int                     done = 0, i;
850
851         pagevec_init(&pvec, 0);
852         while (!done && tindex <= tlast) {
853                 unsigned len = min_t(pgoff_t, PAGEVEC_SIZE, tlast - tindex + 1);
854
855                 if (!pagevec_lookup(&pvec, inode->i_mapping, tindex, len))
856                         break;
857
858                 for (i = 0; i < pagevec_count(&pvec); i++) {
859                         done = xfs_convert_page(inode, pvec.pages[i], tindex++,
860                                         imap, ioendp, wbc);
861                         if (done)
862                                 break;
863                 }
864
865                 pagevec_release(&pvec);
866                 cond_resched();
867         }
868 }
869
870 STATIC void
871 xfs_vm_invalidatepage(
872         struct page             *page,
873         unsigned int            offset,
874         unsigned int            length)
875 {
876         trace_xfs_invalidatepage(page->mapping->host, page, offset,
877                                  length);
878         block_invalidatepage(page, offset, length);
879 }
880
881 /*
882  * If the page has delalloc buffers on it, we need to punch them out before we
883  * invalidate the page. If we don't, we leave a stale delalloc mapping on the
884  * inode that can trip a BUG() in xfs_get_blocks() later on if a direct IO read
885  * is done on that same region - the delalloc extent is returned when none is
886  * supposed to be there.
887  *
888  * We prevent this by truncating away the delalloc regions on the page before
889  * invalidating it. Because they are delalloc, we can do this without needing a
890  * transaction. Indeed - if we get ENOSPC errors, we have to be able to do this
891  * truncation without a transaction as there is no space left for block
892  * reservation (typically why we see a ENOSPC in writeback).
893  *
894  * This is not a performance critical path, so for now just do the punching a
895  * buffer head at a time.
896  */
897 STATIC void
898 xfs_aops_discard_page(
899         struct page             *page)
900 {
901         struct inode            *inode = page->mapping->host;
902         struct xfs_inode        *ip = XFS_I(inode);
903         struct buffer_head      *bh, *head;
904         loff_t                  offset = page_offset(page);
905
906         if (!xfs_check_page_type(page, XFS_IO_DELALLOC, true))
907                 goto out_invalidate;
908
909         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
910                 goto out_invalidate;
911
912         xfs_alert(ip->i_mount,
913                 "page discard on page %p, inode 0x%llx, offset %llu.",
914                         page, ip->i_ino, offset);
915
916         xfs_ilock(ip, XFS_ILOCK_EXCL);
917         bh = head = page_buffers(page);
918         do {
919                 int             error;
920                 xfs_fileoff_t   start_fsb;
921
922                 if (!buffer_delay(bh))
923                         goto next_buffer;
924
925                 start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);
926                 error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);
927                 if (error) {
928                         /* something screwed, just bail */
929                         if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
930                                 xfs_alert(ip->i_mount,
931                         "page discard unable to remove delalloc mapping.");
932                         }
933                         break;
934                 }
935 next_buffer:
936                 offset += 1 << inode->i_blkbits;
937
938         } while ((bh = bh->b_this_page) != head);
939
940         xfs_iunlock(ip, XFS_ILOCK_EXCL);
941 out_invalidate:
942         xfs_vm_invalidatepage(page, 0, PAGE_CACHE_SIZE);
943         return;
944 }
945
946 /*
947  * Write out a dirty page.
948  *
949  * For delalloc space on the page we need to allocate space and flush it.
950  * For unwritten space on the page we need to start the conversion to
951  * regular allocated space.
952  * For any other dirty buffer heads on the page we should flush them.
953  */
954 STATIC int
955 xfs_vm_writepage(
956         struct page             *page,
957         struct writeback_control *wbc)
958 {
959         struct inode            *inode = page->mapping->host;
960         struct buffer_head      *bh, *head;
961         struct xfs_bmbt_irec    imap;
962         xfs_ioend_t             *ioend = NULL, *iohead = NULL;
963         loff_t                  offset;
964         unsigned int            type;
965         __uint64_t              end_offset;
966         pgoff_t                 end_index, last_index;
967         ssize_t                 len;
968         int                     err, imap_valid = 0, uptodate = 1;
969         int                     count = 0;
970         int                     nonblocking = 0;
971
972         trace_xfs_writepage(inode, page, 0, 0);
973
974         ASSERT(page_has_buffers(page));
975
976         /*
977          * Refuse to write the page out if we are called from reclaim context.
978          *
979          * This avoids stack overflows when called from deeply used stacks in
980          * random callers for direct reclaim or memcg reclaim.  We explicitly
981          * allow reclaim from kswapd as the stack usage there is relatively low.
982          *
983          * This should never happen except in the case of a VM regression so
984          * warn about it.
985          */
986         if (WARN_ON_ONCE((current->flags & (PF_MEMALLOC|PF_KSWAPD)) ==
987                         PF_MEMALLOC))
988                 goto redirty;
989
990         /*
991          * Given that we do not allow direct reclaim to call us, we should
992          * never be called while in a filesystem transaction.
993          */
994         if (WARN_ON_ONCE(current->flags & PF_FSTRANS))
995                 goto redirty;
996
997         /* Is this page beyond the end of the file? */
998         offset = i_size_read(inode);
999         end_index = offset >> PAGE_CACHE_SHIFT;
1000         last_index = (offset - 1) >> PAGE_CACHE_SHIFT;
1001
1002         /*
1003          * The page index is less than the end_index, adjust the end_offset
1004          * to the highest offset that this page should represent.
1005          * -----------------------------------------------------
1006          * |                    file mapping           | <EOF> |
1007          * -----------------------------------------------------
1008          * | Page ... | Page N-2 | Page N-1 |  Page N  |       |
1009          * ^--------------------------------^----------|--------
1010          * |     desired writeback range    |      see else    |
1011          * ---------------------------------^------------------|
1012          */
1013         if (page->index < end_index)
1014                 end_offset = (xfs_off_t)(page->index + 1) << PAGE_CACHE_SHIFT;
1015         else {
1016                 /*
1017                  * Check whether the page to write out is beyond or straddles
1018                  * i_size or not.
1019                  * -------------------------------------------------------
1020                  * |            file mapping                    | <EOF>  |
1021                  * -------------------------------------------------------
1022                  * | Page ... | Page N-2 | Page N-1 |  Page N   | Beyond |
1023                  * ^--------------------------------^-----------|---------
1024                  * |                                |      Straddles     |
1025                  * ---------------------------------^-----------|--------|
1026                  */
1027                 unsigned offset_into_page = offset & (PAGE_CACHE_SIZE - 1);
1028
1029                 /*
1030                  * Skip the page if it is fully outside i_size, e.g. due to a
1031                  * truncate operation that is in progress. We must redirty the
1032                  * page so that reclaim stops reclaiming it. Otherwise
1033                  * xfs_vm_releasepage() is called on it and gets confused.
1034                  *
1035                  * Note that the end_index is unsigned long, it would overflow
1036                  * if the given offset is greater than 16TB on 32-bit system
1037                  * and if we do check the page is fully outside i_size or not
1038                  * via "if (page->index >= end_index + 1)" as "end_index + 1"
1039                  * will be evaluated to 0.  Hence this page will be redirtied
1040                  * and be written out repeatedly which would result in an
1041                  * infinite loop, the user program that perform this operation
1042                  * will hang.  Instead, we can verify this situation by checking
1043                  * if the page to write is totally beyond the i_size or if it's
1044                  * offset is just equal to the EOF.
1045                  */
1046                 if (page->index > end_index ||
1047                     (page->index == end_index && offset_into_page == 0))
1048                         goto redirty;
1049
1050                 /*
1051                  * The page straddles i_size.  It must be zeroed out on each
1052                  * and every writepage invocation because it may be mmapped.
1053                  * "A file is mapped in multiples of the page size.  For a file
1054                  * that is not a multiple of the page size, the remaining
1055                  * memory is zeroed when mapped, and writes to that region are
1056                  * not written out to the file."
1057                  */
1058                 zero_user_segment(page, offset_into_page, PAGE_CACHE_SIZE);
1059
1060                 /* Adjust the end_offset to the end of file */
1061                 end_offset = offset;
1062         }
1063
1064         len = 1 << inode->i_blkbits;
1065
1066         bh = head = page_buffers(page);
1067         offset = page_offset(page);
1068         type = XFS_IO_OVERWRITE;
1069
1070         if (wbc->sync_mode == WB_SYNC_NONE)
1071                 nonblocking = 1;
1072
1073         do {
1074                 int new_ioend = 0;
1075
1076                 if (offset >= end_offset)
1077                         break;
1078                 if (!buffer_uptodate(bh))
1079                         uptodate = 0;
1080
1081                 /*
1082                  * set_page_dirty dirties all buffers in a page, independent
1083                  * of their state.  The dirty state however is entirely
1084                  * meaningless for holes (!mapped && uptodate), so skip
1085                  * buffers covering holes here.
1086                  */
1087                 if (!buffer_mapped(bh) && buffer_uptodate(bh)) {
1088                         imap_valid = 0;
1089                         continue;
1090                 }
1091
1092                 if (buffer_unwritten(bh)) {
1093                         if (type != XFS_IO_UNWRITTEN) {
1094                                 type = XFS_IO_UNWRITTEN;
1095                                 imap_valid = 0;
1096                         }
1097                 } else if (buffer_delay(bh)) {
1098                         if (type != XFS_IO_DELALLOC) {
1099                                 type = XFS_IO_DELALLOC;
1100                                 imap_valid = 0;
1101                         }
1102                 } else if (buffer_uptodate(bh)) {
1103                         if (type != XFS_IO_OVERWRITE) {
1104                                 type = XFS_IO_OVERWRITE;
1105                                 imap_valid = 0;
1106                         }
1107                 } else {
1108                         if (PageUptodate(page))
1109                                 ASSERT(buffer_mapped(bh));
1110                         /*
1111                          * This buffer is not uptodate and will not be
1112                          * written to disk.  Ensure that we will put any
1113                          * subsequent writeable buffers into a new
1114                          * ioend.
1115                          */
1116                         imap_valid = 0;
1117                         continue;
1118                 }
1119
1120                 if (imap_valid)
1121                         imap_valid = xfs_imap_valid(inode, &imap, offset);
1122                 if (!imap_valid) {
1123                         /*
1124                          * If we didn't have a valid mapping then we need to
1125                          * put the new mapping into a separate ioend structure.
1126                          * This ensures non-contiguous extents always have
1127                          * separate ioends, which is particularly important
1128                          * for unwritten extent conversion at I/O completion
1129                          * time.
1130                          */
1131                         new_ioend = 1;
1132                         err = xfs_map_blocks(inode, offset, &imap, type,
1133                                              nonblocking);
1134                         if (err)
1135                                 goto error;
1136                         imap_valid = xfs_imap_valid(inode, &imap, offset);
1137                 }
1138                 if (imap_valid) {
1139                         lock_buffer(bh);
1140                         if (type != XFS_IO_OVERWRITE)
1141                                 xfs_map_at_offset(inode, bh, &imap, offset);
1142                         xfs_add_to_ioend(inode, bh, offset, type, &ioend,
1143                                          new_ioend);
1144                         count++;
1145                 }
1146
1147                 if (!iohead)
1148                         iohead = ioend;
1149
1150         } while (offset += len, ((bh = bh->b_this_page) != head));
1151
1152         if (uptodate && bh == head)
1153                 SetPageUptodate(page);
1154
1155         xfs_start_page_writeback(page, 1, count);
1156
1157         /* if there is no IO to be submitted for this page, we are done */
1158         if (!ioend)
1159                 return 0;
1160
1161         ASSERT(iohead);
1162
1163         /*
1164          * Any errors from this point onwards need tobe reported through the IO
1165          * completion path as we have marked the initial page as under writeback
1166          * and unlocked it.
1167          */
1168         if (imap_valid) {
1169                 xfs_off_t               end_index;
1170
1171                 end_index = imap.br_startoff + imap.br_blockcount;
1172
1173                 /* to bytes */
1174                 end_index <<= inode->i_blkbits;
1175
1176                 /* to pages */
1177                 end_index = (end_index - 1) >> PAGE_CACHE_SHIFT;
1178
1179                 /* check against file size */
1180                 if (end_index > last_index)
1181                         end_index = last_index;
1182
1183                 xfs_cluster_write(inode, page->index + 1, &imap, &ioend,
1184                                   wbc, end_index);
1185         }
1186
1187
1188         /*
1189          * Reserve log space if we might write beyond the on-disk inode size.
1190          */
1191         err = 0;
1192         if (ioend->io_type != XFS_IO_UNWRITTEN && xfs_ioend_is_append(ioend))
1193                 err = xfs_setfilesize_trans_alloc(ioend);
1194
1195         xfs_submit_ioend(wbc, iohead, err);
1196
1197         return 0;
1198
1199 error:
1200         if (iohead)
1201                 xfs_cancel_ioend(iohead);
1202
1203         if (err == -EAGAIN)
1204                 goto redirty;
1205
1206         xfs_aops_discard_page(page);
1207         ClearPageUptodate(page);
1208         unlock_page(page);
1209         return err;
1210
1211 redirty:
1212         redirty_page_for_writepage(wbc, page);
1213         unlock_page(page);
1214         return 0;
1215 }
1216
1217 STATIC int
1218 xfs_vm_writepages(
1219         struct address_space    *mapping,
1220         struct writeback_control *wbc)
1221 {
1222         xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1223         return generic_writepages(mapping, wbc);
1224 }
1225
1226 /*
1227  * Called to move a page into cleanable state - and from there
1228  * to be released. The page should already be clean. We always
1229  * have buffer heads in this call.
1230  *
1231  * Returns 1 if the page is ok to release, 0 otherwise.
1232  */
1233 STATIC int
1234 xfs_vm_releasepage(
1235         struct page             *page,
1236         gfp_t                   gfp_mask)
1237 {
1238         int                     delalloc, unwritten;
1239
1240         trace_xfs_releasepage(page->mapping->host, page, 0, 0);
1241
1242         xfs_count_page_state(page, &delalloc, &unwritten);
1243
1244         if (WARN_ON_ONCE(delalloc))
1245                 return 0;
1246         if (WARN_ON_ONCE(unwritten))
1247                 return 0;
1248
1249         return try_to_free_buffers(page);
1250 }
1251
1252 STATIC int
1253 __xfs_get_blocks(
1254         struct inode            *inode,
1255         sector_t                iblock,
1256         struct buffer_head      *bh_result,
1257         int                     create,
1258         int                     direct)
1259 {
1260         struct xfs_inode        *ip = XFS_I(inode);
1261         struct xfs_mount        *mp = ip->i_mount;
1262         xfs_fileoff_t           offset_fsb, end_fsb;
1263         int                     error = 0;
1264         int                     lockmode = 0;
1265         struct xfs_bmbt_irec    imap;
1266         int                     nimaps = 1;
1267         xfs_off_t               offset;
1268         ssize_t                 size;
1269         int                     new = 0;
1270
1271         if (XFS_FORCED_SHUTDOWN(mp))
1272                 return -EIO;
1273
1274         offset = (xfs_off_t)iblock << inode->i_blkbits;
1275         ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1276         size = bh_result->b_size;
1277
1278         if (!create && direct && offset >= i_size_read(inode))
1279                 return 0;
1280
1281         /*
1282          * Direct I/O is usually done on preallocated files, so try getting
1283          * a block mapping without an exclusive lock first.  For buffered
1284          * writes we already have the exclusive iolock anyway, so avoiding
1285          * a lock roundtrip here by taking the ilock exclusive from the
1286          * beginning is a useful micro optimization.
1287          */
1288         if (create && !direct) {
1289                 lockmode = XFS_ILOCK_EXCL;
1290                 xfs_ilock(ip, lockmode);
1291         } else {
1292                 lockmode = xfs_ilock_data_map_shared(ip);
1293         }
1294
1295         ASSERT(offset <= mp->m_super->s_maxbytes);
1296         if (offset + size > mp->m_super->s_maxbytes)
1297                 size = mp->m_super->s_maxbytes - offset;
1298         end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1299         offset_fsb = XFS_B_TO_FSBT(mp, offset);
1300
1301         error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
1302                                 &imap, &nimaps, XFS_BMAPI_ENTIRE);
1303         if (error)
1304                 goto out_unlock;
1305
1306         if (create &&
1307             (!nimaps ||
1308              (imap.br_startblock == HOLESTARTBLOCK ||
1309               imap.br_startblock == DELAYSTARTBLOCK))) {
1310                 if (direct || xfs_get_extsz_hint(ip)) {
1311                         /*
1312                          * Drop the ilock in preparation for starting the block
1313                          * allocation transaction.  It will be retaken
1314                          * exclusively inside xfs_iomap_write_direct for the
1315                          * actual allocation.
1316                          */
1317                         xfs_iunlock(ip, lockmode);
1318                         error = xfs_iomap_write_direct(ip, offset, size,
1319                                                        &imap, nimaps);
1320                         if (error)
1321                                 return error;
1322                         new = 1;
1323                 } else {
1324                         /*
1325                          * Delalloc reservations do not require a transaction,
1326                          * we can go on without dropping the lock here. If we
1327                          * are allocating a new delalloc block, make sure that
1328                          * we set the new flag so that we mark the buffer new so
1329                          * that we know that it is newly allocated if the write
1330                          * fails.
1331                          */
1332                         if (nimaps && imap.br_startblock == HOLESTARTBLOCK)
1333                                 new = 1;
1334                         error = xfs_iomap_write_delay(ip, offset, size, &imap);
1335                         if (error)
1336                                 goto out_unlock;
1337
1338                         xfs_iunlock(ip, lockmode);
1339                 }
1340
1341                 trace_xfs_get_blocks_alloc(ip, offset, size, 0, &imap);
1342         } else if (nimaps) {
1343                 trace_xfs_get_blocks_found(ip, offset, size, 0, &imap);
1344                 xfs_iunlock(ip, lockmode);
1345         } else {
1346                 trace_xfs_get_blocks_notfound(ip, offset, size);
1347                 goto out_unlock;
1348         }
1349
1350         if (imap.br_startblock != HOLESTARTBLOCK &&
1351             imap.br_startblock != DELAYSTARTBLOCK) {
1352                 /*
1353                  * For unwritten extents do not report a disk address on
1354                  * the read case (treat as if we're reading into a hole).
1355                  */
1356                 if (create || !ISUNWRITTEN(&imap))
1357                         xfs_map_buffer(inode, bh_result, &imap, offset);
1358                 if (create && ISUNWRITTEN(&imap)) {
1359                         if (direct) {
1360                                 bh_result->b_private = inode;
1361                                 set_buffer_defer_completion(bh_result);
1362                         }
1363                         set_buffer_unwritten(bh_result);
1364                 }
1365         }
1366
1367         /*
1368          * If this is a realtime file, data may be on a different device.
1369          * to that pointed to from the buffer_head b_bdev currently.
1370          */
1371         bh_result->b_bdev = xfs_find_bdev_for_inode(inode);
1372
1373         /*
1374          * If we previously allocated a block out beyond eof and we are now
1375          * coming back to use it then we will need to flag it as new even if it
1376          * has a disk address.
1377          *
1378          * With sub-block writes into unwritten extents we also need to mark
1379          * the buffer as new so that the unwritten parts of the buffer gets
1380          * correctly zeroed.
1381          */
1382         if (create &&
1383             ((!buffer_mapped(bh_result) && !buffer_uptodate(bh_result)) ||
1384              (offset >= i_size_read(inode)) ||
1385              (new || ISUNWRITTEN(&imap))))
1386                 set_buffer_new(bh_result);
1387
1388         if (imap.br_startblock == DELAYSTARTBLOCK) {
1389                 BUG_ON(direct);
1390                 if (create) {
1391                         set_buffer_uptodate(bh_result);
1392                         set_buffer_mapped(bh_result);
1393                         set_buffer_delay(bh_result);
1394                 }
1395         }
1396
1397         /*
1398          * If this is O_DIRECT or the mpage code calling tell them how large
1399          * the mapping is, so that we can avoid repeated get_blocks calls.
1400          *
1401          * If the mapping spans EOF, then we have to break the mapping up as the
1402          * mapping for blocks beyond EOF must be marked new so that sub block
1403          * regions can be correctly zeroed. We can't do this for mappings within
1404          * EOF unless the mapping was just allocated or is unwritten, otherwise
1405          * the callers would overwrite existing data with zeros. Hence we have
1406          * to split the mapping into a range up to and including EOF, and a
1407          * second mapping for beyond EOF.
1408          */
1409         if (direct || size > (1 << inode->i_blkbits)) {
1410                 xfs_off_t               mapping_size;
1411
1412                 mapping_size = imap.br_startoff + imap.br_blockcount - iblock;
1413                 mapping_size <<= inode->i_blkbits;
1414
1415                 ASSERT(mapping_size > 0);
1416                 if (mapping_size > size)
1417                         mapping_size = size;
1418                 if (offset < i_size_read(inode) &&
1419                     offset + mapping_size >= i_size_read(inode)) {
1420                         /* limit mapping to block that spans EOF */
1421                         mapping_size = roundup_64(i_size_read(inode) - offset,
1422                                                   1 << inode->i_blkbits);
1423                 }
1424                 if (mapping_size > LONG_MAX)
1425                         mapping_size = LONG_MAX;
1426
1427                 bh_result->b_size = mapping_size;
1428         }
1429
1430         return 0;
1431
1432 out_unlock:
1433         xfs_iunlock(ip, lockmode);
1434         return error;
1435 }
1436
1437 int
1438 xfs_get_blocks(
1439         struct inode            *inode,
1440         sector_t                iblock,
1441         struct buffer_head      *bh_result,
1442         int                     create)
1443 {
1444         return __xfs_get_blocks(inode, iblock, bh_result, create, 0);
1445 }
1446
1447 STATIC int
1448 xfs_get_blocks_direct(
1449         struct inode            *inode,
1450         sector_t                iblock,
1451         struct buffer_head      *bh_result,
1452         int                     create)
1453 {
1454         return __xfs_get_blocks(inode, iblock, bh_result, create, 1);
1455 }
1456
1457 /*
1458  * Complete a direct I/O write request.
1459  *
1460  * If the private argument is non-NULL __xfs_get_blocks signals us that we
1461  * need to issue a transaction to convert the range from unwritten to written
1462  * extents.  In case this is regular synchronous I/O we just call xfs_end_io
1463  * to do this and we are done.  But in case this was a successful AIO
1464  * request this handler is called from interrupt context, from which we
1465  * can't start transactions.  In that case offload the I/O completion to
1466  * the workqueues we also use for buffered I/O completion.
1467  */
1468 STATIC void
1469 xfs_end_io_direct_write(
1470         struct kiocb            *iocb,
1471         loff_t                  offset,
1472         ssize_t                 size,
1473         void                    *private)
1474 {
1475         struct xfs_ioend        *ioend = iocb->private;
1476
1477         /*
1478          * While the generic direct I/O code updates the inode size, it does
1479          * so only after the end_io handler is called, which means our
1480          * end_io handler thinks the on-disk size is outside the in-core
1481          * size.  To prevent this just update it a little bit earlier here.
1482          */
1483         if (offset + size > i_size_read(ioend->io_inode))
1484                 i_size_write(ioend->io_inode, offset + size);
1485
1486         /*
1487          * blockdev_direct_IO can return an error even after the I/O
1488          * completion handler was called.  Thus we need to protect
1489          * against double-freeing.
1490          */
1491         iocb->private = NULL;
1492
1493         ioend->io_offset = offset;
1494         ioend->io_size = size;
1495         if (private && size > 0)
1496                 ioend->io_type = XFS_IO_UNWRITTEN;
1497
1498         xfs_finish_ioend_sync(ioend);
1499 }
1500
1501 STATIC ssize_t
1502 xfs_vm_direct_IO(
1503         int                     rw,
1504         struct kiocb            *iocb,
1505         struct iov_iter         *iter,
1506         loff_t                  offset)
1507 {
1508         struct inode            *inode = iocb->ki_filp->f_mapping->host;
1509         struct block_device     *bdev = xfs_find_bdev_for_inode(inode);
1510         struct xfs_ioend        *ioend = NULL;
1511         ssize_t                 ret;
1512
1513         if (rw & WRITE) {
1514                 size_t size = iov_iter_count(iter);
1515
1516                 /*
1517                  * We cannot preallocate a size update transaction here as we
1518                  * don't know whether allocation is necessary or not. Hence we
1519                  * can only tell IO completion that one is necessary if we are
1520                  * not doing unwritten extent conversion.
1521                  */
1522                 iocb->private = ioend = xfs_alloc_ioend(inode, XFS_IO_DIRECT);
1523                 if (offset + size > XFS_I(inode)->i_d.di_size)
1524                         ioend->io_isdirect = 1;
1525
1526                 ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iter,
1527                                             offset, xfs_get_blocks_direct,
1528                                             xfs_end_io_direct_write, NULL,
1529                                             DIO_ASYNC_EXTEND);
1530                 if (ret != -EIOCBQUEUED && iocb->private)
1531                         goto out_destroy_ioend;
1532         } else {
1533                 ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iter,
1534                                             offset, xfs_get_blocks_direct,
1535                                             NULL, NULL, 0);
1536         }
1537
1538         return ret;
1539
1540 out_destroy_ioend:
1541         xfs_destroy_ioend(ioend);
1542         return ret;
1543 }
1544
1545 /*
1546  * Punch out the delalloc blocks we have already allocated.
1547  *
1548  * Don't bother with xfs_setattr given that nothing can have made it to disk yet
1549  * as the page is still locked at this point.
1550  */
1551 STATIC void
1552 xfs_vm_kill_delalloc_range(
1553         struct inode            *inode,
1554         loff_t                  start,
1555         loff_t                  end)
1556 {
1557         struct xfs_inode        *ip = XFS_I(inode);
1558         xfs_fileoff_t           start_fsb;
1559         xfs_fileoff_t           end_fsb;
1560         int                     error;
1561
1562         start_fsb = XFS_B_TO_FSB(ip->i_mount, start);
1563         end_fsb = XFS_B_TO_FSB(ip->i_mount, end);
1564         if (end_fsb <= start_fsb)
1565                 return;
1566
1567         xfs_ilock(ip, XFS_ILOCK_EXCL);
1568         error = xfs_bmap_punch_delalloc_range(ip, start_fsb,
1569                                                 end_fsb - start_fsb);
1570         if (error) {
1571                 /* something screwed, just bail */
1572                 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
1573                         xfs_alert(ip->i_mount,
1574                 "xfs_vm_write_failed: unable to clean up ino %lld",
1575                                         ip->i_ino);
1576                 }
1577         }
1578         xfs_iunlock(ip, XFS_ILOCK_EXCL);
1579 }
1580
1581 STATIC void
1582 xfs_vm_write_failed(
1583         struct inode            *inode,
1584         struct page             *page,
1585         loff_t                  pos,
1586         unsigned                len)
1587 {
1588         loff_t                  block_offset;
1589         loff_t                  block_start;
1590         loff_t                  block_end;
1591         loff_t                  from = pos & (PAGE_CACHE_SIZE - 1);
1592         loff_t                  to = from + len;
1593         struct buffer_head      *bh, *head;
1594
1595         /*
1596          * The request pos offset might be 32 or 64 bit, this is all fine
1597          * on 64-bit platform.  However, for 64-bit pos request on 32-bit
1598          * platform, the high 32-bit will be masked off if we evaluate the
1599          * block_offset via (pos & PAGE_MASK) because the PAGE_MASK is
1600          * 0xfffff000 as an unsigned long, hence the result is incorrect
1601          * which could cause the following ASSERT failed in most cases.
1602          * In order to avoid this, we can evaluate the block_offset of the
1603          * start of the page by using shifts rather than masks the mismatch
1604          * problem.
1605          */
1606         block_offset = (pos >> PAGE_CACHE_SHIFT) << PAGE_CACHE_SHIFT;
1607
1608         ASSERT(block_offset + from == pos);
1609
1610         head = page_buffers(page);
1611         block_start = 0;
1612         for (bh = head; bh != head || !block_start;
1613              bh = bh->b_this_page, block_start = block_end,
1614                                    block_offset += bh->b_size) {
1615                 block_end = block_start + bh->b_size;
1616
1617                 /* skip buffers before the write */
1618                 if (block_end <= from)
1619                         continue;
1620
1621                 /* if the buffer is after the write, we're done */
1622                 if (block_start >= to)
1623                         break;
1624
1625                 if (!buffer_delay(bh))
1626                         continue;
1627
1628                 if (!buffer_new(bh) && block_offset < i_size_read(inode))
1629                         continue;
1630
1631                 xfs_vm_kill_delalloc_range(inode, block_offset,
1632                                            block_offset + bh->b_size);
1633
1634                 /*
1635                  * This buffer does not contain data anymore. make sure anyone
1636                  * who finds it knows that for certain.
1637                  */
1638                 clear_buffer_delay(bh);
1639                 clear_buffer_uptodate(bh);
1640                 clear_buffer_mapped(bh);
1641                 clear_buffer_new(bh);
1642                 clear_buffer_dirty(bh);
1643         }
1644
1645 }
1646
1647 /*
1648  * This used to call block_write_begin(), but it unlocks and releases the page
1649  * on error, and we need that page to be able to punch stale delalloc blocks out
1650  * on failure. hence we copy-n-waste it here and call xfs_vm_write_failed() at
1651  * the appropriate point.
1652  */
1653 STATIC int
1654 xfs_vm_write_begin(
1655         struct file             *file,
1656         struct address_space    *mapping,
1657         loff_t                  pos,
1658         unsigned                len,
1659         unsigned                flags,
1660         struct page             **pagep,
1661         void                    **fsdata)
1662 {
1663         pgoff_t                 index = pos >> PAGE_CACHE_SHIFT;
1664         struct page             *page;
1665         int                     status;
1666
1667         ASSERT(len <= PAGE_CACHE_SIZE);
1668
1669         page = grab_cache_page_write_begin(mapping, index, flags);
1670         if (!page)
1671                 return -ENOMEM;
1672
1673         status = __block_write_begin(page, pos, len, xfs_get_blocks);
1674         if (unlikely(status)) {
1675                 struct inode    *inode = mapping->host;
1676                 size_t          isize = i_size_read(inode);
1677
1678                 xfs_vm_write_failed(inode, page, pos, len);
1679                 unlock_page(page);
1680
1681                 /*
1682                  * If the write is beyond EOF, we only want to kill blocks
1683                  * allocated in this write, not blocks that were previously
1684                  * written successfully.
1685                  */
1686                 if (pos + len > isize) {
1687                         ssize_t start = max_t(ssize_t, pos, isize);
1688
1689                         truncate_pagecache_range(inode, start, pos + len);
1690                 }
1691
1692                 page_cache_release(page);
1693                 page = NULL;
1694         }
1695
1696         *pagep = page;
1697         return status;
1698 }
1699
1700 /*
1701  * On failure, we only need to kill delalloc blocks beyond EOF in the range of
1702  * this specific write because they will never be written. Previous writes
1703  * beyond EOF where block allocation succeeded do not need to be trashed, so
1704  * only new blocks from this write should be trashed. For blocks within
1705  * EOF, generic_write_end() zeros them so they are safe to leave alone and be
1706  * written with all the other valid data.
1707  */
1708 STATIC int
1709 xfs_vm_write_end(
1710         struct file             *file,
1711         struct address_space    *mapping,
1712         loff_t                  pos,
1713         unsigned                len,
1714         unsigned                copied,
1715         struct page             *page,
1716         void                    *fsdata)
1717 {
1718         int                     ret;
1719
1720         ASSERT(len <= PAGE_CACHE_SIZE);
1721
1722         ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
1723         if (unlikely(ret < len)) {
1724                 struct inode    *inode = mapping->host;
1725                 size_t          isize = i_size_read(inode);
1726                 loff_t          to = pos + len;
1727
1728                 if (to > isize) {
1729                         /* only kill blocks in this write beyond EOF */
1730                         if (pos > isize)
1731                                 isize = pos;
1732                         xfs_vm_kill_delalloc_range(inode, isize, to);
1733                         truncate_pagecache_range(inode, isize, to);
1734                 }
1735         }
1736         return ret;
1737 }
1738
1739 STATIC sector_t
1740 xfs_vm_bmap(
1741         struct address_space    *mapping,
1742         sector_t                block)
1743 {
1744         struct inode            *inode = (struct inode *)mapping->host;
1745         struct xfs_inode        *ip = XFS_I(inode);
1746
1747         trace_xfs_vm_bmap(XFS_I(inode));
1748         xfs_ilock(ip, XFS_IOLOCK_SHARED);
1749         filemap_write_and_wait(mapping);
1750         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
1751         return generic_block_bmap(mapping, block, xfs_get_blocks);
1752 }
1753
1754 STATIC int
1755 xfs_vm_readpage(
1756         struct file             *unused,
1757         struct page             *page)
1758 {
1759         return mpage_readpage(page, xfs_get_blocks);
1760 }
1761
1762 STATIC int
1763 xfs_vm_readpages(
1764         struct file             *unused,
1765         struct address_space    *mapping,
1766         struct list_head        *pages,
1767         unsigned                nr_pages)
1768 {
1769         return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1770 }
1771
1772 /*
1773  * This is basically a copy of __set_page_dirty_buffers() with one
1774  * small tweak: buffers beyond EOF do not get marked dirty. If we mark them
1775  * dirty, we'll never be able to clean them because we don't write buffers
1776  * beyond EOF, and that means we can't invalidate pages that span EOF
1777  * that have been marked dirty. Further, the dirty state can leak into
1778  * the file interior if the file is extended, resulting in all sorts of
1779  * bad things happening as the state does not match the underlying data.
1780  *
1781  * XXX: this really indicates that bufferheads in XFS need to die. Warts like
1782  * this only exist because of bufferheads and how the generic code manages them.
1783  */
1784 STATIC int
1785 xfs_vm_set_page_dirty(
1786         struct page             *page)
1787 {
1788         struct address_space    *mapping = page->mapping;
1789         struct inode            *inode = mapping->host;
1790         loff_t                  end_offset;
1791         loff_t                  offset;
1792         int                     newly_dirty;
1793
1794         if (unlikely(!mapping))
1795                 return !TestSetPageDirty(page);
1796
1797         end_offset = i_size_read(inode);
1798         offset = page_offset(page);
1799
1800         spin_lock(&mapping->private_lock);
1801         if (page_has_buffers(page)) {
1802                 struct buffer_head *head = page_buffers(page);
1803                 struct buffer_head *bh = head;
1804
1805                 do {
1806                         if (offset < end_offset)
1807                                 set_buffer_dirty(bh);
1808                         bh = bh->b_this_page;
1809                         offset += 1 << inode->i_blkbits;
1810                 } while (bh != head);
1811         }
1812         newly_dirty = !TestSetPageDirty(page);
1813         spin_unlock(&mapping->private_lock);
1814
1815         if (newly_dirty) {
1816                 /* sigh - __set_page_dirty() is static, so copy it here, too */
1817                 unsigned long flags;
1818
1819                 spin_lock_irqsave(&mapping->tree_lock, flags);
1820                 if (page->mapping) {    /* Race with truncate? */
1821                         WARN_ON_ONCE(!PageUptodate(page));
1822                         account_page_dirtied(page, mapping);
1823                         radix_tree_tag_set(&mapping->page_tree,
1824                                         page_index(page), PAGECACHE_TAG_DIRTY);
1825                 }
1826                 spin_unlock_irqrestore(&mapping->tree_lock, flags);
1827                 __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
1828         }
1829         return newly_dirty;
1830 }
1831
1832 const struct address_space_operations xfs_address_space_operations = {
1833         .readpage               = xfs_vm_readpage,
1834         .readpages              = xfs_vm_readpages,
1835         .writepage              = xfs_vm_writepage,
1836         .writepages             = xfs_vm_writepages,
1837         .set_page_dirty         = xfs_vm_set_page_dirty,
1838         .releasepage            = xfs_vm_releasepage,
1839         .invalidatepage         = xfs_vm_invalidatepage,
1840         .write_begin            = xfs_vm_write_begin,
1841         .write_end              = xfs_vm_write_end,
1842         .bmap                   = xfs_vm_bmap,
1843         .direct_IO              = xfs_vm_direct_IO,
1844         .migratepage            = buffer_migrate_page,
1845         .is_partially_uptodate  = block_is_partially_uptodate,
1846         .error_remove_page      = generic_error_remove_page,
1847 };