GNU Linux-libre 4.14.290-gnu1
[releases.git] / fs / xfs / xfs_file.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_fs.h"
20 #include "xfs_shared.h"
21 #include "xfs_format.h"
22 #include "xfs_log_format.h"
23 #include "xfs_trans_resv.h"
24 #include "xfs_mount.h"
25 #include "xfs_da_format.h"
26 #include "xfs_da_btree.h"
27 #include "xfs_inode.h"
28 #include "xfs_trans.h"
29 #include "xfs_inode_item.h"
30 #include "xfs_bmap.h"
31 #include "xfs_bmap_util.h"
32 #include "xfs_error.h"
33 #include "xfs_dir2.h"
34 #include "xfs_dir2_priv.h"
35 #include "xfs_ioctl.h"
36 #include "xfs_trace.h"
37 #include "xfs_log.h"
38 #include "xfs_icache.h"
39 #include "xfs_pnfs.h"
40 #include "xfs_iomap.h"
41 #include "xfs_reflink.h"
42
43 #include <linux/dcache.h>
44 #include <linux/falloc.h>
45 #include <linux/pagevec.h>
46 #include <linux/backing-dev.h>
47
48 static const struct vm_operations_struct xfs_file_vm_ops;
49
50 /*
51  * Clear the specified ranges to zero through either the pagecache or DAX.
52  * Holes and unwritten extents will be left as-is as they already are zeroed.
53  */
54 int
55 xfs_zero_range(
56         struct xfs_inode        *ip,
57         xfs_off_t               pos,
58         xfs_off_t               count,
59         bool                    *did_zero)
60 {
61         return iomap_zero_range(VFS_I(ip), pos, count, did_zero, &xfs_iomap_ops);
62 }
63
64 int
65 xfs_update_prealloc_flags(
66         struct xfs_inode        *ip,
67         enum xfs_prealloc_flags flags)
68 {
69         struct xfs_trans        *tp;
70         int                     error;
71
72         error = xfs_trans_alloc(ip->i_mount, &M_RES(ip->i_mount)->tr_writeid,
73                         0, 0, 0, &tp);
74         if (error)
75                 return error;
76
77         xfs_ilock(ip, XFS_ILOCK_EXCL);
78         xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL);
79
80         if (!(flags & XFS_PREALLOC_INVISIBLE)) {
81                 VFS_I(ip)->i_mode &= ~S_ISUID;
82                 if (VFS_I(ip)->i_mode & S_IXGRP)
83                         VFS_I(ip)->i_mode &= ~S_ISGID;
84                 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
85         }
86
87         if (flags & XFS_PREALLOC_SET)
88                 ip->i_d.di_flags |= XFS_DIFLAG_PREALLOC;
89         if (flags & XFS_PREALLOC_CLEAR)
90                 ip->i_d.di_flags &= ~XFS_DIFLAG_PREALLOC;
91
92         xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
93         if (flags & XFS_PREALLOC_SYNC)
94                 xfs_trans_set_sync(tp);
95         return xfs_trans_commit(tp);
96 }
97
98 /*
99  * Fsync operations on directories are much simpler than on regular files,
100  * as there is no file data to flush, and thus also no need for explicit
101  * cache flush operations, and there are no non-transaction metadata updates
102  * on directories either.
103  */
104 STATIC int
105 xfs_dir_fsync(
106         struct file             *file,
107         loff_t                  start,
108         loff_t                  end,
109         int                     datasync)
110 {
111         struct xfs_inode        *ip = XFS_I(file->f_mapping->host);
112         struct xfs_mount        *mp = ip->i_mount;
113         xfs_lsn_t               lsn = 0;
114
115         trace_xfs_dir_fsync(ip);
116
117         xfs_ilock(ip, XFS_ILOCK_SHARED);
118         if (xfs_ipincount(ip))
119                 lsn = ip->i_itemp->ili_last_lsn;
120         xfs_iunlock(ip, XFS_ILOCK_SHARED);
121
122         if (!lsn)
123                 return 0;
124         return _xfs_log_force_lsn(mp, lsn, XFS_LOG_SYNC, NULL);
125 }
126
127 STATIC int
128 xfs_file_fsync(
129         struct file             *file,
130         loff_t                  start,
131         loff_t                  end,
132         int                     datasync)
133 {
134         struct inode            *inode = file->f_mapping->host;
135         struct xfs_inode        *ip = XFS_I(inode);
136         struct xfs_mount        *mp = ip->i_mount;
137         int                     error = 0;
138         int                     log_flushed = 0;
139         xfs_lsn_t               lsn = 0;
140
141         trace_xfs_file_fsync(ip);
142
143         error = file_write_and_wait_range(file, start, end);
144         if (error)
145                 return error;
146
147         if (XFS_FORCED_SHUTDOWN(mp))
148                 return -EIO;
149
150         xfs_iflags_clear(ip, XFS_ITRUNCATED);
151
152         /*
153          * If we have an RT and/or log subvolume we need to make sure to flush
154          * the write cache the device used for file data first.  This is to
155          * ensure newly written file data make it to disk before logging the new
156          * inode size in case of an extending write.
157          */
158         if (XFS_IS_REALTIME_INODE(ip))
159                 xfs_blkdev_issue_flush(mp->m_rtdev_targp);
160         else if (mp->m_logdev_targp != mp->m_ddev_targp)
161                 xfs_blkdev_issue_flush(mp->m_ddev_targp);
162
163         /*
164          * All metadata updates are logged, which means that we just have to
165          * flush the log up to the latest LSN that touched the inode. If we have
166          * concurrent fsync/fdatasync() calls, we need them to all block on the
167          * log force before we clear the ili_fsync_fields field. This ensures
168          * that we don't get a racing sync operation that does not wait for the
169          * metadata to hit the journal before returning. If we race with
170          * clearing the ili_fsync_fields, then all that will happen is the log
171          * force will do nothing as the lsn will already be on disk. We can't
172          * race with setting ili_fsync_fields because that is done under
173          * XFS_ILOCK_EXCL, and that can't happen because we hold the lock shared
174          * until after the ili_fsync_fields is cleared.
175          */
176         xfs_ilock(ip, XFS_ILOCK_SHARED);
177         if (xfs_ipincount(ip)) {
178                 if (!datasync ||
179                     (ip->i_itemp->ili_fsync_fields & ~XFS_ILOG_TIMESTAMP))
180                         lsn = ip->i_itemp->ili_last_lsn;
181         }
182
183         if (lsn) {
184                 error = _xfs_log_force_lsn(mp, lsn, XFS_LOG_SYNC, &log_flushed);
185                 ip->i_itemp->ili_fsync_fields = 0;
186         }
187         xfs_iunlock(ip, XFS_ILOCK_SHARED);
188
189         /*
190          * If we only have a single device, and the log force about was
191          * a no-op we might have to flush the data device cache here.
192          * This can only happen for fdatasync/O_DSYNC if we were overwriting
193          * an already allocated file and thus do not have any metadata to
194          * commit.
195          */
196         if (!log_flushed && !XFS_IS_REALTIME_INODE(ip) &&
197             mp->m_logdev_targp == mp->m_ddev_targp)
198                 xfs_blkdev_issue_flush(mp->m_ddev_targp);
199
200         return error;
201 }
202
203 STATIC ssize_t
204 xfs_file_dio_aio_read(
205         struct kiocb            *iocb,
206         struct iov_iter         *to)
207 {
208         struct xfs_inode        *ip = XFS_I(file_inode(iocb->ki_filp));
209         size_t                  count = iov_iter_count(to);
210         ssize_t                 ret;
211
212         trace_xfs_file_direct_read(ip, count, iocb->ki_pos);
213
214         if (!count)
215                 return 0; /* skip atime */
216
217         file_accessed(iocb->ki_filp);
218
219         xfs_ilock(ip, XFS_IOLOCK_SHARED);
220         ret = iomap_dio_rw(iocb, to, &xfs_iomap_ops, NULL);
221         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
222
223         return ret;
224 }
225
226 static noinline ssize_t
227 xfs_file_dax_read(
228         struct kiocb            *iocb,
229         struct iov_iter         *to)
230 {
231         struct xfs_inode        *ip = XFS_I(iocb->ki_filp->f_mapping->host);
232         size_t                  count = iov_iter_count(to);
233         ssize_t                 ret = 0;
234
235         trace_xfs_file_dax_read(ip, count, iocb->ki_pos);
236
237         if (!count)
238                 return 0; /* skip atime */
239
240         if (iocb->ki_flags & IOCB_NOWAIT) {
241                 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
242                         return -EAGAIN;
243         } else {
244                 xfs_ilock(ip, XFS_IOLOCK_SHARED);
245         }
246
247         ret = dax_iomap_rw(iocb, to, &xfs_iomap_ops);
248         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
249
250         file_accessed(iocb->ki_filp);
251         return ret;
252 }
253
254 STATIC ssize_t
255 xfs_file_buffered_aio_read(
256         struct kiocb            *iocb,
257         struct iov_iter         *to)
258 {
259         struct xfs_inode        *ip = XFS_I(file_inode(iocb->ki_filp));
260         ssize_t                 ret;
261
262         trace_xfs_file_buffered_read(ip, iov_iter_count(to), iocb->ki_pos);
263
264         if (iocb->ki_flags & IOCB_NOWAIT) {
265                 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_SHARED))
266                         return -EAGAIN;
267         } else {
268                 xfs_ilock(ip, XFS_IOLOCK_SHARED);
269         }
270         ret = generic_file_read_iter(iocb, to);
271         xfs_iunlock(ip, XFS_IOLOCK_SHARED);
272
273         return ret;
274 }
275
276 STATIC ssize_t
277 xfs_file_read_iter(
278         struct kiocb            *iocb,
279         struct iov_iter         *to)
280 {
281         struct inode            *inode = file_inode(iocb->ki_filp);
282         struct xfs_mount        *mp = XFS_I(inode)->i_mount;
283         ssize_t                 ret = 0;
284
285         XFS_STATS_INC(mp, xs_read_calls);
286
287         if (XFS_FORCED_SHUTDOWN(mp))
288                 return -EIO;
289
290         if (IS_DAX(inode))
291                 ret = xfs_file_dax_read(iocb, to);
292         else if (iocb->ki_flags & IOCB_DIRECT)
293                 ret = xfs_file_dio_aio_read(iocb, to);
294         else
295                 ret = xfs_file_buffered_aio_read(iocb, to);
296
297         if (ret > 0)
298                 XFS_STATS_ADD(mp, xs_read_bytes, ret);
299         return ret;
300 }
301
302 /*
303  * Zero any on disk space between the current EOF and the new, larger EOF.
304  *
305  * This handles the normal case of zeroing the remainder of the last block in
306  * the file and the unusual case of zeroing blocks out beyond the size of the
307  * file.  This second case only happens with fixed size extents and when the
308  * system crashes before the inode size was updated but after blocks were
309  * allocated.
310  *
311  * Expects the iolock to be held exclusive, and will take the ilock internally.
312  */
313 int                                     /* error (positive) */
314 xfs_zero_eof(
315         struct xfs_inode        *ip,
316         xfs_off_t               offset,         /* starting I/O offset */
317         xfs_fsize_t             isize,          /* current inode size */
318         bool                    *did_zeroing)
319 {
320         ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));
321         ASSERT(offset > isize);
322
323         trace_xfs_zero_eof(ip, isize, offset - isize);
324         return xfs_zero_range(ip, isize, offset - isize, did_zeroing);
325 }
326
327 /*
328  * Common pre-write limit and setup checks.
329  *
330  * Called with the iolocked held either shared and exclusive according to
331  * @iolock, and returns with it held.  Might upgrade the iolock to exclusive
332  * if called for a direct write beyond i_size.
333  */
334 STATIC ssize_t
335 xfs_file_aio_write_checks(
336         struct kiocb            *iocb,
337         struct iov_iter         *from,
338         int                     *iolock)
339 {
340         struct file             *file = iocb->ki_filp;
341         struct inode            *inode = file->f_mapping->host;
342         struct xfs_inode        *ip = XFS_I(inode);
343         ssize_t                 error = 0;
344         size_t                  count = iov_iter_count(from);
345         bool                    drained_dio = false;
346
347 restart:
348         error = generic_write_checks(iocb, from);
349         if (error <= 0)
350                 return error;
351
352         error = xfs_break_layouts(inode, iolock);
353         if (error)
354                 return error;
355
356         /*
357          * For changing security info in file_remove_privs() we need i_rwsem
358          * exclusively.
359          */
360         if (*iolock == XFS_IOLOCK_SHARED && !IS_NOSEC(inode)) {
361                 xfs_iunlock(ip, *iolock);
362                 *iolock = XFS_IOLOCK_EXCL;
363                 xfs_ilock(ip, *iolock);
364                 goto restart;
365         }
366         /*
367          * If the offset is beyond the size of the file, we need to zero any
368          * blocks that fall between the existing EOF and the start of this
369          * write.  If zeroing is needed and we are currently holding the
370          * iolock shared, we need to update it to exclusive which implies
371          * having to redo all checks before.
372          *
373          * We need to serialise against EOF updates that occur in IO
374          * completions here. We want to make sure that nobody is changing the
375          * size while we do this check until we have placed an IO barrier (i.e.
376          * hold the XFS_IOLOCK_EXCL) that prevents new IO from being dispatched.
377          * The spinlock effectively forms a memory barrier once we have the
378          * XFS_IOLOCK_EXCL so we are guaranteed to see the latest EOF value
379          * and hence be able to correctly determine if we need to run zeroing.
380          */
381         spin_lock(&ip->i_flags_lock);
382         if (iocb->ki_pos > i_size_read(inode)) {
383                 spin_unlock(&ip->i_flags_lock);
384                 if (!drained_dio) {
385                         if (*iolock == XFS_IOLOCK_SHARED) {
386                                 xfs_iunlock(ip, *iolock);
387                                 *iolock = XFS_IOLOCK_EXCL;
388                                 xfs_ilock(ip, *iolock);
389                                 iov_iter_reexpand(from, count);
390                         }
391                         /*
392                          * We now have an IO submission barrier in place, but
393                          * AIO can do EOF updates during IO completion and hence
394                          * we now need to wait for all of them to drain. Non-AIO
395                          * DIO will have drained before we are given the
396                          * XFS_IOLOCK_EXCL, and so for most cases this wait is a
397                          * no-op.
398                          */
399                         inode_dio_wait(inode);
400                         drained_dio = true;
401                         goto restart;
402                 }
403                 error = xfs_zero_eof(ip, iocb->ki_pos, i_size_read(inode), NULL);
404                 if (error)
405                         return error;
406         } else
407                 spin_unlock(&ip->i_flags_lock);
408
409         /*
410          * Updating the timestamps will grab the ilock again from
411          * xfs_fs_dirty_inode, so we have to call it after dropping the
412          * lock above.  Eventually we should look into a way to avoid
413          * the pointless lock roundtrip.
414          */
415         if (likely(!(file->f_mode & FMODE_NOCMTIME))) {
416                 error = file_update_time(file);
417                 if (error)
418                         return error;
419         }
420
421         /*
422          * If we're writing the file then make sure to clear the setuid and
423          * setgid bits if the process is not being run by root.  This keeps
424          * people from modifying setuid and setgid binaries.
425          */
426         if (!IS_NOSEC(inode))
427                 return file_remove_privs(file);
428         return 0;
429 }
430
431 static int
432 xfs_dio_write_end_io(
433         struct kiocb            *iocb,
434         ssize_t                 size,
435         unsigned                flags)
436 {
437         struct inode            *inode = file_inode(iocb->ki_filp);
438         struct xfs_inode        *ip = XFS_I(inode);
439         loff_t                  offset = iocb->ki_pos;
440         int                     error = 0;
441
442         trace_xfs_end_io_direct_write(ip, offset, size);
443
444         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
445                 return -EIO;
446
447         if (size <= 0)
448                 return size;
449
450         if (flags & IOMAP_DIO_COW) {
451                 error = xfs_reflink_end_cow(ip, offset, size);
452                 if (error)
453                         return error;
454         }
455
456         /*
457          * Unwritten conversion updates the in-core isize after extent
458          * conversion but before updating the on-disk size. Updating isize any
459          * earlier allows a racing dio read to find unwritten extents before
460          * they are converted.
461          */
462         if (flags & IOMAP_DIO_UNWRITTEN)
463                 return xfs_iomap_write_unwritten(ip, offset, size, true);
464
465         /*
466          * We need to update the in-core inode size here so that we don't end up
467          * with the on-disk inode size being outside the in-core inode size. We
468          * have no other method of updating EOF for AIO, so always do it here
469          * if necessary.
470          *
471          * We need to lock the test/set EOF update as we can be racing with
472          * other IO completions here to update the EOF. Failing to serialise
473          * here can result in EOF moving backwards and Bad Things Happen when
474          * that occurs.
475          */
476         spin_lock(&ip->i_flags_lock);
477         if (offset + size > i_size_read(inode)) {
478                 i_size_write(inode, offset + size);
479                 spin_unlock(&ip->i_flags_lock);
480                 error = xfs_setfilesize(ip, offset, size);
481         } else {
482                 spin_unlock(&ip->i_flags_lock);
483         }
484
485         return error;
486 }
487
488 /*
489  * xfs_file_dio_aio_write - handle direct IO writes
490  *
491  * Lock the inode appropriately to prepare for and issue a direct IO write.
492  * By separating it from the buffered write path we remove all the tricky to
493  * follow locking changes and looping.
494  *
495  * If there are cached pages or we're extending the file, we need IOLOCK_EXCL
496  * until we're sure the bytes at the new EOF have been zeroed and/or the cached
497  * pages are flushed out.
498  *
499  * In most cases the direct IO writes will be done holding IOLOCK_SHARED
500  * allowing them to be done in parallel with reads and other direct IO writes.
501  * However, if the IO is not aligned to filesystem blocks, the direct IO layer
502  * needs to do sub-block zeroing and that requires serialisation against other
503  * direct IOs to the same block. In this case we need to serialise the
504  * submission of the unaligned IOs so that we don't get racing block zeroing in
505  * the dio layer.  To avoid the problem with aio, we also need to wait for
506  * outstanding IOs to complete so that unwritten extent conversion is completed
507  * before we try to map the overlapping block. This is currently implemented by
508  * hitting it with a big hammer (i.e. inode_dio_wait()).
509  *
510  * Returns with locks held indicated by @iolock and errors indicated by
511  * negative return values.
512  */
513 STATIC ssize_t
514 xfs_file_dio_aio_write(
515         struct kiocb            *iocb,
516         struct iov_iter         *from)
517 {
518         struct file             *file = iocb->ki_filp;
519         struct address_space    *mapping = file->f_mapping;
520         struct inode            *inode = mapping->host;
521         struct xfs_inode        *ip = XFS_I(inode);
522         struct xfs_mount        *mp = ip->i_mount;
523         ssize_t                 ret = 0;
524         int                     unaligned_io = 0;
525         int                     iolock;
526         size_t                  count = iov_iter_count(from);
527         struct xfs_buftarg      *target = XFS_IS_REALTIME_INODE(ip) ?
528                                         mp->m_rtdev_targp : mp->m_ddev_targp;
529
530         /* DIO must be aligned to device logical sector size */
531         if ((iocb->ki_pos | count) & target->bt_logical_sectormask)
532                 return -EINVAL;
533
534         /*
535          * Don't take the exclusive iolock here unless the I/O is unaligned to
536          * the file system block size.  We don't need to consider the EOF
537          * extension case here because xfs_file_aio_write_checks() will relock
538          * the inode as necessary for EOF zeroing cases and fill out the new
539          * inode size as appropriate.
540          */
541         if ((iocb->ki_pos & mp->m_blockmask) ||
542             ((iocb->ki_pos + count) & mp->m_blockmask)) {
543                 unaligned_io = 1;
544
545                 /*
546                  * We can't properly handle unaligned direct I/O to reflink
547                  * files yet, as we can't unshare a partial block.
548                  */
549                 if (xfs_is_reflink_inode(ip)) {
550                         trace_xfs_reflink_bounce_dio_write(ip, iocb->ki_pos, count);
551                         return -EREMCHG;
552                 }
553                 iolock = XFS_IOLOCK_EXCL;
554         } else {
555                 iolock = XFS_IOLOCK_SHARED;
556         }
557
558         if (iocb->ki_flags & IOCB_NOWAIT) {
559                 if (!xfs_ilock_nowait(ip, iolock))
560                         return -EAGAIN;
561         } else {
562                 xfs_ilock(ip, iolock);
563         }
564
565         ret = xfs_file_aio_write_checks(iocb, from, &iolock);
566         if (ret)
567                 goto out;
568         count = iov_iter_count(from);
569
570         /*
571          * If we are doing unaligned IO, wait for all other IO to drain,
572          * otherwise demote the lock if we had to take the exclusive lock
573          * for other reasons in xfs_file_aio_write_checks.
574          */
575         if (unaligned_io) {
576                 /* If we are going to wait for other DIO to finish, bail */
577                 if (iocb->ki_flags & IOCB_NOWAIT) {
578                         if (atomic_read(&inode->i_dio_count))
579                                 return -EAGAIN;
580                 } else {
581                         inode_dio_wait(inode);
582                 }
583         } else if (iolock == XFS_IOLOCK_EXCL) {
584                 xfs_ilock_demote(ip, XFS_IOLOCK_EXCL);
585                 iolock = XFS_IOLOCK_SHARED;
586         }
587
588         trace_xfs_file_direct_write(ip, count, iocb->ki_pos);
589         ret = iomap_dio_rw(iocb, from, &xfs_iomap_ops, xfs_dio_write_end_io);
590 out:
591         xfs_iunlock(ip, iolock);
592
593         /*
594          * No fallback to buffered IO on errors for XFS, direct IO will either
595          * complete fully or fail.
596          */
597         ASSERT(ret < 0 || ret == count);
598         return ret;
599 }
600
601 static noinline ssize_t
602 xfs_file_dax_write(
603         struct kiocb            *iocb,
604         struct iov_iter         *from)
605 {
606         struct inode            *inode = iocb->ki_filp->f_mapping->host;
607         struct xfs_inode        *ip = XFS_I(inode);
608         int                     iolock = XFS_IOLOCK_EXCL;
609         ssize_t                 ret, error = 0;
610         size_t                  count;
611         loff_t                  pos;
612
613         if (iocb->ki_flags & IOCB_NOWAIT) {
614                 if (!xfs_ilock_nowait(ip, iolock))
615                         return -EAGAIN;
616         } else {
617                 xfs_ilock(ip, iolock);
618         }
619
620         ret = xfs_file_aio_write_checks(iocb, from, &iolock);
621         if (ret)
622                 goto out;
623
624         pos = iocb->ki_pos;
625         count = iov_iter_count(from);
626
627         trace_xfs_file_dax_write(ip, count, pos);
628         ret = dax_iomap_rw(iocb, from, &xfs_iomap_ops);
629         if (ret > 0 && iocb->ki_pos > i_size_read(inode)) {
630                 i_size_write(inode, iocb->ki_pos);
631                 error = xfs_setfilesize(ip, pos, ret);
632         }
633 out:
634         xfs_iunlock(ip, iolock);
635         return error ? error : ret;
636 }
637
638 STATIC ssize_t
639 xfs_file_buffered_aio_write(
640         struct kiocb            *iocb,
641         struct iov_iter         *from)
642 {
643         struct file             *file = iocb->ki_filp;
644         struct address_space    *mapping = file->f_mapping;
645         struct inode            *inode = mapping->host;
646         struct xfs_inode        *ip = XFS_I(inode);
647         ssize_t                 ret;
648         int                     enospc = 0;
649         int                     iolock;
650
651         if (iocb->ki_flags & IOCB_NOWAIT)
652                 return -EOPNOTSUPP;
653
654 write_retry:
655         iolock = XFS_IOLOCK_EXCL;
656         xfs_ilock(ip, iolock);
657
658         ret = xfs_file_aio_write_checks(iocb, from, &iolock);
659         if (ret)
660                 goto out;
661
662         /* We can write back this queue in page reclaim */
663         current->backing_dev_info = inode_to_bdi(inode);
664
665         trace_xfs_file_buffered_write(ip, iov_iter_count(from), iocb->ki_pos);
666         ret = iomap_file_buffered_write(iocb, from, &xfs_iomap_ops);
667         if (likely(ret >= 0))
668                 iocb->ki_pos += ret;
669
670         /*
671          * If we hit a space limit, try to free up some lingering preallocated
672          * space before returning an error. In the case of ENOSPC, first try to
673          * write back all dirty inodes to free up some of the excess reserved
674          * metadata space. This reduces the chances that the eofblocks scan
675          * waits on dirty mappings. Since xfs_flush_inodes() is serialized, this
676          * also behaves as a filter to prevent too many eofblocks scans from
677          * running at the same time.
678          */
679         if (ret == -EDQUOT && !enospc) {
680                 xfs_iunlock(ip, iolock);
681                 enospc = xfs_inode_free_quota_eofblocks(ip);
682                 if (enospc)
683                         goto write_retry;
684                 enospc = xfs_inode_free_quota_cowblocks(ip);
685                 if (enospc)
686                         goto write_retry;
687                 iolock = 0;
688         } else if (ret == -ENOSPC && !enospc) {
689                 struct xfs_eofblocks eofb = {0};
690
691                 enospc = 1;
692                 xfs_flush_inodes(ip->i_mount);
693
694                 xfs_iunlock(ip, iolock);
695                 eofb.eof_flags = XFS_EOF_FLAGS_SYNC;
696                 xfs_icache_free_eofblocks(ip->i_mount, &eofb);
697                 xfs_icache_free_cowblocks(ip->i_mount, &eofb);
698                 goto write_retry;
699         }
700
701         current->backing_dev_info = NULL;
702 out:
703         if (iolock)
704                 xfs_iunlock(ip, iolock);
705         return ret;
706 }
707
708 STATIC ssize_t
709 xfs_file_write_iter(
710         struct kiocb            *iocb,
711         struct iov_iter         *from)
712 {
713         struct file             *file = iocb->ki_filp;
714         struct address_space    *mapping = file->f_mapping;
715         struct inode            *inode = mapping->host;
716         struct xfs_inode        *ip = XFS_I(inode);
717         ssize_t                 ret;
718         size_t                  ocount = iov_iter_count(from);
719
720         XFS_STATS_INC(ip->i_mount, xs_write_calls);
721
722         if (ocount == 0)
723                 return 0;
724
725         if (XFS_FORCED_SHUTDOWN(ip->i_mount))
726                 return -EIO;
727
728         if (IS_DAX(inode))
729                 ret = xfs_file_dax_write(iocb, from);
730         else if (iocb->ki_flags & IOCB_DIRECT) {
731                 /*
732                  * Allow a directio write to fall back to a buffered
733                  * write *only* in the case that we're doing a reflink
734                  * CoW.  In all other directio scenarios we do not
735                  * allow an operation to fall back to buffered mode.
736                  */
737                 ret = xfs_file_dio_aio_write(iocb, from);
738                 if (ret == -EREMCHG)
739                         goto buffered;
740         } else {
741 buffered:
742                 ret = xfs_file_buffered_aio_write(iocb, from);
743         }
744
745         if (ret > 0) {
746                 XFS_STATS_ADD(ip->i_mount, xs_write_bytes, ret);
747
748                 /* Handle various SYNC-type writes */
749                 ret = generic_write_sync(iocb, ret);
750         }
751         return ret;
752 }
753
754 #define XFS_FALLOC_FL_SUPPORTED                                         \
755                 (FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE |           \
756                  FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE |      \
757                  FALLOC_FL_INSERT_RANGE | FALLOC_FL_UNSHARE_RANGE)
758
759 STATIC long
760 xfs_file_fallocate(
761         struct file             *file,
762         int                     mode,
763         loff_t                  offset,
764         loff_t                  len)
765 {
766         struct inode            *inode = file_inode(file);
767         struct xfs_inode        *ip = XFS_I(inode);
768         long                    error;
769         enum xfs_prealloc_flags flags = 0;
770         uint                    iolock = XFS_IOLOCK_EXCL;
771         loff_t                  new_size = 0;
772         bool                    do_file_insert = false;
773
774         if (!S_ISREG(inode->i_mode))
775                 return -EINVAL;
776         if (mode & ~XFS_FALLOC_FL_SUPPORTED)
777                 return -EOPNOTSUPP;
778
779         xfs_ilock(ip, iolock);
780         error = xfs_break_layouts(inode, &iolock);
781         if (error)
782                 goto out_unlock;
783
784         xfs_ilock(ip, XFS_MMAPLOCK_EXCL);
785         iolock |= XFS_MMAPLOCK_EXCL;
786
787         if (mode & FALLOC_FL_PUNCH_HOLE) {
788                 error = xfs_free_file_space(ip, offset, len);
789                 if (error)
790                         goto out_unlock;
791         } else if (mode & FALLOC_FL_COLLAPSE_RANGE) {
792                 unsigned int blksize_mask = i_blocksize(inode) - 1;
793
794                 if (offset & blksize_mask || len & blksize_mask) {
795                         error = -EINVAL;
796                         goto out_unlock;
797                 }
798
799                 /*
800                  * There is no need to overlap collapse range with EOF,
801                  * in which case it is effectively a truncate operation
802                  */
803                 if (offset + len >= i_size_read(inode)) {
804                         error = -EINVAL;
805                         goto out_unlock;
806                 }
807
808                 new_size = i_size_read(inode) - len;
809
810                 error = xfs_collapse_file_space(ip, offset, len);
811                 if (error)
812                         goto out_unlock;
813         } else if (mode & FALLOC_FL_INSERT_RANGE) {
814                 unsigned int    blksize_mask = i_blocksize(inode) - 1;
815                 loff_t          isize = i_size_read(inode);
816
817                 if (offset & blksize_mask || len & blksize_mask) {
818                         error = -EINVAL;
819                         goto out_unlock;
820                 }
821
822                 /*
823                  * New inode size must not exceed ->s_maxbytes, accounting for
824                  * possible signed overflow.
825                  */
826                 if (inode->i_sb->s_maxbytes - isize < len) {
827                         error = -EFBIG;
828                         goto out_unlock;
829                 }
830                 new_size = isize + len;
831
832                 /* Offset should be less than i_size */
833                 if (offset >= isize) {
834                         error = -EINVAL;
835                         goto out_unlock;
836                 }
837                 do_file_insert = true;
838         } else {
839                 flags |= XFS_PREALLOC_SET;
840
841                 if (!(mode & FALLOC_FL_KEEP_SIZE) &&
842                     offset + len > i_size_read(inode)) {
843                         new_size = offset + len;
844                         error = inode_newsize_ok(inode, new_size);
845                         if (error)
846                                 goto out_unlock;
847                 }
848
849                 if (mode & FALLOC_FL_ZERO_RANGE)
850                         error = xfs_zero_file_space(ip, offset, len);
851                 else {
852                         if (mode & FALLOC_FL_UNSHARE_RANGE) {
853                                 error = xfs_reflink_unshare(ip, offset, len);
854                                 if (error)
855                                         goto out_unlock;
856                         }
857                         error = xfs_alloc_file_space(ip, offset, len,
858                                                      XFS_BMAPI_PREALLOC);
859                 }
860                 if (error)
861                         goto out_unlock;
862         }
863
864         if (file->f_flags & O_DSYNC)
865                 flags |= XFS_PREALLOC_SYNC;
866
867         error = xfs_update_prealloc_flags(ip, flags);
868         if (error)
869                 goto out_unlock;
870
871         /* Change file size if needed */
872         if (new_size) {
873                 struct iattr iattr;
874
875                 iattr.ia_valid = ATTR_SIZE;
876                 iattr.ia_size = new_size;
877                 error = xfs_vn_setattr_size(file_dentry(file), &iattr);
878                 if (error)
879                         goto out_unlock;
880         }
881
882         /*
883          * Perform hole insertion now that the file size has been
884          * updated so that if we crash during the operation we don't
885          * leave shifted extents past EOF and hence losing access to
886          * the data that is contained within them.
887          */
888         if (do_file_insert)
889                 error = xfs_insert_file_space(ip, offset, len);
890
891 out_unlock:
892         xfs_iunlock(ip, iolock);
893         return error;
894 }
895
896 STATIC int
897 xfs_file_clone_range(
898         struct file     *file_in,
899         loff_t          pos_in,
900         struct file     *file_out,
901         loff_t          pos_out,
902         u64             len)
903 {
904         return xfs_reflink_remap_range(file_in, pos_in, file_out, pos_out,
905                                      len, false);
906 }
907
908 STATIC ssize_t
909 xfs_file_dedupe_range(
910         struct file     *src_file,
911         u64             loff,
912         u64             len,
913         struct file     *dst_file,
914         u64             dst_loff)
915 {
916         int             error;
917
918         error = xfs_reflink_remap_range(src_file, loff, dst_file, dst_loff,
919                                      len, true);
920         if (error)
921                 return error;
922         return len;
923 }
924
925 STATIC int
926 xfs_file_open(
927         struct inode    *inode,
928         struct file     *file)
929 {
930         if (!(file->f_flags & O_LARGEFILE) && i_size_read(inode) > MAX_NON_LFS)
931                 return -EFBIG;
932         if (XFS_FORCED_SHUTDOWN(XFS_M(inode->i_sb)))
933                 return -EIO;
934         file->f_mode |= FMODE_NOWAIT;
935         return 0;
936 }
937
938 STATIC int
939 xfs_dir_open(
940         struct inode    *inode,
941         struct file     *file)
942 {
943         struct xfs_inode *ip = XFS_I(inode);
944         int             mode;
945         int             error;
946
947         error = xfs_file_open(inode, file);
948         if (error)
949                 return error;
950
951         /*
952          * If there are any blocks, read-ahead block 0 as we're almost
953          * certain to have the next operation be a read there.
954          */
955         mode = xfs_ilock_data_map_shared(ip);
956         if (ip->i_d.di_nextents > 0)
957                 error = xfs_dir3_data_readahead(ip, 0, -1);
958         xfs_iunlock(ip, mode);
959         return error;
960 }
961
962 STATIC int
963 xfs_file_release(
964         struct inode    *inode,
965         struct file     *filp)
966 {
967         return xfs_release(XFS_I(inode));
968 }
969
970 STATIC int
971 xfs_file_readdir(
972         struct file     *file,
973         struct dir_context *ctx)
974 {
975         struct inode    *inode = file_inode(file);
976         xfs_inode_t     *ip = XFS_I(inode);
977         size_t          bufsize;
978
979         /*
980          * The Linux API doesn't pass down the total size of the buffer
981          * we read into down to the filesystem.  With the filldir concept
982          * it's not needed for correct information, but the XFS dir2 leaf
983          * code wants an estimate of the buffer size to calculate it's
984          * readahead window and size the buffers used for mapping to
985          * physical blocks.
986          *
987          * Try to give it an estimate that's good enough, maybe at some
988          * point we can change the ->readdir prototype to include the
989          * buffer size.  For now we use the current glibc buffer size.
990          */
991         bufsize = (size_t)min_t(loff_t, 32768, ip->i_d.di_size);
992
993         return xfs_readdir(NULL, ip, ctx, bufsize);
994 }
995
996 STATIC loff_t
997 xfs_file_llseek(
998         struct file     *file,
999         loff_t          offset,
1000         int             whence)
1001 {
1002         struct inode            *inode = file->f_mapping->host;
1003
1004         if (XFS_FORCED_SHUTDOWN(XFS_I(inode)->i_mount))
1005                 return -EIO;
1006
1007         switch (whence) {
1008         default:
1009                 return generic_file_llseek(file, offset, whence);
1010         case SEEK_HOLE:
1011                 offset = iomap_seek_hole(inode, offset, &xfs_iomap_ops);
1012                 break;
1013         case SEEK_DATA:
1014                 offset = iomap_seek_data(inode, offset, &xfs_iomap_ops);
1015                 break;
1016         }
1017
1018         if (offset < 0)
1019                 return offset;
1020         return vfs_setpos(file, offset, inode->i_sb->s_maxbytes);
1021 }
1022
1023 /*
1024  * Locking for serialisation of IO during page faults. This results in a lock
1025  * ordering of:
1026  *
1027  * mmap_sem (MM)
1028  *   sb_start_pagefault(vfs, freeze)
1029  *     i_mmaplock (XFS - truncate serialisation)
1030  *       page_lock (MM)
1031  *         i_lock (XFS - extent map serialisation)
1032  */
1033 static int
1034 __xfs_filemap_fault(
1035         struct vm_fault         *vmf,
1036         enum page_entry_size    pe_size,
1037         bool                    write_fault)
1038 {
1039         struct inode            *inode = file_inode(vmf->vma->vm_file);
1040         struct xfs_inode        *ip = XFS_I(inode);
1041         int                     ret;
1042
1043         trace_xfs_filemap_fault(ip, pe_size, write_fault);
1044
1045         if (write_fault) {
1046                 sb_start_pagefault(inode->i_sb);
1047                 file_update_time(vmf->vma->vm_file);
1048         }
1049
1050         xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED);
1051         if (IS_DAX(inode)) {
1052                 ret = dax_iomap_fault(vmf, pe_size, &xfs_iomap_ops);
1053         } else {
1054                 if (write_fault)
1055                         ret = iomap_page_mkwrite(vmf, &xfs_iomap_ops);
1056                 else
1057                         ret = filemap_fault(vmf);
1058         }
1059         xfs_iunlock(XFS_I(inode), XFS_MMAPLOCK_SHARED);
1060
1061         if (write_fault)
1062                 sb_end_pagefault(inode->i_sb);
1063         return ret;
1064 }
1065
1066 static int
1067 xfs_filemap_fault(
1068         struct vm_fault         *vmf)
1069 {
1070         /* DAX can shortcut the normal fault path on write faults! */
1071         return __xfs_filemap_fault(vmf, PE_SIZE_PTE,
1072                         IS_DAX(file_inode(vmf->vma->vm_file)) &&
1073                         (vmf->flags & FAULT_FLAG_WRITE));
1074 }
1075
1076 static int
1077 xfs_filemap_huge_fault(
1078         struct vm_fault         *vmf,
1079         enum page_entry_size    pe_size)
1080 {
1081         if (!IS_DAX(file_inode(vmf->vma->vm_file)))
1082                 return VM_FAULT_FALLBACK;
1083
1084         /* DAX can shortcut the normal fault path on write faults! */
1085         return __xfs_filemap_fault(vmf, pe_size,
1086                         (vmf->flags & FAULT_FLAG_WRITE));
1087 }
1088
1089 static int
1090 xfs_filemap_page_mkwrite(
1091         struct vm_fault         *vmf)
1092 {
1093         return __xfs_filemap_fault(vmf, PE_SIZE_PTE, true);
1094 }
1095
1096 /*
1097  * pfn_mkwrite was originally inteneded to ensure we capture time stamp
1098  * updates on write faults. In reality, it's need to serialise against
1099  * truncate similar to page_mkwrite. Hence we cycle the XFS_MMAPLOCK_SHARED
1100  * to ensure we serialise the fault barrier in place.
1101  */
1102 static int
1103 xfs_filemap_pfn_mkwrite(
1104         struct vm_fault         *vmf)
1105 {
1106
1107         struct inode            *inode = file_inode(vmf->vma->vm_file);
1108         struct xfs_inode        *ip = XFS_I(inode);
1109         int                     ret = VM_FAULT_NOPAGE;
1110         loff_t                  size;
1111
1112         trace_xfs_filemap_pfn_mkwrite(ip);
1113
1114         sb_start_pagefault(inode->i_sb);
1115         file_update_time(vmf->vma->vm_file);
1116
1117         /* check if the faulting page hasn't raced with truncate */
1118         xfs_ilock(ip, XFS_MMAPLOCK_SHARED);
1119         size = (i_size_read(inode) + PAGE_SIZE - 1) >> PAGE_SHIFT;
1120         if (vmf->pgoff >= size)
1121                 ret = VM_FAULT_SIGBUS;
1122         else if (IS_DAX(inode))
1123                 ret = dax_iomap_fault(vmf, PE_SIZE_PTE, &xfs_iomap_ops);
1124         xfs_iunlock(ip, XFS_MMAPLOCK_SHARED);
1125         sb_end_pagefault(inode->i_sb);
1126         return ret;
1127
1128 }
1129
1130 static const struct vm_operations_struct xfs_file_vm_ops = {
1131         .fault          = xfs_filemap_fault,
1132         .huge_fault     = xfs_filemap_huge_fault,
1133         .map_pages      = filemap_map_pages,
1134         .page_mkwrite   = xfs_filemap_page_mkwrite,
1135         .pfn_mkwrite    = xfs_filemap_pfn_mkwrite,
1136 };
1137
1138 STATIC int
1139 xfs_file_mmap(
1140         struct file     *filp,
1141         struct vm_area_struct *vma)
1142 {
1143         file_accessed(filp);
1144         vma->vm_ops = &xfs_file_vm_ops;
1145         if (IS_DAX(file_inode(filp)))
1146                 vma->vm_flags |= VM_MIXEDMAP | VM_HUGEPAGE;
1147         return 0;
1148 }
1149
1150 const struct file_operations xfs_file_operations = {
1151         .llseek         = xfs_file_llseek,
1152         .read_iter      = xfs_file_read_iter,
1153         .write_iter     = xfs_file_write_iter,
1154         .splice_read    = generic_file_splice_read,
1155         .splice_write   = iter_file_splice_write,
1156         .unlocked_ioctl = xfs_file_ioctl,
1157 #ifdef CONFIG_COMPAT
1158         .compat_ioctl   = xfs_file_compat_ioctl,
1159 #endif
1160         .mmap           = xfs_file_mmap,
1161         .open           = xfs_file_open,
1162         .release        = xfs_file_release,
1163         .fsync          = xfs_file_fsync,
1164         .get_unmapped_area = thp_get_unmapped_area,
1165         .fallocate      = xfs_file_fallocate,
1166         .clone_file_range = xfs_file_clone_range,
1167         .dedupe_file_range = xfs_file_dedupe_range,
1168 };
1169
1170 const struct file_operations xfs_dir_file_operations = {
1171         .open           = xfs_dir_open,
1172         .read           = generic_read_dir,
1173         .iterate_shared = xfs_file_readdir,
1174         .llseek         = generic_file_llseek,
1175         .unlocked_ioctl = xfs_file_ioctl,
1176 #ifdef CONFIG_COMPAT
1177         .compat_ioctl   = xfs_file_compat_ioctl,
1178 #endif
1179         .fsync          = xfs_dir_fsync,
1180 };