ebfde553da38dd762ac20037afe96f63dac592d5
[cascardo/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_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/gfp.h>
35 #include <linux/mpage.h>
36 #include <linux/pagevec.h>
37 #include <linux/writeback.h>
38
39 /* flags for direct write completions */
40 #define XFS_DIO_FLAG_UNWRITTEN  (1 << 0)
41 #define XFS_DIO_FLAG_APPEND     (1 << 1)
42
43 /*
44  * structure owned by writepages passed to individual writepage calls
45  */
46 struct xfs_writepage_ctx {
47         struct xfs_bmbt_irec    imap;
48         bool                    imap_valid;
49         unsigned int            io_type;
50         struct xfs_ioend        *ioend;
51         sector_t                last_block;
52 };
53
54 void
55 xfs_count_page_state(
56         struct page             *page,
57         int                     *delalloc,
58         int                     *unwritten)
59 {
60         struct buffer_head      *bh, *head;
61
62         *delalloc = *unwritten = 0;
63
64         bh = head = page_buffers(page);
65         do {
66                 if (buffer_unwritten(bh))
67                         (*unwritten) = 1;
68                 else if (buffer_delay(bh))
69                         (*delalloc) = 1;
70         } while ((bh = bh->b_this_page) != head);
71 }
72
73 struct block_device *
74 xfs_find_bdev_for_inode(
75         struct inode            *inode)
76 {
77         struct xfs_inode        *ip = XFS_I(inode);
78         struct xfs_mount        *mp = ip->i_mount;
79
80         if (XFS_IS_REALTIME_INODE(ip))
81                 return mp->m_rtdev_targp->bt_bdev;
82         else
83                 return mp->m_ddev_targp->bt_bdev;
84 }
85
86 /*
87  * We're now finished for good with this page.  Update the page state via the
88  * associated buffer_heads, paying attention to the start and end offsets that
89  * we need to process on the page.
90  *
91  * Landmine Warning: bh->b_end_io() will call end_page_writeback() on the last
92  * buffer in the IO. Once it does this, it is unsafe to access the bufferhead or
93  * the page at all, as we may be racing with memory reclaim and it can free both
94  * the bufferhead chain and the page as it will see the page as clean and
95  * unused.
96  */
97 static void
98 xfs_finish_page_writeback(
99         struct inode            *inode,
100         struct bio_vec          *bvec,
101         int                     error)
102 {
103         unsigned int            end = bvec->bv_offset + bvec->bv_len - 1;
104         struct buffer_head      *head, *bh, *next;
105         unsigned int            off = 0;
106         unsigned int            bsize;
107
108         ASSERT(bvec->bv_offset < PAGE_SIZE);
109         ASSERT((bvec->bv_offset & ((1 << inode->i_blkbits) - 1)) == 0);
110         ASSERT(end < PAGE_SIZE);
111         ASSERT((bvec->bv_len & ((1 << inode->i_blkbits) - 1)) == 0);
112
113         bh = head = page_buffers(bvec->bv_page);
114
115         bsize = bh->b_size;
116         do {
117                 next = bh->b_this_page;
118                 if (off < bvec->bv_offset)
119                         goto next_bh;
120                 if (off > end)
121                         break;
122                 bh->b_end_io(bh, !error);
123 next_bh:
124                 off += bsize;
125         } while ((bh = next) != head);
126 }
127
128 /*
129  * We're now finished for good with this ioend structure.  Update the page
130  * state, release holds on bios, and finally free up memory.  Do not use the
131  * ioend after this.
132  */
133 STATIC void
134 xfs_destroy_ioend(
135         struct xfs_ioend        *ioend,
136         int                     error)
137 {
138         struct inode            *inode = ioend->io_inode;
139         struct bio              *last = ioend->io_bio;
140         struct bio              *bio, *next;
141
142         for (bio = &ioend->io_inline_bio; bio; bio = next) {
143                 struct bio_vec  *bvec;
144                 int             i;
145
146                 /*
147                  * For the last bio, bi_private points to the ioend, so we
148                  * need to explicitly end the iteration here.
149                  */
150                 if (bio == last)
151                         next = NULL;
152                 else
153                         next = bio->bi_private;
154
155                 /* walk each page on bio, ending page IO on them */
156                 bio_for_each_segment_all(bvec, bio, i)
157                         xfs_finish_page_writeback(inode, bvec, error);
158
159                 bio_put(bio);
160         }
161 }
162
163 /*
164  * Fast and loose check if this write could update the on-disk inode size.
165  */
166 static inline bool xfs_ioend_is_append(struct xfs_ioend *ioend)
167 {
168         return ioend->io_offset + ioend->io_size >
169                 XFS_I(ioend->io_inode)->i_d.di_size;
170 }
171
172 STATIC int
173 xfs_setfilesize_trans_alloc(
174         struct xfs_ioend        *ioend)
175 {
176         struct xfs_mount        *mp = XFS_I(ioend->io_inode)->i_mount;
177         struct xfs_trans        *tp;
178         int                     error;
179
180         error = xfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0, &tp);
181         if (error)
182                 return error;
183
184         ioend->io_append_trans = tp;
185
186         /*
187          * We may pass freeze protection with a transaction.  So tell lockdep
188          * we released it.
189          */
190         __sb_writers_release(ioend->io_inode->i_sb, SB_FREEZE_FS);
191         /*
192          * We hand off the transaction to the completion thread now, so
193          * clear the flag here.
194          */
195         current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS);
196         return 0;
197 }
198
199 /*
200  * Update on-disk file size now that data has been written to disk.
201  */
202 STATIC int
203 xfs_setfilesize(
204         struct xfs_inode        *ip,
205         struct xfs_trans        *tp,
206         xfs_off_t               offset,
207         size_t                  size)
208 {
209         xfs_fsize_t             isize;
210
211         xfs_ilock(ip, XFS_ILOCK_EXCL);
212         isize = xfs_new_eof(ip, offset + size);
213         if (!isize) {
214                 xfs_iunlock(ip, XFS_ILOCK_EXCL);
215                 xfs_trans_cancel(tp);
216                 return 0;
217         }
218
219         trace_xfs_setfilesize(ip, offset, size);
220
221         ip->i_d.di_size = isize;
222         xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
223         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
224
225         return xfs_trans_commit(tp);
226 }
227
228 STATIC int
229 xfs_setfilesize_ioend(
230         struct xfs_ioend        *ioend,
231         int                     error)
232 {
233         struct xfs_inode        *ip = XFS_I(ioend->io_inode);
234         struct xfs_trans        *tp = ioend->io_append_trans;
235
236         /*
237          * The transaction may have been allocated in the I/O submission thread,
238          * thus we need to mark ourselves as being in a transaction manually.
239          * Similarly for freeze protection.
240          */
241         current_set_flags_nested(&tp->t_pflags, PF_FSTRANS);
242         __sb_writers_acquired(VFS_I(ip)->i_sb, SB_FREEZE_FS);
243
244         /* we abort the update if there was an IO error */
245         if (error) {
246                 xfs_trans_cancel(tp);
247                 return error;
248         }
249
250         return xfs_setfilesize(ip, tp, ioend->io_offset, ioend->io_size);
251 }
252
253 /*
254  * IO write completion.
255  */
256 STATIC void
257 xfs_end_io(
258         struct work_struct *work)
259 {
260         struct xfs_ioend        *ioend =
261                 container_of(work, struct xfs_ioend, io_work);
262         struct xfs_inode        *ip = XFS_I(ioend->io_inode);
263         int                     error = ioend->io_bio->bi_error;
264
265         /*
266          * Set an error if the mount has shut down and proceed with end I/O
267          * processing so it can perform whatever cleanups are necessary.
268          */
269         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
270                 error = -EIO;
271
272         /*
273          * For unwritten extents we need to issue transactions to convert a
274          * range to normal written extens after the data I/O has finished.
275          * Detecting and handling completion IO errors is done individually
276          * for each case as different cleanup operations need to be performed
277          * on error.
278          */
279         if (ioend->io_type == XFS_IO_UNWRITTEN) {
280                 if (error)
281                         goto done;
282                 error = xfs_iomap_write_unwritten(ip, ioend->io_offset,
283                                                   ioend->io_size);
284         } else if (ioend->io_append_trans) {
285                 error = xfs_setfilesize_ioend(ioend, error);
286         } else {
287                 ASSERT(!xfs_ioend_is_append(ioend));
288         }
289
290 done:
291         xfs_destroy_ioend(ioend, error);
292 }
293
294 STATIC void
295 xfs_end_bio(
296         struct bio              *bio)
297 {
298         struct xfs_ioend        *ioend = bio->bi_private;
299         struct xfs_mount        *mp = XFS_I(ioend->io_inode)->i_mount;
300
301         if (ioend->io_type == XFS_IO_UNWRITTEN)
302                 queue_work(mp->m_unwritten_workqueue, &ioend->io_work);
303         else if (ioend->io_append_trans)
304                 queue_work(mp->m_data_workqueue, &ioend->io_work);
305         else
306                 xfs_destroy_ioend(ioend, bio->bi_error);
307 }
308
309 STATIC int
310 xfs_map_blocks(
311         struct inode            *inode,
312         loff_t                  offset,
313         struct xfs_bmbt_irec    *imap,
314         int                     type)
315 {
316         struct xfs_inode        *ip = XFS_I(inode);
317         struct xfs_mount        *mp = ip->i_mount;
318         ssize_t                 count = 1 << inode->i_blkbits;
319         xfs_fileoff_t           offset_fsb, end_fsb;
320         int                     error = 0;
321         int                     bmapi_flags = XFS_BMAPI_ENTIRE;
322         int                     nimaps = 1;
323
324         if (XFS_FORCED_SHUTDOWN(mp))
325                 return -EIO;
326
327         if (type == XFS_IO_UNWRITTEN)
328                 bmapi_flags |= XFS_BMAPI_IGSTATE;
329
330         xfs_ilock(ip, XFS_ILOCK_SHARED);
331         ASSERT(ip->i_d.di_format != XFS_DINODE_FMT_BTREE ||
332                (ip->i_df.if_flags & XFS_IFEXTENTS));
333         ASSERT(offset <= mp->m_super->s_maxbytes);
334
335         if (offset + count > mp->m_super->s_maxbytes)
336                 count = mp->m_super->s_maxbytes - offset;
337         end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
338         offset_fsb = XFS_B_TO_FSBT(mp, offset);
339         error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
340                                 imap, &nimaps, bmapi_flags);
341         xfs_iunlock(ip, XFS_ILOCK_SHARED);
342
343         if (error)
344                 return error;
345
346         if (type == XFS_IO_DELALLOC &&
347             (!nimaps || isnullstartblock(imap->br_startblock))) {
348                 error = xfs_iomap_write_allocate(ip, offset, imap);
349                 if (!error)
350                         trace_xfs_map_blocks_alloc(ip, offset, count, type, imap);
351                 return error;
352         }
353
354 #ifdef DEBUG
355         if (type == XFS_IO_UNWRITTEN) {
356                 ASSERT(nimaps);
357                 ASSERT(imap->br_startblock != HOLESTARTBLOCK);
358                 ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
359         }
360 #endif
361         if (nimaps)
362                 trace_xfs_map_blocks_found(ip, offset, count, type, imap);
363         return 0;
364 }
365
366 STATIC bool
367 xfs_imap_valid(
368         struct inode            *inode,
369         struct xfs_bmbt_irec    *imap,
370         xfs_off_t               offset)
371 {
372         offset >>= inode->i_blkbits;
373
374         return offset >= imap->br_startoff &&
375                 offset < imap->br_startoff + imap->br_blockcount;
376 }
377
378 STATIC void
379 xfs_start_buffer_writeback(
380         struct buffer_head      *bh)
381 {
382         ASSERT(buffer_mapped(bh));
383         ASSERT(buffer_locked(bh));
384         ASSERT(!buffer_delay(bh));
385         ASSERT(!buffer_unwritten(bh));
386
387         mark_buffer_async_write(bh);
388         set_buffer_uptodate(bh);
389         clear_buffer_dirty(bh);
390 }
391
392 STATIC void
393 xfs_start_page_writeback(
394         struct page             *page,
395         int                     clear_dirty)
396 {
397         ASSERT(PageLocked(page));
398         ASSERT(!PageWriteback(page));
399
400         /*
401          * if the page was not fully cleaned, we need to ensure that the higher
402          * layers come back to it correctly. That means we need to keep the page
403          * dirty, and for WB_SYNC_ALL writeback we need to ensure the
404          * PAGECACHE_TAG_TOWRITE index mark is not removed so another attempt to
405          * write this page in this writeback sweep will be made.
406          */
407         if (clear_dirty) {
408                 clear_page_dirty_for_io(page);
409                 set_page_writeback(page);
410         } else
411                 set_page_writeback_keepwrite(page);
412
413         unlock_page(page);
414 }
415
416 static inline int xfs_bio_add_buffer(struct bio *bio, struct buffer_head *bh)
417 {
418         return bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh));
419 }
420
421 /*
422  * Submit the bio for an ioend. We are passed an ioend with a bio attached to
423  * it, and we submit that bio. The ioend may be used for multiple bio
424  * submissions, so we only want to allocate an append transaction for the ioend
425  * once. In the case of multiple bio submission, each bio will take an IO
426  * reference to the ioend to ensure that the ioend completion is only done once
427  * all bios have been submitted and the ioend is really done.
428  *
429  * If @fail is non-zero, it means that we have a situation where some part of
430  * the submission process has failed after we have marked paged for writeback
431  * and unlocked them. In this situation, we need to fail the bio and ioend
432  * rather than submit it to IO. This typically only happens on a filesystem
433  * shutdown.
434  */
435 STATIC int
436 xfs_submit_ioend(
437         struct writeback_control *wbc,
438         struct xfs_ioend        *ioend,
439         int                     status)
440 {
441         /* Reserve log space if we might write beyond the on-disk inode size. */
442         if (!status &&
443             ioend->io_type != XFS_IO_UNWRITTEN &&
444             xfs_ioend_is_append(ioend) &&
445             !ioend->io_append_trans)
446                 status = xfs_setfilesize_trans_alloc(ioend);
447
448         ioend->io_bio->bi_private = ioend;
449         ioend->io_bio->bi_end_io = xfs_end_bio;
450
451         /*
452          * If we are failing the IO now, just mark the ioend with an
453          * error and finish it. This will run IO completion immediately
454          * as there is only one reference to the ioend at this point in
455          * time.
456          */
457         if (status) {
458                 ioend->io_bio->bi_error = status;
459                 bio_endio(ioend->io_bio);
460                 return status;
461         }
462
463         submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE,
464                    ioend->io_bio);
465         return 0;
466 }
467
468 static void
469 xfs_init_bio_from_bh(
470         struct bio              *bio,
471         struct buffer_head      *bh)
472 {
473         bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9);
474         bio->bi_bdev = bh->b_bdev;
475 }
476
477 static struct xfs_ioend *
478 xfs_alloc_ioend(
479         struct inode            *inode,
480         unsigned int            type,
481         xfs_off_t               offset,
482         struct buffer_head      *bh)
483 {
484         struct xfs_ioend        *ioend;
485         struct bio              *bio;
486
487         bio = bio_alloc_bioset(GFP_NOFS, BIO_MAX_PAGES, xfs_ioend_bioset);
488         xfs_init_bio_from_bh(bio, bh);
489
490         ioend = container_of(bio, struct xfs_ioend, io_inline_bio);
491         INIT_LIST_HEAD(&ioend->io_list);
492         ioend->io_type = type;
493         ioend->io_inode = inode;
494         ioend->io_size = 0;
495         ioend->io_offset = offset;
496         INIT_WORK(&ioend->io_work, xfs_end_io);
497         ioend->io_append_trans = NULL;
498         ioend->io_bio = bio;
499         return ioend;
500 }
501
502 /*
503  * Allocate a new bio, and chain the old bio to the new one.
504  *
505  * Note that we have to do perform the chaining in this unintuitive order
506  * so that the bi_private linkage is set up in the right direction for the
507  * traversal in xfs_destroy_ioend().
508  */
509 static void
510 xfs_chain_bio(
511         struct xfs_ioend        *ioend,
512         struct writeback_control *wbc,
513         struct buffer_head      *bh)
514 {
515         struct bio *new;
516
517         new = bio_alloc(GFP_NOFS, BIO_MAX_PAGES);
518         xfs_init_bio_from_bh(new, bh);
519
520         bio_chain(ioend->io_bio, new);
521         bio_get(ioend->io_bio);         /* for xfs_destroy_ioend */
522         submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE,
523                    ioend->io_bio);
524         ioend->io_bio = new;
525 }
526
527 /*
528  * Test to see if we've been building up a completion structure for
529  * earlier buffers -- if so, we try to append to this ioend if we
530  * can, otherwise we finish off any current ioend and start another.
531  * Return the ioend we finished off so that the caller can submit it
532  * once it has finished processing the dirty page.
533  */
534 STATIC void
535 xfs_add_to_ioend(
536         struct inode            *inode,
537         struct buffer_head      *bh,
538         xfs_off_t               offset,
539         struct xfs_writepage_ctx *wpc,
540         struct writeback_control *wbc,
541         struct list_head        *iolist)
542 {
543         if (!wpc->ioend || wpc->io_type != wpc->ioend->io_type ||
544             bh->b_blocknr != wpc->last_block + 1 ||
545             offset != wpc->ioend->io_offset + wpc->ioend->io_size) {
546                 if (wpc->ioend)
547                         list_add(&wpc->ioend->io_list, iolist);
548                 wpc->ioend = xfs_alloc_ioend(inode, wpc->io_type, offset, bh);
549         }
550
551         /*
552          * If the buffer doesn't fit into the bio we need to allocate a new
553          * one.  This shouldn't happen more than once for a given buffer.
554          */
555         while (xfs_bio_add_buffer(wpc->ioend->io_bio, bh) != bh->b_size)
556                 xfs_chain_bio(wpc->ioend, wbc, bh);
557
558         wpc->ioend->io_size += bh->b_size;
559         wpc->last_block = bh->b_blocknr;
560         xfs_start_buffer_writeback(bh);
561 }
562
563 STATIC void
564 xfs_map_buffer(
565         struct inode            *inode,
566         struct buffer_head      *bh,
567         struct xfs_bmbt_irec    *imap,
568         xfs_off_t               offset)
569 {
570         sector_t                bn;
571         struct xfs_mount        *m = XFS_I(inode)->i_mount;
572         xfs_off_t               iomap_offset = XFS_FSB_TO_B(m, imap->br_startoff);
573         xfs_daddr_t             iomap_bn = xfs_fsb_to_db(XFS_I(inode), imap->br_startblock);
574
575         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
576         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
577
578         bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
579               ((offset - iomap_offset) >> inode->i_blkbits);
580
581         ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
582
583         bh->b_blocknr = bn;
584         set_buffer_mapped(bh);
585 }
586
587 STATIC void
588 xfs_map_at_offset(
589         struct inode            *inode,
590         struct buffer_head      *bh,
591         struct xfs_bmbt_irec    *imap,
592         xfs_off_t               offset)
593 {
594         ASSERT(imap->br_startblock != HOLESTARTBLOCK);
595         ASSERT(imap->br_startblock != DELAYSTARTBLOCK);
596
597         xfs_map_buffer(inode, bh, imap, offset);
598         set_buffer_mapped(bh);
599         clear_buffer_delay(bh);
600         clear_buffer_unwritten(bh);
601 }
602
603 /*
604  * Test if a given page contains at least one buffer of a given @type.
605  * If @check_all_buffers is true, then we walk all the buffers in the page to
606  * try to find one of the type passed in. If it is not set, then the caller only
607  * needs to check the first buffer on the page for a match.
608  */
609 STATIC bool
610 xfs_check_page_type(
611         struct page             *page,
612         unsigned int            type,
613         bool                    check_all_buffers)
614 {
615         struct buffer_head      *bh;
616         struct buffer_head      *head;
617
618         if (PageWriteback(page))
619                 return false;
620         if (!page->mapping)
621                 return false;
622         if (!page_has_buffers(page))
623                 return false;
624
625         bh = head = page_buffers(page);
626         do {
627                 if (buffer_unwritten(bh)) {
628                         if (type == XFS_IO_UNWRITTEN)
629                                 return true;
630                 } else if (buffer_delay(bh)) {
631                         if (type == XFS_IO_DELALLOC)
632                                 return true;
633                 } else if (buffer_dirty(bh) && buffer_mapped(bh)) {
634                         if (type == XFS_IO_OVERWRITE)
635                                 return true;
636                 }
637
638                 /* If we are only checking the first buffer, we are done now. */
639                 if (!check_all_buffers)
640                         break;
641         } while ((bh = bh->b_this_page) != head);
642
643         return false;
644 }
645
646 STATIC void
647 xfs_vm_invalidatepage(
648         struct page             *page,
649         unsigned int            offset,
650         unsigned int            length)
651 {
652         trace_xfs_invalidatepage(page->mapping->host, page, offset,
653                                  length);
654         block_invalidatepage(page, offset, length);
655 }
656
657 /*
658  * If the page has delalloc buffers on it, we need to punch them out before we
659  * invalidate the page. If we don't, we leave a stale delalloc mapping on the
660  * inode that can trip a BUG() in xfs_get_blocks() later on if a direct IO read
661  * is done on that same region - the delalloc extent is returned when none is
662  * supposed to be there.
663  *
664  * We prevent this by truncating away the delalloc regions on the page before
665  * invalidating it. Because they are delalloc, we can do this without needing a
666  * transaction. Indeed - if we get ENOSPC errors, we have to be able to do this
667  * truncation without a transaction as there is no space left for block
668  * reservation (typically why we see a ENOSPC in writeback).
669  *
670  * This is not a performance critical path, so for now just do the punching a
671  * buffer head at a time.
672  */
673 STATIC void
674 xfs_aops_discard_page(
675         struct page             *page)
676 {
677         struct inode            *inode = page->mapping->host;
678         struct xfs_inode        *ip = XFS_I(inode);
679         struct buffer_head      *bh, *head;
680         loff_t                  offset = page_offset(page);
681
682         if (!xfs_check_page_type(page, XFS_IO_DELALLOC, true))
683                 goto out_invalidate;
684
685         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
686                 goto out_invalidate;
687
688         xfs_alert(ip->i_mount,
689                 "page discard on page %p, inode 0x%llx, offset %llu.",
690                         page, ip->i_ino, offset);
691
692         xfs_ilock(ip, XFS_ILOCK_EXCL);
693         bh = head = page_buffers(page);
694         do {
695                 int             error;
696                 xfs_fileoff_t   start_fsb;
697
698                 if (!buffer_delay(bh))
699                         goto next_buffer;
700
701                 start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);
702                 error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);
703                 if (error) {
704                         /* something screwed, just bail */
705                         if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
706                                 xfs_alert(ip->i_mount,
707                         "page discard unable to remove delalloc mapping.");
708                         }
709                         break;
710                 }
711 next_buffer:
712                 offset += 1 << inode->i_blkbits;
713
714         } while ((bh = bh->b_this_page) != head);
715
716         xfs_iunlock(ip, XFS_ILOCK_EXCL);
717 out_invalidate:
718         xfs_vm_invalidatepage(page, 0, PAGE_SIZE);
719         return;
720 }
721
722 /*
723  * We implement an immediate ioend submission policy here to avoid needing to
724  * chain multiple ioends and hence nest mempool allocations which can violate
725  * forward progress guarantees we need to provide. The current ioend we are
726  * adding buffers to is cached on the writepage context, and if the new buffer
727  * does not append to the cached ioend it will create a new ioend and cache that
728  * instead.
729  *
730  * If a new ioend is created and cached, the old ioend is returned and queued
731  * locally for submission once the entire page is processed or an error has been
732  * detected.  While ioends are submitted immediately after they are completed,
733  * batching optimisations are provided by higher level block plugging.
734  *
735  * At the end of a writeback pass, there will be a cached ioend remaining on the
736  * writepage context that the caller will need to submit.
737  */
738 static int
739 xfs_writepage_map(
740         struct xfs_writepage_ctx *wpc,
741         struct writeback_control *wbc,
742         struct inode            *inode,
743         struct page             *page,
744         loff_t                  offset,
745         __uint64_t              end_offset)
746 {
747         LIST_HEAD(submit_list);
748         struct xfs_ioend        *ioend, *next;
749         struct buffer_head      *bh, *head;
750         ssize_t                 len = 1 << inode->i_blkbits;
751         int                     error = 0;
752         int                     count = 0;
753         int                     uptodate = 1;
754
755         bh = head = page_buffers(page);
756         offset = page_offset(page);
757         do {
758                 if (offset >= end_offset)
759                         break;
760                 if (!buffer_uptodate(bh))
761                         uptodate = 0;
762
763                 /*
764                  * set_page_dirty dirties all buffers in a page, independent
765                  * of their state.  The dirty state however is entirely
766                  * meaningless for holes (!mapped && uptodate), so skip
767                  * buffers covering holes here.
768                  */
769                 if (!buffer_mapped(bh) && buffer_uptodate(bh)) {
770                         wpc->imap_valid = false;
771                         continue;
772                 }
773
774                 if (buffer_unwritten(bh)) {
775                         if (wpc->io_type != XFS_IO_UNWRITTEN) {
776                                 wpc->io_type = XFS_IO_UNWRITTEN;
777                                 wpc->imap_valid = false;
778                         }
779                 } else if (buffer_delay(bh)) {
780                         if (wpc->io_type != XFS_IO_DELALLOC) {
781                                 wpc->io_type = XFS_IO_DELALLOC;
782                                 wpc->imap_valid = false;
783                         }
784                 } else if (buffer_uptodate(bh)) {
785                         if (wpc->io_type != XFS_IO_OVERWRITE) {
786                                 wpc->io_type = XFS_IO_OVERWRITE;
787                                 wpc->imap_valid = false;
788                         }
789                 } else {
790                         if (PageUptodate(page))
791                                 ASSERT(buffer_mapped(bh));
792                         /*
793                          * This buffer is not uptodate and will not be
794                          * written to disk.  Ensure that we will put any
795                          * subsequent writeable buffers into a new
796                          * ioend.
797                          */
798                         wpc->imap_valid = false;
799                         continue;
800                 }
801
802                 if (wpc->imap_valid)
803                         wpc->imap_valid = xfs_imap_valid(inode, &wpc->imap,
804                                                          offset);
805                 if (!wpc->imap_valid) {
806                         error = xfs_map_blocks(inode, offset, &wpc->imap,
807                                              wpc->io_type);
808                         if (error)
809                                 goto out;
810                         wpc->imap_valid = xfs_imap_valid(inode, &wpc->imap,
811                                                          offset);
812                 }
813                 if (wpc->imap_valid) {
814                         lock_buffer(bh);
815                         if (wpc->io_type != XFS_IO_OVERWRITE)
816                                 xfs_map_at_offset(inode, bh, &wpc->imap, offset);
817                         xfs_add_to_ioend(inode, bh, offset, wpc, wbc, &submit_list);
818                         count++;
819                 }
820
821         } while (offset += len, ((bh = bh->b_this_page) != head));
822
823         if (uptodate && bh == head)
824                 SetPageUptodate(page);
825
826         ASSERT(wpc->ioend || list_empty(&submit_list));
827
828 out:
829         /*
830          * On error, we have to fail the ioend here because we have locked
831          * buffers in the ioend. If we don't do this, we'll deadlock
832          * invalidating the page as that tries to lock the buffers on the page.
833          * Also, because we may have set pages under writeback, we have to make
834          * sure we run IO completion to mark the error state of the IO
835          * appropriately, so we can't cancel the ioend directly here. That means
836          * we have to mark this page as under writeback if we included any
837          * buffers from it in the ioend chain so that completion treats it
838          * correctly.
839          *
840          * If we didn't include the page in the ioend, the on error we can
841          * simply discard and unlock it as there are no other users of the page
842          * or it's buffers right now. The caller will still need to trigger
843          * submission of outstanding ioends on the writepage context so they are
844          * treated correctly on error.
845          */
846         if (count) {
847                 xfs_start_page_writeback(page, !error);
848
849                 /*
850                  * Preserve the original error if there was one, otherwise catch
851                  * submission errors here and propagate into subsequent ioend
852                  * submissions.
853                  */
854                 list_for_each_entry_safe(ioend, next, &submit_list, io_list) {
855                         int error2;
856
857                         list_del_init(&ioend->io_list);
858                         error2 = xfs_submit_ioend(wbc, ioend, error);
859                         if (error2 && !error)
860                                 error = error2;
861                 }
862         } else if (error) {
863                 xfs_aops_discard_page(page);
864                 ClearPageUptodate(page);
865                 unlock_page(page);
866         } else {
867                 /*
868                  * We can end up here with no error and nothing to write if we
869                  * race with a partial page truncate on a sub-page block sized
870                  * filesystem. In that case we need to mark the page clean.
871                  */
872                 xfs_start_page_writeback(page, 1);
873                 end_page_writeback(page);
874         }
875
876         mapping_set_error(page->mapping, error);
877         return error;
878 }
879
880 /*
881  * Write out a dirty page.
882  *
883  * For delalloc space on the page we need to allocate space and flush it.
884  * For unwritten space on the page we need to start the conversion to
885  * regular allocated space.
886  * For any other dirty buffer heads on the page we should flush them.
887  */
888 STATIC int
889 xfs_do_writepage(
890         struct page             *page,
891         struct writeback_control *wbc,
892         void                    *data)
893 {
894         struct xfs_writepage_ctx *wpc = data;
895         struct inode            *inode = page->mapping->host;
896         loff_t                  offset;
897         __uint64_t              end_offset;
898         pgoff_t                 end_index;
899
900         trace_xfs_writepage(inode, page, 0, 0);
901
902         ASSERT(page_has_buffers(page));
903
904         /*
905          * Refuse to write the page out if we are called from reclaim context.
906          *
907          * This avoids stack overflows when called from deeply used stacks in
908          * random callers for direct reclaim or memcg reclaim.  We explicitly
909          * allow reclaim from kswapd as the stack usage there is relatively low.
910          *
911          * This should never happen except in the case of a VM regression so
912          * warn about it.
913          */
914         if (WARN_ON_ONCE((current->flags & (PF_MEMALLOC|PF_KSWAPD)) ==
915                         PF_MEMALLOC))
916                 goto redirty;
917
918         /*
919          * Given that we do not allow direct reclaim to call us, we should
920          * never be called while in a filesystem transaction.
921          */
922         if (WARN_ON_ONCE(current->flags & PF_FSTRANS))
923                 goto redirty;
924
925         /*
926          * Is this page beyond the end of the file?
927          *
928          * The page index is less than the end_index, adjust the end_offset
929          * to the highest offset that this page should represent.
930          * -----------------------------------------------------
931          * |                    file mapping           | <EOF> |
932          * -----------------------------------------------------
933          * | Page ... | Page N-2 | Page N-1 |  Page N  |       |
934          * ^--------------------------------^----------|--------
935          * |     desired writeback range    |      see else    |
936          * ---------------------------------^------------------|
937          */
938         offset = i_size_read(inode);
939         end_index = offset >> PAGE_SHIFT;
940         if (page->index < end_index)
941                 end_offset = (xfs_off_t)(page->index + 1) << PAGE_SHIFT;
942         else {
943                 /*
944                  * Check whether the page to write out is beyond or straddles
945                  * i_size or not.
946                  * -------------------------------------------------------
947                  * |            file mapping                    | <EOF>  |
948                  * -------------------------------------------------------
949                  * | Page ... | Page N-2 | Page N-1 |  Page N   | Beyond |
950                  * ^--------------------------------^-----------|---------
951                  * |                                |      Straddles     |
952                  * ---------------------------------^-----------|--------|
953                  */
954                 unsigned offset_into_page = offset & (PAGE_SIZE - 1);
955
956                 /*
957                  * Skip the page if it is fully outside i_size, e.g. due to a
958                  * truncate operation that is in progress. We must redirty the
959                  * page so that reclaim stops reclaiming it. Otherwise
960                  * xfs_vm_releasepage() is called on it and gets confused.
961                  *
962                  * Note that the end_index is unsigned long, it would overflow
963                  * if the given offset is greater than 16TB on 32-bit system
964                  * and if we do check the page is fully outside i_size or not
965                  * via "if (page->index >= end_index + 1)" as "end_index + 1"
966                  * will be evaluated to 0.  Hence this page will be redirtied
967                  * and be written out repeatedly which would result in an
968                  * infinite loop, the user program that perform this operation
969                  * will hang.  Instead, we can verify this situation by checking
970                  * if the page to write is totally beyond the i_size or if it's
971                  * offset is just equal to the EOF.
972                  */
973                 if (page->index > end_index ||
974                     (page->index == end_index && offset_into_page == 0))
975                         goto redirty;
976
977                 /*
978                  * The page straddles i_size.  It must be zeroed out on each
979                  * and every writepage invocation because it may be mmapped.
980                  * "A file is mapped in multiples of the page size.  For a file
981                  * that is not a multiple of the page size, the remaining
982                  * memory is zeroed when mapped, and writes to that region are
983                  * not written out to the file."
984                  */
985                 zero_user_segment(page, offset_into_page, PAGE_SIZE);
986
987                 /* Adjust the end_offset to the end of file */
988                 end_offset = offset;
989         }
990
991         return xfs_writepage_map(wpc, wbc, inode, page, offset, end_offset);
992
993 redirty:
994         redirty_page_for_writepage(wbc, page);
995         unlock_page(page);
996         return 0;
997 }
998
999 STATIC int
1000 xfs_vm_writepage(
1001         struct page             *page,
1002         struct writeback_control *wbc)
1003 {
1004         struct xfs_writepage_ctx wpc = {
1005                 .io_type = XFS_IO_INVALID,
1006         };
1007         int                     ret;
1008
1009         ret = xfs_do_writepage(page, wbc, &wpc);
1010         if (wpc.ioend)
1011                 ret = xfs_submit_ioend(wbc, wpc.ioend, ret);
1012         return ret;
1013 }
1014
1015 STATIC int
1016 xfs_vm_writepages(
1017         struct address_space    *mapping,
1018         struct writeback_control *wbc)
1019 {
1020         struct xfs_writepage_ctx wpc = {
1021                 .io_type = XFS_IO_INVALID,
1022         };
1023         int                     ret;
1024
1025         xfs_iflags_clear(XFS_I(mapping->host), XFS_ITRUNCATED);
1026         if (dax_mapping(mapping))
1027                 return dax_writeback_mapping_range(mapping,
1028                                 xfs_find_bdev_for_inode(mapping->host), wbc);
1029
1030         ret = write_cache_pages(mapping, wbc, xfs_do_writepage, &wpc);
1031         if (wpc.ioend)
1032                 ret = xfs_submit_ioend(wbc, wpc.ioend, ret);
1033         return ret;
1034 }
1035
1036 /*
1037  * Called to move a page into cleanable state - and from there
1038  * to be released. The page should already be clean. We always
1039  * have buffer heads in this call.
1040  *
1041  * Returns 1 if the page is ok to release, 0 otherwise.
1042  */
1043 STATIC int
1044 xfs_vm_releasepage(
1045         struct page             *page,
1046         gfp_t                   gfp_mask)
1047 {
1048         int                     delalloc, unwritten;
1049
1050         trace_xfs_releasepage(page->mapping->host, page, 0, 0);
1051
1052         /*
1053          * mm accommodates an old ext3 case where clean pages might not have had
1054          * the dirty bit cleared. Thus, it can send actual dirty pages to
1055          * ->releasepage() via shrink_active_list(). Conversely,
1056          * block_invalidatepage() can send pages that are still marked dirty
1057          * but otherwise have invalidated buffers.
1058          *
1059          * We've historically freed buffers on the latter. Instead, quietly
1060          * filter out all dirty pages to avoid spurious buffer state warnings.
1061          * This can likely be removed once shrink_active_list() is fixed.
1062          */
1063         if (PageDirty(page))
1064                 return 0;
1065
1066         xfs_count_page_state(page, &delalloc, &unwritten);
1067
1068         if (WARN_ON_ONCE(delalloc))
1069                 return 0;
1070         if (WARN_ON_ONCE(unwritten))
1071                 return 0;
1072
1073         return try_to_free_buffers(page);
1074 }
1075
1076 /*
1077  * When we map a DIO buffer, we may need to pass flags to
1078  * xfs_end_io_direct_write to tell it what kind of write IO we are doing.
1079  *
1080  * Note that for DIO, an IO to the highest supported file block offset (i.e.
1081  * 2^63 - 1FSB bytes) will result in the offset + count overflowing a signed 64
1082  * bit variable. Hence if we see this overflow, we have to assume that the IO is
1083  * extending the file size. We won't know for sure until IO completion is run
1084  * and the actual max write offset is communicated to the IO completion
1085  * routine.
1086  */
1087 static void
1088 xfs_map_direct(
1089         struct inode            *inode,
1090         struct buffer_head      *bh_result,
1091         struct xfs_bmbt_irec    *imap,
1092         xfs_off_t               offset)
1093 {
1094         uintptr_t               *flags = (uintptr_t *)&bh_result->b_private;
1095         xfs_off_t               size = bh_result->b_size;
1096
1097         trace_xfs_get_blocks_map_direct(XFS_I(inode), offset, size,
1098                 ISUNWRITTEN(imap) ? XFS_IO_UNWRITTEN : XFS_IO_OVERWRITE, imap);
1099
1100         if (ISUNWRITTEN(imap)) {
1101                 *flags |= XFS_DIO_FLAG_UNWRITTEN;
1102                 set_buffer_defer_completion(bh_result);
1103         } else if (offset + size > i_size_read(inode) || offset + size < 0) {
1104                 *flags |= XFS_DIO_FLAG_APPEND;
1105                 set_buffer_defer_completion(bh_result);
1106         }
1107 }
1108
1109 /*
1110  * If this is O_DIRECT or the mpage code calling tell them how large the mapping
1111  * is, so that we can avoid repeated get_blocks calls.
1112  *
1113  * If the mapping spans EOF, then we have to break the mapping up as the mapping
1114  * for blocks beyond EOF must be marked new so that sub block regions can be
1115  * correctly zeroed. We can't do this for mappings within EOF unless the mapping
1116  * was just allocated or is unwritten, otherwise the callers would overwrite
1117  * existing data with zeros. Hence we have to split the mapping into a range up
1118  * to and including EOF, and a second mapping for beyond EOF.
1119  */
1120 static void
1121 xfs_map_trim_size(
1122         struct inode            *inode,
1123         sector_t                iblock,
1124         struct buffer_head      *bh_result,
1125         struct xfs_bmbt_irec    *imap,
1126         xfs_off_t               offset,
1127         ssize_t                 size)
1128 {
1129         xfs_off_t               mapping_size;
1130
1131         mapping_size = imap->br_startoff + imap->br_blockcount - iblock;
1132         mapping_size <<= inode->i_blkbits;
1133
1134         ASSERT(mapping_size > 0);
1135         if (mapping_size > size)
1136                 mapping_size = size;
1137         if (offset < i_size_read(inode) &&
1138             offset + mapping_size >= i_size_read(inode)) {
1139                 /* limit mapping to block that spans EOF */
1140                 mapping_size = roundup_64(i_size_read(inode) - offset,
1141                                           1 << inode->i_blkbits);
1142         }
1143         if (mapping_size > LONG_MAX)
1144                 mapping_size = LONG_MAX;
1145
1146         bh_result->b_size = mapping_size;
1147 }
1148
1149 STATIC int
1150 __xfs_get_blocks(
1151         struct inode            *inode,
1152         sector_t                iblock,
1153         struct buffer_head      *bh_result,
1154         int                     create,
1155         bool                    direct,
1156         bool                    dax_fault)
1157 {
1158         struct xfs_inode        *ip = XFS_I(inode);
1159         struct xfs_mount        *mp = ip->i_mount;
1160         xfs_fileoff_t           offset_fsb, end_fsb;
1161         int                     error = 0;
1162         int                     lockmode = 0;
1163         struct xfs_bmbt_irec    imap;
1164         int                     nimaps = 1;
1165         xfs_off_t               offset;
1166         ssize_t                 size;
1167         int                     new = 0;
1168
1169         BUG_ON(create && !direct);
1170
1171         if (XFS_FORCED_SHUTDOWN(mp))
1172                 return -EIO;
1173
1174         offset = (xfs_off_t)iblock << inode->i_blkbits;
1175         ASSERT(bh_result->b_size >= (1 << inode->i_blkbits));
1176         size = bh_result->b_size;
1177
1178         if (!create && offset >= i_size_read(inode))
1179                 return 0;
1180
1181         /*
1182          * Direct I/O is usually done on preallocated files, so try getting
1183          * a block mapping without an exclusive lock first.
1184          */
1185         lockmode = xfs_ilock_data_map_shared(ip);
1186
1187         ASSERT(offset <= mp->m_super->s_maxbytes);
1188         if (offset + size > mp->m_super->s_maxbytes)
1189                 size = mp->m_super->s_maxbytes - offset;
1190         end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1191         offset_fsb = XFS_B_TO_FSBT(mp, offset);
1192
1193         error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
1194                                 &imap, &nimaps, XFS_BMAPI_ENTIRE);
1195         if (error)
1196                 goto out_unlock;
1197
1198         /* for DAX, we convert unwritten extents directly */
1199         if (create &&
1200             (!nimaps ||
1201              (imap.br_startblock == HOLESTARTBLOCK ||
1202               imap.br_startblock == DELAYSTARTBLOCK) ||
1203              (IS_DAX(inode) && ISUNWRITTEN(&imap)))) {
1204                 /*
1205                  * xfs_iomap_write_direct() expects the shared lock. It
1206                  * is unlocked on return.
1207                  */
1208                 if (lockmode == XFS_ILOCK_EXCL)
1209                         xfs_ilock_demote(ip, lockmode);
1210
1211                 error = xfs_iomap_write_direct(ip, offset, size,
1212                                                &imap, nimaps);
1213                 if (error)
1214                         return error;
1215                 new = 1;
1216
1217                 trace_xfs_get_blocks_alloc(ip, offset, size,
1218                                 ISUNWRITTEN(&imap) ? XFS_IO_UNWRITTEN
1219                                                    : XFS_IO_DELALLOC, &imap);
1220         } else if (nimaps) {
1221                 trace_xfs_get_blocks_found(ip, offset, size,
1222                                 ISUNWRITTEN(&imap) ? XFS_IO_UNWRITTEN
1223                                                    : XFS_IO_OVERWRITE, &imap);
1224                 xfs_iunlock(ip, lockmode);
1225         } else {
1226                 trace_xfs_get_blocks_notfound(ip, offset, size);
1227                 goto out_unlock;
1228         }
1229
1230         if (IS_DAX(inode) && create) {
1231                 ASSERT(!ISUNWRITTEN(&imap));
1232                 /* zeroing is not needed at a higher layer */
1233                 new = 0;
1234         }
1235
1236         /* trim mapping down to size requested */
1237         xfs_map_trim_size(inode, iblock, bh_result, &imap, offset, size);
1238
1239         /*
1240          * For unwritten extents do not report a disk address in the buffered
1241          * read case (treat as if we're reading into a hole).
1242          */
1243         if (imap.br_startblock != HOLESTARTBLOCK &&
1244             imap.br_startblock != DELAYSTARTBLOCK &&
1245             (create || !ISUNWRITTEN(&imap))) {
1246                 xfs_map_buffer(inode, bh_result, &imap, offset);
1247                 if (ISUNWRITTEN(&imap))
1248                         set_buffer_unwritten(bh_result);
1249                 /* direct IO needs special help */
1250                 if (create) {
1251                         if (dax_fault)
1252                                 ASSERT(!ISUNWRITTEN(&imap));
1253                         else
1254                                 xfs_map_direct(inode, bh_result, &imap, offset);
1255                 }
1256         }
1257
1258         /*
1259          * If this is a realtime file, data may be on a different device.
1260          * to that pointed to from the buffer_head b_bdev currently.
1261          */
1262         bh_result->b_bdev = xfs_find_bdev_for_inode(inode);
1263
1264         /*
1265          * If we previously allocated a block out beyond eof and we are now
1266          * coming back to use it then we will need to flag it as new even if it
1267          * has a disk address.
1268          *
1269          * With sub-block writes into unwritten extents we also need to mark
1270          * the buffer as new so that the unwritten parts of the buffer gets
1271          * correctly zeroed.
1272          */
1273         if (create &&
1274             ((!buffer_mapped(bh_result) && !buffer_uptodate(bh_result)) ||
1275              (offset >= i_size_read(inode)) ||
1276              (new || ISUNWRITTEN(&imap))))
1277                 set_buffer_new(bh_result);
1278
1279         BUG_ON(direct && imap.br_startblock == DELAYSTARTBLOCK);
1280
1281         return 0;
1282
1283 out_unlock:
1284         xfs_iunlock(ip, lockmode);
1285         return error;
1286 }
1287
1288 int
1289 xfs_get_blocks(
1290         struct inode            *inode,
1291         sector_t                iblock,
1292         struct buffer_head      *bh_result,
1293         int                     create)
1294 {
1295         return __xfs_get_blocks(inode, iblock, bh_result, create, false, false);
1296 }
1297
1298 int
1299 xfs_get_blocks_direct(
1300         struct inode            *inode,
1301         sector_t                iblock,
1302         struct buffer_head      *bh_result,
1303         int                     create)
1304 {
1305         return __xfs_get_blocks(inode, iblock, bh_result, create, true, false);
1306 }
1307
1308 int
1309 xfs_get_blocks_dax_fault(
1310         struct inode            *inode,
1311         sector_t                iblock,
1312         struct buffer_head      *bh_result,
1313         int                     create)
1314 {
1315         return __xfs_get_blocks(inode, iblock, bh_result, create, true, true);
1316 }
1317
1318 /*
1319  * Complete a direct I/O write request.
1320  *
1321  * xfs_map_direct passes us some flags in the private data to tell us what to
1322  * do.  If no flags are set, then the write IO is an overwrite wholly within
1323  * the existing allocated file size and so there is nothing for us to do.
1324  *
1325  * Note that in this case the completion can be called in interrupt context,
1326  * whereas if we have flags set we will always be called in task context
1327  * (i.e. from a workqueue).
1328  */
1329 int
1330 xfs_end_io_direct_write(
1331         struct kiocb            *iocb,
1332         loff_t                  offset,
1333         ssize_t                 size,
1334         void                    *private)
1335 {
1336         struct inode            *inode = file_inode(iocb->ki_filp);
1337         struct xfs_inode        *ip = XFS_I(inode);
1338         struct xfs_mount        *mp = ip->i_mount;
1339         uintptr_t               flags = (uintptr_t)private;
1340         int                     error = 0;
1341
1342         trace_xfs_end_io_direct_write(ip, offset, size);
1343
1344         if (XFS_FORCED_SHUTDOWN(mp))
1345                 return -EIO;
1346
1347         if (size <= 0)
1348                 return size;
1349
1350         /*
1351          * The flags tell us whether we are doing unwritten extent conversions
1352          * or an append transaction that updates the on-disk file size. These
1353          * cases are the only cases where we should *potentially* be needing
1354          * to update the VFS inode size.
1355          */
1356         if (flags == 0) {
1357                 ASSERT(offset + size <= i_size_read(inode));
1358                 return 0;
1359         }
1360
1361         /*
1362          * We need to update the in-core inode size here so that we don't end up
1363          * with the on-disk inode size being outside the in-core inode size. We
1364          * have no other method of updating EOF for AIO, so always do it here
1365          * if necessary.
1366          *
1367          * We need to lock the test/set EOF update as we can be racing with
1368          * other IO completions here to update the EOF. Failing to serialise
1369          * here can result in EOF moving backwards and Bad Things Happen when
1370          * that occurs.
1371          */
1372         spin_lock(&ip->i_flags_lock);
1373         if (offset + size > i_size_read(inode))
1374                 i_size_write(inode, offset + size);
1375         spin_unlock(&ip->i_flags_lock);
1376
1377         if (flags & XFS_DIO_FLAG_UNWRITTEN) {
1378                 trace_xfs_end_io_direct_write_unwritten(ip, offset, size);
1379
1380                 error = xfs_iomap_write_unwritten(ip, offset, size);
1381         } else if (flags & XFS_DIO_FLAG_APPEND) {
1382                 struct xfs_trans *tp;
1383
1384                 trace_xfs_end_io_direct_write_append(ip, offset, size);
1385
1386                 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0,
1387                                 &tp);
1388                 if (!error)
1389                         error = xfs_setfilesize(ip, tp, offset, size);
1390         }
1391
1392         return error;
1393 }
1394
1395 STATIC ssize_t
1396 xfs_vm_direct_IO(
1397         struct kiocb            *iocb,
1398         struct iov_iter         *iter)
1399 {
1400         /*
1401          * We just need the method present so that open/fcntl allow direct I/O.
1402          */
1403         return -EINVAL;
1404 }
1405
1406 STATIC sector_t
1407 xfs_vm_bmap(
1408         struct address_space    *mapping,
1409         sector_t                block)
1410 {
1411         struct inode            *inode = (struct inode *)mapping->host;
1412         struct xfs_inode        *ip = XFS_I(inode);
1413
1414         trace_xfs_vm_bmap(XFS_I(inode));
1415         xfs_ilock(ip, XFS_IOLOCK_SHARED);
1416         filemap_write_and_wait(mapping);
1417         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
1418         return generic_block_bmap(mapping, block, xfs_get_blocks);
1419 }
1420
1421 STATIC int
1422 xfs_vm_readpage(
1423         struct file             *unused,
1424         struct page             *page)
1425 {
1426         trace_xfs_vm_readpage(page->mapping->host, 1);
1427         return mpage_readpage(page, xfs_get_blocks);
1428 }
1429
1430 STATIC int
1431 xfs_vm_readpages(
1432         struct file             *unused,
1433         struct address_space    *mapping,
1434         struct list_head        *pages,
1435         unsigned                nr_pages)
1436 {
1437         trace_xfs_vm_readpages(mapping->host, nr_pages);
1438         return mpage_readpages(mapping, pages, nr_pages, xfs_get_blocks);
1439 }
1440
1441 /*
1442  * This is basically a copy of __set_page_dirty_buffers() with one
1443  * small tweak: buffers beyond EOF do not get marked dirty. If we mark them
1444  * dirty, we'll never be able to clean them because we don't write buffers
1445  * beyond EOF, and that means we can't invalidate pages that span EOF
1446  * that have been marked dirty. Further, the dirty state can leak into
1447  * the file interior if the file is extended, resulting in all sorts of
1448  * bad things happening as the state does not match the underlying data.
1449  *
1450  * XXX: this really indicates that bufferheads in XFS need to die. Warts like
1451  * this only exist because of bufferheads and how the generic code manages them.
1452  */
1453 STATIC int
1454 xfs_vm_set_page_dirty(
1455         struct page             *page)
1456 {
1457         struct address_space    *mapping = page->mapping;
1458         struct inode            *inode = mapping->host;
1459         loff_t                  end_offset;
1460         loff_t                  offset;
1461         int                     newly_dirty;
1462
1463         if (unlikely(!mapping))
1464                 return !TestSetPageDirty(page);
1465
1466         end_offset = i_size_read(inode);
1467         offset = page_offset(page);
1468
1469         spin_lock(&mapping->private_lock);
1470         if (page_has_buffers(page)) {
1471                 struct buffer_head *head = page_buffers(page);
1472                 struct buffer_head *bh = head;
1473
1474                 do {
1475                         if (offset < end_offset)
1476                                 set_buffer_dirty(bh);
1477                         bh = bh->b_this_page;
1478                         offset += 1 << inode->i_blkbits;
1479                 } while (bh != head);
1480         }
1481         /*
1482          * Lock out page->mem_cgroup migration to keep PageDirty
1483          * synchronized with per-memcg dirty page counters.
1484          */
1485         lock_page_memcg(page);
1486         newly_dirty = !TestSetPageDirty(page);
1487         spin_unlock(&mapping->private_lock);
1488
1489         if (newly_dirty) {
1490                 /* sigh - __set_page_dirty() is static, so copy it here, too */
1491                 unsigned long flags;
1492
1493                 spin_lock_irqsave(&mapping->tree_lock, flags);
1494                 if (page->mapping) {    /* Race with truncate? */
1495                         WARN_ON_ONCE(!PageUptodate(page));
1496                         account_page_dirtied(page, mapping);
1497                         radix_tree_tag_set(&mapping->page_tree,
1498                                         page_index(page), PAGECACHE_TAG_DIRTY);
1499                 }
1500                 spin_unlock_irqrestore(&mapping->tree_lock, flags);
1501         }
1502         unlock_page_memcg(page);
1503         if (newly_dirty)
1504                 __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
1505         return newly_dirty;
1506 }
1507
1508 const struct address_space_operations xfs_address_space_operations = {
1509         .readpage               = xfs_vm_readpage,
1510         .readpages              = xfs_vm_readpages,
1511         .writepage              = xfs_vm_writepage,
1512         .writepages             = xfs_vm_writepages,
1513         .set_page_dirty         = xfs_vm_set_page_dirty,
1514         .releasepage            = xfs_vm_releasepage,
1515         .invalidatepage         = xfs_vm_invalidatepage,
1516         .bmap                   = xfs_vm_bmap,
1517         .direct_IO              = xfs_vm_direct_IO,
1518         .migratepage            = buffer_migrate_page,
1519         .is_partially_uptodate  = block_is_partially_uptodate,
1520         .error_remove_page      = generic_error_remove_page,
1521 };