1ec0197a3c9beb0e1cb266eb36467e75768a5c2d
[cascardo/linux.git] / fs / f2fs / file.c
1 /*
2  * fs/f2fs/file.c
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5  *             http://www.samsung.com/
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  */
11 #include <linux/fs.h>
12 #include <linux/f2fs_fs.h>
13 #include <linux/stat.h>
14 #include <linux/buffer_head.h>
15 #include <linux/writeback.h>
16 #include <linux/blkdev.h>
17 #include <linux/falloc.h>
18 #include <linux/types.h>
19 #include <linux/compat.h>
20 #include <linux/uaccess.h>
21 #include <linux/mount.h>
22 #include <linux/pagevec.h>
23 #include <linux/uuid.h>
24
25 #include "f2fs.h"
26 #include "node.h"
27 #include "segment.h"
28 #include "xattr.h"
29 #include "acl.h"
30 #include "gc.h"
31 #include "trace.h"
32 #include <trace/events/f2fs.h>
33
34 static int f2fs_vm_page_mkwrite(struct vm_area_struct *vma,
35                                                 struct vm_fault *vmf)
36 {
37         struct page *page = vmf->page;
38         struct inode *inode = file_inode(vma->vm_file);
39         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
40         struct dnode_of_data dn;
41         int err;
42
43         sb_start_pagefault(inode->i_sb);
44
45         f2fs_bug_on(sbi, f2fs_has_inline_data(inode));
46
47         /* block allocation */
48         f2fs_lock_op(sbi);
49         set_new_dnode(&dn, inode, NULL, NULL, 0);
50         err = f2fs_reserve_block(&dn, page->index);
51         if (err) {
52                 f2fs_unlock_op(sbi);
53                 goto out;
54         }
55         f2fs_put_dnode(&dn);
56         f2fs_unlock_op(sbi);
57
58         f2fs_balance_fs(sbi, dn.node_changed);
59
60         file_update_time(vma->vm_file);
61         lock_page(page);
62         if (unlikely(page->mapping != inode->i_mapping ||
63                         page_offset(page) > i_size_read(inode) ||
64                         !PageUptodate(page))) {
65                 unlock_page(page);
66                 err = -EFAULT;
67                 goto out;
68         }
69
70         /*
71          * check to see if the page is mapped already (no holes)
72          */
73         if (PageMappedToDisk(page))
74                 goto mapped;
75
76         /* page is wholly or partially inside EOF */
77         if (((loff_t)(page->index + 1) << PAGE_SHIFT) >
78                                                 i_size_read(inode)) {
79                 unsigned offset;
80                 offset = i_size_read(inode) & ~PAGE_MASK;
81                 zero_user_segment(page, offset, PAGE_SIZE);
82         }
83         set_page_dirty(page);
84         if (!PageUptodate(page))
85                 SetPageUptodate(page);
86
87         trace_f2fs_vm_page_mkwrite(page, DATA);
88 mapped:
89         /* fill the page */
90         f2fs_wait_on_page_writeback(page, DATA, false);
91
92         /* wait for GCed encrypted page writeback */
93         if (f2fs_encrypted_inode(inode) && S_ISREG(inode->i_mode))
94                 f2fs_wait_on_encrypted_page_writeback(sbi, dn.data_blkaddr);
95
96         /* if gced page is attached, don't write to cold segment */
97         clear_cold_data(page);
98 out:
99         sb_end_pagefault(inode->i_sb);
100         f2fs_update_time(sbi, REQ_TIME);
101         return block_page_mkwrite_return(err);
102 }
103
104 static const struct vm_operations_struct f2fs_file_vm_ops = {
105         .fault          = filemap_fault,
106         .map_pages      = filemap_map_pages,
107         .page_mkwrite   = f2fs_vm_page_mkwrite,
108 };
109
110 static int get_parent_ino(struct inode *inode, nid_t *pino)
111 {
112         struct dentry *dentry;
113
114         inode = igrab(inode);
115         dentry = d_find_any_alias(inode);
116         iput(inode);
117         if (!dentry)
118                 return 0;
119
120         if (update_dent_inode(inode, inode, &dentry->d_name)) {
121                 dput(dentry);
122                 return 0;
123         }
124
125         *pino = parent_ino(dentry);
126         dput(dentry);
127         return 1;
128 }
129
130 static inline bool need_do_checkpoint(struct inode *inode)
131 {
132         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
133         bool need_cp = false;
134
135         if (!S_ISREG(inode->i_mode) || inode->i_nlink != 1)
136                 need_cp = true;
137         else if (file_enc_name(inode) && need_dentry_mark(sbi, inode->i_ino))
138                 need_cp = true;
139         else if (file_wrong_pino(inode))
140                 need_cp = true;
141         else if (!space_for_roll_forward(sbi))
142                 need_cp = true;
143         else if (!is_checkpointed_node(sbi, F2FS_I(inode)->i_pino))
144                 need_cp = true;
145         else if (F2FS_I(inode)->xattr_ver == cur_cp_version(F2FS_CKPT(sbi)))
146                 need_cp = true;
147         else if (test_opt(sbi, FASTBOOT))
148                 need_cp = true;
149         else if (sbi->active_logs == 2)
150                 need_cp = true;
151
152         return need_cp;
153 }
154
155 static bool need_inode_page_update(struct f2fs_sb_info *sbi, nid_t ino)
156 {
157         struct page *i = find_get_page(NODE_MAPPING(sbi), ino);
158         bool ret = false;
159         /* But we need to avoid that there are some inode updates */
160         if ((i && PageDirty(i)) || need_inode_block_update(sbi, ino))
161                 ret = true;
162         f2fs_put_page(i, 0);
163         return ret;
164 }
165
166 static void try_to_fix_pino(struct inode *inode)
167 {
168         struct f2fs_inode_info *fi = F2FS_I(inode);
169         nid_t pino;
170
171         down_write(&fi->i_sem);
172         fi->xattr_ver = 0;
173         if (file_wrong_pino(inode) && inode->i_nlink == 1 &&
174                         get_parent_ino(inode, &pino)) {
175                 f2fs_i_pino_write(inode, pino);
176                 file_got_pino(inode);
177         }
178         up_write(&fi->i_sem);
179 }
180
181 static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end,
182                                                 int datasync, bool atomic)
183 {
184         struct inode *inode = file->f_mapping->host;
185         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
186         nid_t ino = inode->i_ino;
187         int ret = 0;
188         bool need_cp = false;
189         struct writeback_control wbc = {
190                 .sync_mode = WB_SYNC_ALL,
191                 .nr_to_write = LONG_MAX,
192                 .for_reclaim = 0,
193         };
194
195         if (unlikely(f2fs_readonly(inode->i_sb)))
196                 return 0;
197
198         trace_f2fs_sync_file_enter(inode);
199
200         /* if fdatasync is triggered, let's do in-place-update */
201         if (datasync || get_dirty_pages(inode) <= SM_I(sbi)->min_fsync_blocks)
202                 set_inode_flag(inode, FI_NEED_IPU);
203         ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
204         clear_inode_flag(inode, FI_NEED_IPU);
205
206         if (ret) {
207                 trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret);
208                 return ret;
209         }
210
211         /* if the inode is dirty, let's recover all the time */
212         if (!datasync && !f2fs_skip_inode_update(inode)) {
213                 f2fs_write_inode(inode, NULL);
214                 goto go_write;
215         }
216
217         /*
218          * if there is no written data, don't waste time to write recovery info.
219          */
220         if (!is_inode_flag_set(inode, FI_APPEND_WRITE) &&
221                         !exist_written_data(sbi, ino, APPEND_INO)) {
222
223                 /* it may call write_inode just prior to fsync */
224                 if (need_inode_page_update(sbi, ino))
225                         goto go_write;
226
227                 if (is_inode_flag_set(inode, FI_UPDATE_WRITE) ||
228                                 exist_written_data(sbi, ino, UPDATE_INO))
229                         goto flush_out;
230                 goto out;
231         }
232 go_write:
233         /*
234          * Both of fdatasync() and fsync() are able to be recovered from
235          * sudden-power-off.
236          */
237         down_read(&F2FS_I(inode)->i_sem);
238         need_cp = need_do_checkpoint(inode);
239         up_read(&F2FS_I(inode)->i_sem);
240
241         if (need_cp) {
242                 /* all the dirty node pages should be flushed for POR */
243                 ret = f2fs_sync_fs(inode->i_sb, 1);
244
245                 /*
246                  * We've secured consistency through sync_fs. Following pino
247                  * will be used only for fsynced inodes after checkpoint.
248                  */
249                 try_to_fix_pino(inode);
250                 clear_inode_flag(inode, FI_APPEND_WRITE);
251                 clear_inode_flag(inode, FI_UPDATE_WRITE);
252                 goto out;
253         }
254 sync_nodes:
255         ret = fsync_node_pages(sbi, inode, &wbc, atomic);
256         if (ret)
257                 goto out;
258
259         /* if cp_error was enabled, we should avoid infinite loop */
260         if (unlikely(f2fs_cp_error(sbi))) {
261                 ret = -EIO;
262                 goto out;
263         }
264
265         if (need_inode_block_update(sbi, ino)) {
266                 f2fs_mark_inode_dirty_sync(inode);
267                 f2fs_write_inode(inode, NULL);
268                 goto sync_nodes;
269         }
270
271         ret = wait_on_node_pages_writeback(sbi, ino);
272         if (ret)
273                 goto out;
274
275         /* once recovery info is written, don't need to tack this */
276         remove_ino_entry(sbi, ino, APPEND_INO);
277         clear_inode_flag(inode, FI_APPEND_WRITE);
278 flush_out:
279         remove_ino_entry(sbi, ino, UPDATE_INO);
280         clear_inode_flag(inode, FI_UPDATE_WRITE);
281         ret = f2fs_issue_flush(sbi);
282         f2fs_update_time(sbi, REQ_TIME);
283 out:
284         trace_f2fs_sync_file_exit(inode, need_cp, datasync, ret);
285         f2fs_trace_ios(NULL, 1);
286         return ret;
287 }
288
289 int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
290 {
291         return f2fs_do_sync_file(file, start, end, datasync, false);
292 }
293
294 static pgoff_t __get_first_dirty_index(struct address_space *mapping,
295                                                 pgoff_t pgofs, int whence)
296 {
297         struct pagevec pvec;
298         int nr_pages;
299
300         if (whence != SEEK_DATA)
301                 return 0;
302
303         /* find first dirty page index */
304         pagevec_init(&pvec, 0);
305         nr_pages = pagevec_lookup_tag(&pvec, mapping, &pgofs,
306                                         PAGECACHE_TAG_DIRTY, 1);
307         pgofs = nr_pages ? pvec.pages[0]->index : ULONG_MAX;
308         pagevec_release(&pvec);
309         return pgofs;
310 }
311
312 static bool __found_offset(block_t blkaddr, pgoff_t dirty, pgoff_t pgofs,
313                                                         int whence)
314 {
315         switch (whence) {
316         case SEEK_DATA:
317                 if ((blkaddr == NEW_ADDR && dirty == pgofs) ||
318                         (blkaddr != NEW_ADDR && blkaddr != NULL_ADDR))
319                         return true;
320                 break;
321         case SEEK_HOLE:
322                 if (blkaddr == NULL_ADDR)
323                         return true;
324                 break;
325         }
326         return false;
327 }
328
329 static loff_t f2fs_seek_block(struct file *file, loff_t offset, int whence)
330 {
331         struct inode *inode = file->f_mapping->host;
332         loff_t maxbytes = inode->i_sb->s_maxbytes;
333         struct dnode_of_data dn;
334         pgoff_t pgofs, end_offset, dirty;
335         loff_t data_ofs = offset;
336         loff_t isize;
337         int err = 0;
338
339         inode_lock(inode);
340
341         isize = i_size_read(inode);
342         if (offset >= isize)
343                 goto fail;
344
345         /* handle inline data case */
346         if (f2fs_has_inline_data(inode) || f2fs_has_inline_dentry(inode)) {
347                 if (whence == SEEK_HOLE)
348                         data_ofs = isize;
349                 goto found;
350         }
351
352         pgofs = (pgoff_t)(offset >> PAGE_SHIFT);
353
354         dirty = __get_first_dirty_index(inode->i_mapping, pgofs, whence);
355
356         for (; data_ofs < isize; data_ofs = (loff_t)pgofs << PAGE_SHIFT) {
357                 set_new_dnode(&dn, inode, NULL, NULL, 0);
358                 err = get_dnode_of_data(&dn, pgofs, LOOKUP_NODE);
359                 if (err && err != -ENOENT) {
360                         goto fail;
361                 } else if (err == -ENOENT) {
362                         /* direct node does not exists */
363                         if (whence == SEEK_DATA) {
364                                 pgofs = get_next_page_offset(&dn, pgofs);
365                                 continue;
366                         } else {
367                                 goto found;
368                         }
369                 }
370
371                 end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
372
373                 /* find data/hole in dnode block */
374                 for (; dn.ofs_in_node < end_offset;
375                                 dn.ofs_in_node++, pgofs++,
376                                 data_ofs = (loff_t)pgofs << PAGE_SHIFT) {
377                         block_t blkaddr;
378                         blkaddr = datablock_addr(dn.node_page, dn.ofs_in_node);
379
380                         if (__found_offset(blkaddr, dirty, pgofs, whence)) {
381                                 f2fs_put_dnode(&dn);
382                                 goto found;
383                         }
384                 }
385                 f2fs_put_dnode(&dn);
386         }
387
388         if (whence == SEEK_DATA)
389                 goto fail;
390 found:
391         if (whence == SEEK_HOLE && data_ofs > isize)
392                 data_ofs = isize;
393         inode_unlock(inode);
394         return vfs_setpos(file, data_ofs, maxbytes);
395 fail:
396         inode_unlock(inode);
397         return -ENXIO;
398 }
399
400 static loff_t f2fs_llseek(struct file *file, loff_t offset, int whence)
401 {
402         struct inode *inode = file->f_mapping->host;
403         loff_t maxbytes = inode->i_sb->s_maxbytes;
404
405         switch (whence) {
406         case SEEK_SET:
407         case SEEK_CUR:
408         case SEEK_END:
409                 return generic_file_llseek_size(file, offset, whence,
410                                                 maxbytes, i_size_read(inode));
411         case SEEK_DATA:
412         case SEEK_HOLE:
413                 if (offset < 0)
414                         return -ENXIO;
415                 return f2fs_seek_block(file, offset, whence);
416         }
417
418         return -EINVAL;
419 }
420
421 static int f2fs_file_mmap(struct file *file, struct vm_area_struct *vma)
422 {
423         struct inode *inode = file_inode(file);
424         int err;
425
426         if (f2fs_encrypted_inode(inode)) {
427                 err = fscrypt_get_encryption_info(inode);
428                 if (err)
429                         return 0;
430                 if (!f2fs_encrypted_inode(inode))
431                         return -ENOKEY;
432         }
433
434         /* we don't need to use inline_data strictly */
435         err = f2fs_convert_inline_inode(inode);
436         if (err)
437                 return err;
438
439         file_accessed(file);
440         vma->vm_ops = &f2fs_file_vm_ops;
441         return 0;
442 }
443
444 static int f2fs_file_open(struct inode *inode, struct file *filp)
445 {
446         int ret = generic_file_open(inode, filp);
447         struct dentry *dir;
448
449         if (!ret && f2fs_encrypted_inode(inode)) {
450                 ret = fscrypt_get_encryption_info(inode);
451                 if (ret)
452                         return -EACCES;
453                 if (!fscrypt_has_encryption_key(inode))
454                         return -ENOKEY;
455         }
456         dir = dget_parent(file_dentry(filp));
457         if (f2fs_encrypted_inode(d_inode(dir)) &&
458                         !fscrypt_has_permitted_context(d_inode(dir), inode)) {
459                 dput(dir);
460                 return -EPERM;
461         }
462         dput(dir);
463         return ret;
464 }
465
466 int truncate_data_blocks_range(struct dnode_of_data *dn, int count)
467 {
468         struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
469         struct f2fs_node *raw_node;
470         int nr_free = 0, ofs = dn->ofs_in_node, len = count;
471         __le32 *addr;
472
473         raw_node = F2FS_NODE(dn->node_page);
474         addr = blkaddr_in_node(raw_node) + ofs;
475
476         for (; count > 0; count--, addr++, dn->ofs_in_node++) {
477                 block_t blkaddr = le32_to_cpu(*addr);
478                 if (blkaddr == NULL_ADDR)
479                         continue;
480
481                 dn->data_blkaddr = NULL_ADDR;
482                 set_data_blkaddr(dn);
483                 invalidate_blocks(sbi, blkaddr);
484                 if (dn->ofs_in_node == 0 && IS_INODE(dn->node_page))
485                         clear_inode_flag(dn->inode, FI_FIRST_BLOCK_WRITTEN);
486                 nr_free++;
487         }
488
489         if (nr_free) {
490                 pgoff_t fofs;
491                 /*
492                  * once we invalidate valid blkaddr in range [ofs, ofs + count],
493                  * we will invalidate all blkaddr in the whole range.
494                  */
495                 fofs = start_bidx_of_node(ofs_of_node(dn->node_page),
496                                                         dn->inode) + ofs;
497                 f2fs_update_extent_cache_range(dn, fofs, 0, len);
498                 dec_valid_block_count(sbi, dn->inode, nr_free);
499         }
500         dn->ofs_in_node = ofs;
501
502         f2fs_update_time(sbi, REQ_TIME);
503         trace_f2fs_truncate_data_blocks_range(dn->inode, dn->nid,
504                                          dn->ofs_in_node, nr_free);
505         return nr_free;
506 }
507
508 void truncate_data_blocks(struct dnode_of_data *dn)
509 {
510         truncate_data_blocks_range(dn, ADDRS_PER_BLOCK);
511 }
512
513 static int truncate_partial_data_page(struct inode *inode, u64 from,
514                                                                 bool cache_only)
515 {
516         unsigned offset = from & (PAGE_SIZE - 1);
517         pgoff_t index = from >> PAGE_SHIFT;
518         struct address_space *mapping = inode->i_mapping;
519         struct page *page;
520
521         if (!offset && !cache_only)
522                 return 0;
523
524         if (cache_only) {
525                 page = f2fs_grab_cache_page(mapping, index, false);
526                 if (page && PageUptodate(page))
527                         goto truncate_out;
528                 f2fs_put_page(page, 1);
529                 return 0;
530         }
531
532         page = get_lock_data_page(inode, index, true);
533         if (IS_ERR(page))
534                 return 0;
535 truncate_out:
536         f2fs_wait_on_page_writeback(page, DATA, true);
537         zero_user(page, offset, PAGE_SIZE - offset);
538         if (!cache_only || !f2fs_encrypted_inode(inode) ||
539                                         !S_ISREG(inode->i_mode))
540                 set_page_dirty(page);
541         f2fs_put_page(page, 1);
542         return 0;
543 }
544
545 int truncate_blocks(struct inode *inode, u64 from, bool lock)
546 {
547         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
548         unsigned int blocksize = inode->i_sb->s_blocksize;
549         struct dnode_of_data dn;
550         pgoff_t free_from;
551         int count = 0, err = 0;
552         struct page *ipage;
553         bool truncate_page = false;
554
555         trace_f2fs_truncate_blocks_enter(inode, from);
556
557         free_from = (pgoff_t)F2FS_BYTES_TO_BLK(from + blocksize - 1);
558
559         if (free_from >= sbi->max_file_blocks)
560                 goto free_partial;
561
562         if (lock)
563                 f2fs_lock_op(sbi);
564
565         ipage = get_node_page(sbi, inode->i_ino);
566         if (IS_ERR(ipage)) {
567                 err = PTR_ERR(ipage);
568                 goto out;
569         }
570
571         if (f2fs_has_inline_data(inode)) {
572                 if (truncate_inline_inode(ipage, from))
573                         set_page_dirty(ipage);
574                 f2fs_put_page(ipage, 1);
575                 truncate_page = true;
576                 goto out;
577         }
578
579         set_new_dnode(&dn, inode, ipage, NULL, 0);
580         err = get_dnode_of_data(&dn, free_from, LOOKUP_NODE_RA);
581         if (err) {
582                 if (err == -ENOENT)
583                         goto free_next;
584                 goto out;
585         }
586
587         count = ADDRS_PER_PAGE(dn.node_page, inode);
588
589         count -= dn.ofs_in_node;
590         f2fs_bug_on(sbi, count < 0);
591
592         if (dn.ofs_in_node || IS_INODE(dn.node_page)) {
593                 truncate_data_blocks_range(&dn, count);
594                 free_from += count;
595         }
596
597         f2fs_put_dnode(&dn);
598 free_next:
599         err = truncate_inode_blocks(inode, free_from);
600 out:
601         if (lock)
602                 f2fs_unlock_op(sbi);
603 free_partial:
604         /* lastly zero out the first data page */
605         if (!err)
606                 err = truncate_partial_data_page(inode, from, truncate_page);
607
608         trace_f2fs_truncate_blocks_exit(inode, err);
609         return err;
610 }
611
612 int f2fs_truncate(struct inode *inode)
613 {
614         int err;
615
616         if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
617                                 S_ISLNK(inode->i_mode)))
618                 return 0;
619
620         trace_f2fs_truncate(inode);
621
622         /* we should check inline_data size */
623         if (!f2fs_may_inline_data(inode)) {
624                 err = f2fs_convert_inline_inode(inode);
625                 if (err)
626                         return err;
627         }
628
629         err = truncate_blocks(inode, i_size_read(inode), true);
630         if (err)
631                 return err;
632
633         inode->i_mtime = inode->i_ctime = CURRENT_TIME;
634         f2fs_mark_inode_dirty_sync(inode);
635         return 0;
636 }
637
638 int f2fs_getattr(struct vfsmount *mnt,
639                          struct dentry *dentry, struct kstat *stat)
640 {
641         struct inode *inode = d_inode(dentry);
642         generic_fillattr(inode, stat);
643         stat->blocks <<= 3;
644         return 0;
645 }
646
647 #ifdef CONFIG_F2FS_FS_POSIX_ACL
648 static void __setattr_copy(struct inode *inode, const struct iattr *attr)
649 {
650         unsigned int ia_valid = attr->ia_valid;
651
652         if (ia_valid & ATTR_UID)
653                 inode->i_uid = attr->ia_uid;
654         if (ia_valid & ATTR_GID)
655                 inode->i_gid = attr->ia_gid;
656         if (ia_valid & ATTR_ATIME)
657                 inode->i_atime = timespec_trunc(attr->ia_atime,
658                                                 inode->i_sb->s_time_gran);
659         if (ia_valid & ATTR_MTIME)
660                 inode->i_mtime = timespec_trunc(attr->ia_mtime,
661                                                 inode->i_sb->s_time_gran);
662         if (ia_valid & ATTR_CTIME)
663                 inode->i_ctime = timespec_trunc(attr->ia_ctime,
664                                                 inode->i_sb->s_time_gran);
665         if (ia_valid & ATTR_MODE) {
666                 umode_t mode = attr->ia_mode;
667
668                 if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID))
669                         mode &= ~S_ISGID;
670                 set_acl_inode(inode, mode);
671         }
672 }
673 #else
674 #define __setattr_copy setattr_copy
675 #endif
676
677 int f2fs_setattr(struct dentry *dentry, struct iattr *attr)
678 {
679         struct inode *inode = d_inode(dentry);
680         int err;
681
682         err = inode_change_ok(inode, attr);
683         if (err)
684                 return err;
685
686         if (attr->ia_valid & ATTR_SIZE) {
687                 if (f2fs_encrypted_inode(inode) &&
688                                 fscrypt_get_encryption_info(inode))
689                         return -EACCES;
690
691                 if (attr->ia_size <= i_size_read(inode)) {
692                         truncate_setsize(inode, attr->ia_size);
693                         err = f2fs_truncate(inode);
694                         if (err)
695                                 return err;
696                         f2fs_balance_fs(F2FS_I_SB(inode), true);
697                 } else {
698                         /*
699                          * do not trim all blocks after i_size if target size is
700                          * larger than i_size.
701                          */
702                         truncate_setsize(inode, attr->ia_size);
703
704                         /* should convert inline inode here */
705                         if (!f2fs_may_inline_data(inode)) {
706                                 err = f2fs_convert_inline_inode(inode);
707                                 if (err)
708                                         return err;
709                         }
710                         inode->i_mtime = inode->i_ctime = CURRENT_TIME;
711                 }
712         }
713
714         __setattr_copy(inode, attr);
715
716         if (attr->ia_valid & ATTR_MODE) {
717                 err = posix_acl_chmod(inode, get_inode_mode(inode));
718                 if (err || is_inode_flag_set(inode, FI_ACL_MODE)) {
719                         inode->i_mode = F2FS_I(inode)->i_acl_mode;
720                         clear_inode_flag(inode, FI_ACL_MODE);
721                 }
722         }
723
724         f2fs_mark_inode_dirty_sync(inode);
725         return err;
726 }
727
728 const struct inode_operations f2fs_file_inode_operations = {
729         .getattr        = f2fs_getattr,
730         .setattr        = f2fs_setattr,
731         .get_acl        = f2fs_get_acl,
732         .set_acl        = f2fs_set_acl,
733 #ifdef CONFIG_F2FS_FS_XATTR
734         .setxattr       = generic_setxattr,
735         .getxattr       = generic_getxattr,
736         .listxattr      = f2fs_listxattr,
737         .removexattr    = generic_removexattr,
738 #endif
739         .fiemap         = f2fs_fiemap,
740 };
741
742 static int fill_zero(struct inode *inode, pgoff_t index,
743                                         loff_t start, loff_t len)
744 {
745         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
746         struct page *page;
747
748         if (!len)
749                 return 0;
750
751         f2fs_balance_fs(sbi, true);
752
753         f2fs_lock_op(sbi);
754         page = get_new_data_page(inode, NULL, index, false);
755         f2fs_unlock_op(sbi);
756
757         if (IS_ERR(page))
758                 return PTR_ERR(page);
759
760         f2fs_wait_on_page_writeback(page, DATA, true);
761         zero_user(page, start, len);
762         set_page_dirty(page);
763         f2fs_put_page(page, 1);
764         return 0;
765 }
766
767 int truncate_hole(struct inode *inode, pgoff_t pg_start, pgoff_t pg_end)
768 {
769         int err;
770
771         while (pg_start < pg_end) {
772                 struct dnode_of_data dn;
773                 pgoff_t end_offset, count;
774
775                 set_new_dnode(&dn, inode, NULL, NULL, 0);
776                 err = get_dnode_of_data(&dn, pg_start, LOOKUP_NODE);
777                 if (err) {
778                         if (err == -ENOENT) {
779                                 pg_start++;
780                                 continue;
781                         }
782                         return err;
783                 }
784
785                 end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
786                 count = min(end_offset - dn.ofs_in_node, pg_end - pg_start);
787
788                 f2fs_bug_on(F2FS_I_SB(inode), count == 0 || count > end_offset);
789
790                 truncate_data_blocks_range(&dn, count);
791                 f2fs_put_dnode(&dn);
792
793                 pg_start += count;
794         }
795         return 0;
796 }
797
798 static int punch_hole(struct inode *inode, loff_t offset, loff_t len)
799 {
800         pgoff_t pg_start, pg_end;
801         loff_t off_start, off_end;
802         int ret;
803
804         ret = f2fs_convert_inline_inode(inode);
805         if (ret)
806                 return ret;
807
808         pg_start = ((unsigned long long) offset) >> PAGE_SHIFT;
809         pg_end = ((unsigned long long) offset + len) >> PAGE_SHIFT;
810
811         off_start = offset & (PAGE_SIZE - 1);
812         off_end = (offset + len) & (PAGE_SIZE - 1);
813
814         if (pg_start == pg_end) {
815                 ret = fill_zero(inode, pg_start, off_start,
816                                                 off_end - off_start);
817                 if (ret)
818                         return ret;
819         } else {
820                 if (off_start) {
821                         ret = fill_zero(inode, pg_start++, off_start,
822                                                 PAGE_SIZE - off_start);
823                         if (ret)
824                                 return ret;
825                 }
826                 if (off_end) {
827                         ret = fill_zero(inode, pg_end, 0, off_end);
828                         if (ret)
829                                 return ret;
830                 }
831
832                 if (pg_start < pg_end) {
833                         struct address_space *mapping = inode->i_mapping;
834                         loff_t blk_start, blk_end;
835                         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
836
837                         f2fs_balance_fs(sbi, true);
838
839                         blk_start = (loff_t)pg_start << PAGE_SHIFT;
840                         blk_end = (loff_t)pg_end << PAGE_SHIFT;
841                         truncate_inode_pages_range(mapping, blk_start,
842                                         blk_end - 1);
843
844                         f2fs_lock_op(sbi);
845                         ret = truncate_hole(inode, pg_start, pg_end);
846                         f2fs_unlock_op(sbi);
847                 }
848         }
849
850         return ret;
851 }
852
853 static int __exchange_data_block(struct inode *inode, pgoff_t src,
854                                         pgoff_t dst, bool full)
855 {
856         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
857         struct dnode_of_data dn;
858         block_t new_addr;
859         bool do_replace = false;
860         int ret;
861
862         set_new_dnode(&dn, inode, NULL, NULL, 0);
863         ret = get_dnode_of_data(&dn, src, LOOKUP_NODE_RA);
864         if (ret && ret != -ENOENT) {
865                 return ret;
866         } else if (ret == -ENOENT) {
867                 new_addr = NULL_ADDR;
868         } else {
869                 new_addr = dn.data_blkaddr;
870                 if (!is_checkpointed_data(sbi, new_addr)) {
871                         /* do not invalidate this block address */
872                         f2fs_update_data_blkaddr(&dn, NULL_ADDR);
873                         do_replace = true;
874                 }
875                 f2fs_put_dnode(&dn);
876         }
877
878         if (new_addr == NULL_ADDR)
879                 return full ? truncate_hole(inode, dst, dst + 1) : 0;
880
881         if (do_replace) {
882                 struct page *ipage;
883                 struct node_info ni;
884
885                 if (test_opt(sbi, LFS)) {
886                         ret = -ENOTSUPP;
887                         goto err_out;
888                 }
889
890                 ipage = get_node_page(sbi, inode->i_ino);
891                 if (IS_ERR(ipage)) {
892                         ret = PTR_ERR(ipage);
893                         goto err_out;
894                 }
895
896                 set_new_dnode(&dn, inode, ipage, NULL, 0);
897                 ret = f2fs_reserve_block(&dn, dst);
898                 if (ret)
899                         goto err_out;
900
901                 truncate_data_blocks_range(&dn, 1);
902
903                 get_node_info(sbi, dn.nid, &ni);
904                 f2fs_replace_block(sbi, &dn, dn.data_blkaddr, new_addr,
905                                 ni.version, true, false);
906                 f2fs_put_dnode(&dn);
907         } else {
908                 struct page *psrc, *pdst;
909
910                 psrc = get_lock_data_page(inode, src, true);
911                 if (IS_ERR(psrc))
912                         return PTR_ERR(psrc);
913                 pdst = get_new_data_page(inode, NULL, dst, true);
914                 if (IS_ERR(pdst)) {
915                         f2fs_put_page(psrc, 1);
916                         return PTR_ERR(pdst);
917                 }
918                 f2fs_copy_page(psrc, pdst);
919                 set_page_dirty(pdst);
920                 f2fs_put_page(pdst, 1);
921                 f2fs_put_page(psrc, 1);
922
923                 return truncate_hole(inode, src, src + 1);
924         }
925         return 0;
926
927 err_out:
928         if (!get_dnode_of_data(&dn, src, LOOKUP_NODE)) {
929                 f2fs_update_data_blkaddr(&dn, new_addr);
930                 f2fs_put_dnode(&dn);
931         }
932         return ret;
933 }
934
935 static int f2fs_do_collapse(struct inode *inode, pgoff_t start, pgoff_t end)
936 {
937         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
938         pgoff_t nrpages = (i_size_read(inode) + PAGE_SIZE - 1) / PAGE_SIZE;
939         int ret = 0;
940
941         for (; end < nrpages; start++, end++) {
942                 f2fs_balance_fs(sbi, true);
943                 f2fs_lock_op(sbi);
944                 ret = __exchange_data_block(inode, end, start, true);
945                 f2fs_unlock_op(sbi);
946                 if (ret)
947                         break;
948         }
949         return ret;
950 }
951
952 static int f2fs_collapse_range(struct inode *inode, loff_t offset, loff_t len)
953 {
954         pgoff_t pg_start, pg_end;
955         loff_t new_size;
956         int ret;
957
958         if (offset + len >= i_size_read(inode))
959                 return -EINVAL;
960
961         /* collapse range should be aligned to block size of f2fs. */
962         if (offset & (F2FS_BLKSIZE - 1) || len & (F2FS_BLKSIZE - 1))
963                 return -EINVAL;
964
965         ret = f2fs_convert_inline_inode(inode);
966         if (ret)
967                 return ret;
968
969         pg_start = offset >> PAGE_SHIFT;
970         pg_end = (offset + len) >> PAGE_SHIFT;
971
972         /* write out all dirty pages from offset */
973         ret = filemap_write_and_wait_range(inode->i_mapping, offset, LLONG_MAX);
974         if (ret)
975                 return ret;
976
977         truncate_pagecache(inode, offset);
978
979         ret = f2fs_do_collapse(inode, pg_start, pg_end);
980         if (ret)
981                 return ret;
982
983         /* write out all moved pages, if possible */
984         filemap_write_and_wait_range(inode->i_mapping, offset, LLONG_MAX);
985         truncate_pagecache(inode, offset);
986
987         new_size = i_size_read(inode) - len;
988         truncate_pagecache(inode, new_size);
989
990         ret = truncate_blocks(inode, new_size, true);
991         if (!ret)
992                 f2fs_i_size_write(inode, new_size);
993
994         return ret;
995 }
996
997 static int f2fs_do_zero_range(struct dnode_of_data *dn, pgoff_t start,
998                                                                 pgoff_t end)
999 {
1000         struct f2fs_sb_info *sbi = F2FS_I_SB(dn->inode);
1001         pgoff_t index = start;
1002         unsigned int ofs_in_node = dn->ofs_in_node;
1003         blkcnt_t count = 0;
1004         int ret;
1005
1006         for (; index < end; index++, dn->ofs_in_node++) {
1007                 if (datablock_addr(dn->node_page, dn->ofs_in_node) == NULL_ADDR)
1008                         count++;
1009         }
1010
1011         dn->ofs_in_node = ofs_in_node;
1012         ret = reserve_new_blocks(dn, count);
1013         if (ret)
1014                 return ret;
1015
1016         dn->ofs_in_node = ofs_in_node;
1017         for (index = start; index < end; index++, dn->ofs_in_node++) {
1018                 dn->data_blkaddr =
1019                                 datablock_addr(dn->node_page, dn->ofs_in_node);
1020                 /*
1021                  * reserve_new_blocks will not guarantee entire block
1022                  * allocation.
1023                  */
1024                 if (dn->data_blkaddr == NULL_ADDR) {
1025                         ret = -ENOSPC;
1026                         break;
1027                 }
1028                 if (dn->data_blkaddr != NEW_ADDR) {
1029                         invalidate_blocks(sbi, dn->data_blkaddr);
1030                         dn->data_blkaddr = NEW_ADDR;
1031                         set_data_blkaddr(dn);
1032                 }
1033         }
1034
1035         f2fs_update_extent_cache_range(dn, start, 0, index - start);
1036
1037         return ret;
1038 }
1039
1040 static int f2fs_zero_range(struct inode *inode, loff_t offset, loff_t len,
1041                                                                 int mode)
1042 {
1043         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1044         struct address_space *mapping = inode->i_mapping;
1045         pgoff_t index, pg_start, pg_end;
1046         loff_t new_size = i_size_read(inode);
1047         loff_t off_start, off_end;
1048         int ret = 0;
1049
1050         ret = inode_newsize_ok(inode, (len + offset));
1051         if (ret)
1052                 return ret;
1053
1054         ret = f2fs_convert_inline_inode(inode);
1055         if (ret)
1056                 return ret;
1057
1058         ret = filemap_write_and_wait_range(mapping, offset, offset + len - 1);
1059         if (ret)
1060                 return ret;
1061
1062         truncate_pagecache_range(inode, offset, offset + len - 1);
1063
1064         pg_start = ((unsigned long long) offset) >> PAGE_SHIFT;
1065         pg_end = ((unsigned long long) offset + len) >> PAGE_SHIFT;
1066
1067         off_start = offset & (PAGE_SIZE - 1);
1068         off_end = (offset + len) & (PAGE_SIZE - 1);
1069
1070         if (pg_start == pg_end) {
1071                 ret = fill_zero(inode, pg_start, off_start,
1072                                                 off_end - off_start);
1073                 if (ret)
1074                         return ret;
1075
1076                 if (offset + len > new_size)
1077                         new_size = offset + len;
1078                 new_size = max_t(loff_t, new_size, offset + len);
1079         } else {
1080                 if (off_start) {
1081                         ret = fill_zero(inode, pg_start++, off_start,
1082                                                 PAGE_SIZE - off_start);
1083                         if (ret)
1084                                 return ret;
1085
1086                         new_size = max_t(loff_t, new_size,
1087                                         (loff_t)pg_start << PAGE_SHIFT);
1088                 }
1089
1090                 for (index = pg_start; index < pg_end;) {
1091                         struct dnode_of_data dn;
1092                         unsigned int end_offset;
1093                         pgoff_t end;
1094
1095                         f2fs_lock_op(sbi);
1096
1097                         set_new_dnode(&dn, inode, NULL, NULL, 0);
1098                         ret = get_dnode_of_data(&dn, index, ALLOC_NODE);
1099                         if (ret) {
1100                                 f2fs_unlock_op(sbi);
1101                                 goto out;
1102                         }
1103
1104                         end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
1105                         end = min(pg_end, end_offset - dn.ofs_in_node + index);
1106
1107                         ret = f2fs_do_zero_range(&dn, index, end);
1108                         f2fs_put_dnode(&dn);
1109                         f2fs_unlock_op(sbi);
1110                         if (ret)
1111                                 goto out;
1112
1113                         index = end;
1114                         new_size = max_t(loff_t, new_size,
1115                                         (loff_t)index << PAGE_SHIFT);
1116                 }
1117
1118                 if (off_end) {
1119                         ret = fill_zero(inode, pg_end, 0, off_end);
1120                         if (ret)
1121                                 goto out;
1122
1123                         new_size = max_t(loff_t, new_size, offset + len);
1124                 }
1125         }
1126
1127 out:
1128         if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size)
1129                 f2fs_i_size_write(inode, new_size);
1130
1131         return ret;
1132 }
1133
1134 static int f2fs_insert_range(struct inode *inode, loff_t offset, loff_t len)
1135 {
1136         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1137         pgoff_t pg_start, pg_end, delta, nrpages, idx;
1138         loff_t new_size;
1139         int ret = 0;
1140
1141         new_size = i_size_read(inode) + len;
1142         if (new_size > inode->i_sb->s_maxbytes)
1143                 return -EFBIG;
1144
1145         if (offset >= i_size_read(inode))
1146                 return -EINVAL;
1147
1148         /* insert range should be aligned to block size of f2fs. */
1149         if (offset & (F2FS_BLKSIZE - 1) || len & (F2FS_BLKSIZE - 1))
1150                 return -EINVAL;
1151
1152         ret = f2fs_convert_inline_inode(inode);
1153         if (ret)
1154                 return ret;
1155
1156         f2fs_balance_fs(sbi, true);
1157
1158         ret = truncate_blocks(inode, i_size_read(inode), true);
1159         if (ret)
1160                 return ret;
1161
1162         /* write out all dirty pages from offset */
1163         ret = filemap_write_and_wait_range(inode->i_mapping, offset, LLONG_MAX);
1164         if (ret)
1165                 return ret;
1166
1167         truncate_pagecache(inode, offset);
1168
1169         pg_start = offset >> PAGE_SHIFT;
1170         pg_end = (offset + len) >> PAGE_SHIFT;
1171         delta = pg_end - pg_start;
1172         nrpages = (i_size_read(inode) + PAGE_SIZE - 1) / PAGE_SIZE;
1173
1174         for (idx = nrpages - 1; idx >= pg_start && idx != -1; idx--) {
1175                 f2fs_lock_op(sbi);
1176                 ret = __exchange_data_block(inode, idx, idx + delta, false);
1177                 f2fs_unlock_op(sbi);
1178                 if (ret)
1179                         break;
1180         }
1181
1182         /* write out all moved pages, if possible */
1183         filemap_write_and_wait_range(inode->i_mapping, offset, LLONG_MAX);
1184         truncate_pagecache(inode, offset);
1185
1186         if (!ret)
1187                 f2fs_i_size_write(inode, new_size);
1188         return ret;
1189 }
1190
1191 static int expand_inode_data(struct inode *inode, loff_t offset,
1192                                         loff_t len, int mode)
1193 {
1194         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1195         struct f2fs_map_blocks map = { .m_next_pgofs = NULL };
1196         pgoff_t pg_end;
1197         loff_t new_size = i_size_read(inode);
1198         loff_t off_end;
1199         int ret;
1200
1201         ret = inode_newsize_ok(inode, (len + offset));
1202         if (ret)
1203                 return ret;
1204
1205         ret = f2fs_convert_inline_inode(inode);
1206         if (ret)
1207                 return ret;
1208
1209         f2fs_balance_fs(sbi, true);
1210
1211         pg_end = ((unsigned long long)offset + len) >> PAGE_SHIFT;
1212         off_end = (offset + len) & (PAGE_SIZE - 1);
1213
1214         map.m_lblk = ((unsigned long long)offset) >> PAGE_SHIFT;
1215         map.m_len = pg_end - map.m_lblk;
1216         if (off_end)
1217                 map.m_len++;
1218
1219         ret = f2fs_map_blocks(inode, &map, 1, F2FS_GET_BLOCK_PRE_AIO);
1220         if (ret) {
1221                 pgoff_t last_off;
1222
1223                 if (!map.m_len)
1224                         return ret;
1225
1226                 last_off = map.m_lblk + map.m_len - 1;
1227
1228                 /* update new size to the failed position */
1229                 new_size = (last_off == pg_end) ? offset + len:
1230                                         (loff_t)(last_off + 1) << PAGE_SHIFT;
1231         } else {
1232                 new_size = ((loff_t)pg_end << PAGE_SHIFT) + off_end;
1233         }
1234
1235         if (!(mode & FALLOC_FL_KEEP_SIZE) && i_size_read(inode) < new_size)
1236                 f2fs_i_size_write(inode, new_size);
1237
1238         return ret;
1239 }
1240
1241 static long f2fs_fallocate(struct file *file, int mode,
1242                                 loff_t offset, loff_t len)
1243 {
1244         struct inode *inode = file_inode(file);
1245         long ret = 0;
1246
1247         /* f2fs only support ->fallocate for regular file */
1248         if (!S_ISREG(inode->i_mode))
1249                 return -EINVAL;
1250
1251         if (f2fs_encrypted_inode(inode) &&
1252                 (mode & (FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_INSERT_RANGE)))
1253                 return -EOPNOTSUPP;
1254
1255         if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE |
1256                         FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE |
1257                         FALLOC_FL_INSERT_RANGE))
1258                 return -EOPNOTSUPP;
1259
1260         inode_lock(inode);
1261
1262         if (mode & FALLOC_FL_PUNCH_HOLE) {
1263                 if (offset >= inode->i_size)
1264                         goto out;
1265
1266                 ret = punch_hole(inode, offset, len);
1267         } else if (mode & FALLOC_FL_COLLAPSE_RANGE) {
1268                 ret = f2fs_collapse_range(inode, offset, len);
1269         } else if (mode & FALLOC_FL_ZERO_RANGE) {
1270                 ret = f2fs_zero_range(inode, offset, len, mode);
1271         } else if (mode & FALLOC_FL_INSERT_RANGE) {
1272                 ret = f2fs_insert_range(inode, offset, len);
1273         } else {
1274                 ret = expand_inode_data(inode, offset, len, mode);
1275         }
1276
1277         if (!ret) {
1278                 inode->i_mtime = inode->i_ctime = CURRENT_TIME;
1279                 f2fs_mark_inode_dirty_sync(inode);
1280                 f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1281         }
1282
1283 out:
1284         inode_unlock(inode);
1285
1286         trace_f2fs_fallocate(inode, mode, offset, len, ret);
1287         return ret;
1288 }
1289
1290 static int f2fs_release_file(struct inode *inode, struct file *filp)
1291 {
1292         /*
1293          * f2fs_relase_file is called at every close calls. So we should
1294          * not drop any inmemory pages by close called by other process.
1295          */
1296         if (!(filp->f_mode & FMODE_WRITE) ||
1297                         atomic_read(&inode->i_writecount) != 1)
1298                 return 0;
1299
1300         /* some remained atomic pages should discarded */
1301         if (f2fs_is_atomic_file(inode))
1302                 drop_inmem_pages(inode);
1303         if (f2fs_is_volatile_file(inode)) {
1304                 clear_inode_flag(inode, FI_VOLATILE_FILE);
1305                 set_inode_flag(inode, FI_DROP_CACHE);
1306                 filemap_fdatawrite(inode->i_mapping);
1307                 clear_inode_flag(inode, FI_DROP_CACHE);
1308         }
1309         return 0;
1310 }
1311
1312 #define F2FS_REG_FLMASK         (~(FS_DIRSYNC_FL | FS_TOPDIR_FL))
1313 #define F2FS_OTHER_FLMASK       (FS_NODUMP_FL | FS_NOATIME_FL)
1314
1315 static inline __u32 f2fs_mask_flags(umode_t mode, __u32 flags)
1316 {
1317         if (S_ISDIR(mode))
1318                 return flags;
1319         else if (S_ISREG(mode))
1320                 return flags & F2FS_REG_FLMASK;
1321         else
1322                 return flags & F2FS_OTHER_FLMASK;
1323 }
1324
1325 static int f2fs_ioc_getflags(struct file *filp, unsigned long arg)
1326 {
1327         struct inode *inode = file_inode(filp);
1328         struct f2fs_inode_info *fi = F2FS_I(inode);
1329         unsigned int flags = fi->i_flags & FS_FL_USER_VISIBLE;
1330         return put_user(flags, (int __user *)arg);
1331 }
1332
1333 static int f2fs_ioc_setflags(struct file *filp, unsigned long arg)
1334 {
1335         struct inode *inode = file_inode(filp);
1336         struct f2fs_inode_info *fi = F2FS_I(inode);
1337         unsigned int flags = fi->i_flags & FS_FL_USER_VISIBLE;
1338         unsigned int oldflags;
1339         int ret;
1340
1341         if (!inode_owner_or_capable(inode))
1342                 return -EACCES;
1343
1344         if (get_user(flags, (int __user *)arg))
1345                 return -EFAULT;
1346
1347         ret = mnt_want_write_file(filp);
1348         if (ret)
1349                 return ret;
1350
1351         flags = f2fs_mask_flags(inode->i_mode, flags);
1352
1353         inode_lock(inode);
1354
1355         oldflags = fi->i_flags;
1356
1357         if ((flags ^ oldflags) & (FS_APPEND_FL | FS_IMMUTABLE_FL)) {
1358                 if (!capable(CAP_LINUX_IMMUTABLE)) {
1359                         inode_unlock(inode);
1360                         ret = -EPERM;
1361                         goto out;
1362                 }
1363         }
1364
1365         flags = flags & FS_FL_USER_MODIFIABLE;
1366         flags |= oldflags & ~FS_FL_USER_MODIFIABLE;
1367         fi->i_flags = flags;
1368         inode_unlock(inode);
1369
1370         inode->i_ctime = CURRENT_TIME;
1371         f2fs_set_inode_flags(inode);
1372 out:
1373         mnt_drop_write_file(filp);
1374         return ret;
1375 }
1376
1377 static int f2fs_ioc_getversion(struct file *filp, unsigned long arg)
1378 {
1379         struct inode *inode = file_inode(filp);
1380
1381         return put_user(inode->i_generation, (int __user *)arg);
1382 }
1383
1384 static int f2fs_ioc_start_atomic_write(struct file *filp)
1385 {
1386         struct inode *inode = file_inode(filp);
1387         int ret;
1388
1389         if (!inode_owner_or_capable(inode))
1390                 return -EACCES;
1391
1392         ret = mnt_want_write_file(filp);
1393         if (ret)
1394                 return ret;
1395
1396         inode_lock(inode);
1397
1398         if (f2fs_is_atomic_file(inode))
1399                 goto out;
1400
1401         ret = f2fs_convert_inline_inode(inode);
1402         if (ret)
1403                 goto out;
1404
1405         set_inode_flag(inode, FI_ATOMIC_FILE);
1406         f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1407
1408         if (!get_dirty_pages(inode))
1409                 goto out;
1410
1411         f2fs_msg(F2FS_I_SB(inode)->sb, KERN_WARNING,
1412                 "Unexpected flush for atomic writes: ino=%lu, npages=%lld",
1413                                         inode->i_ino, get_dirty_pages(inode));
1414         ret = filemap_write_and_wait_range(inode->i_mapping, 0, LLONG_MAX);
1415         if (ret)
1416                 clear_inode_flag(inode, FI_ATOMIC_FILE);
1417 out:
1418         inode_unlock(inode);
1419         mnt_drop_write_file(filp);
1420         return ret;
1421 }
1422
1423 static int f2fs_ioc_commit_atomic_write(struct file *filp)
1424 {
1425         struct inode *inode = file_inode(filp);
1426         int ret;
1427
1428         if (!inode_owner_or_capable(inode))
1429                 return -EACCES;
1430
1431         ret = mnt_want_write_file(filp);
1432         if (ret)
1433                 return ret;
1434
1435         inode_lock(inode);
1436
1437         if (f2fs_is_volatile_file(inode))
1438                 goto err_out;
1439
1440         if (f2fs_is_atomic_file(inode)) {
1441                 clear_inode_flag(inode, FI_ATOMIC_FILE);
1442                 ret = commit_inmem_pages(inode);
1443                 if (ret) {
1444                         set_inode_flag(inode, FI_ATOMIC_FILE);
1445                         goto err_out;
1446                 }
1447         }
1448
1449         ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true);
1450 err_out:
1451         inode_unlock(inode);
1452         mnt_drop_write_file(filp);
1453         return ret;
1454 }
1455
1456 static int f2fs_ioc_start_volatile_write(struct file *filp)
1457 {
1458         struct inode *inode = file_inode(filp);
1459         int ret;
1460
1461         if (!inode_owner_or_capable(inode))
1462                 return -EACCES;
1463
1464         ret = mnt_want_write_file(filp);
1465         if (ret)
1466                 return ret;
1467
1468         inode_lock(inode);
1469
1470         if (f2fs_is_volatile_file(inode))
1471                 goto out;
1472
1473         ret = f2fs_convert_inline_inode(inode);
1474         if (ret)
1475                 goto out;
1476
1477         set_inode_flag(inode, FI_VOLATILE_FILE);
1478         f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1479 out:
1480         inode_unlock(inode);
1481         mnt_drop_write_file(filp);
1482         return ret;
1483 }
1484
1485 static int f2fs_ioc_release_volatile_write(struct file *filp)
1486 {
1487         struct inode *inode = file_inode(filp);
1488         int ret;
1489
1490         if (!inode_owner_or_capable(inode))
1491                 return -EACCES;
1492
1493         ret = mnt_want_write_file(filp);
1494         if (ret)
1495                 return ret;
1496
1497         inode_lock(inode);
1498
1499         if (!f2fs_is_volatile_file(inode))
1500                 goto out;
1501
1502         if (!f2fs_is_first_block_written(inode)) {
1503                 ret = truncate_partial_data_page(inode, 0, true);
1504                 goto out;
1505         }
1506
1507         ret = punch_hole(inode, 0, F2FS_BLKSIZE);
1508 out:
1509         inode_unlock(inode);
1510         mnt_drop_write_file(filp);
1511         return ret;
1512 }
1513
1514 static int f2fs_ioc_abort_volatile_write(struct file *filp)
1515 {
1516         struct inode *inode = file_inode(filp);
1517         int ret;
1518
1519         if (!inode_owner_or_capable(inode))
1520                 return -EACCES;
1521
1522         ret = mnt_want_write_file(filp);
1523         if (ret)
1524                 return ret;
1525
1526         inode_lock(inode);
1527
1528         if (f2fs_is_atomic_file(inode))
1529                 drop_inmem_pages(inode);
1530         if (f2fs_is_volatile_file(inode)) {
1531                 clear_inode_flag(inode, FI_VOLATILE_FILE);
1532                 ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true);
1533         }
1534
1535         inode_unlock(inode);
1536
1537         mnt_drop_write_file(filp);
1538         f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1539         return ret;
1540 }
1541
1542 static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
1543 {
1544         struct inode *inode = file_inode(filp);
1545         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1546         struct super_block *sb = sbi->sb;
1547         __u32 in;
1548         int ret;
1549
1550         if (!capable(CAP_SYS_ADMIN))
1551                 return -EPERM;
1552
1553         if (get_user(in, (__u32 __user *)arg))
1554                 return -EFAULT;
1555
1556         ret = mnt_want_write_file(filp);
1557         if (ret)
1558                 return ret;
1559
1560         switch (in) {
1561         case F2FS_GOING_DOWN_FULLSYNC:
1562                 sb = freeze_bdev(sb->s_bdev);
1563                 if (sb && !IS_ERR(sb)) {
1564                         f2fs_stop_checkpoint(sbi, false);
1565                         thaw_bdev(sb->s_bdev, sb);
1566                 }
1567                 break;
1568         case F2FS_GOING_DOWN_METASYNC:
1569                 /* do checkpoint only */
1570                 f2fs_sync_fs(sb, 1);
1571                 f2fs_stop_checkpoint(sbi, false);
1572                 break;
1573         case F2FS_GOING_DOWN_NOSYNC:
1574                 f2fs_stop_checkpoint(sbi, false);
1575                 break;
1576         case F2FS_GOING_DOWN_METAFLUSH:
1577                 sync_meta_pages(sbi, META, LONG_MAX);
1578                 f2fs_stop_checkpoint(sbi, false);
1579                 break;
1580         default:
1581                 ret = -EINVAL;
1582                 goto out;
1583         }
1584         f2fs_update_time(sbi, REQ_TIME);
1585 out:
1586         mnt_drop_write_file(filp);
1587         return ret;
1588 }
1589
1590 static int f2fs_ioc_fitrim(struct file *filp, unsigned long arg)
1591 {
1592         struct inode *inode = file_inode(filp);
1593         struct super_block *sb = inode->i_sb;
1594         struct request_queue *q = bdev_get_queue(sb->s_bdev);
1595         struct fstrim_range range;
1596         int ret;
1597
1598         if (!capable(CAP_SYS_ADMIN))
1599                 return -EPERM;
1600
1601         if (!blk_queue_discard(q))
1602                 return -EOPNOTSUPP;
1603
1604         if (copy_from_user(&range, (struct fstrim_range __user *)arg,
1605                                 sizeof(range)))
1606                 return -EFAULT;
1607
1608         ret = mnt_want_write_file(filp);
1609         if (ret)
1610                 return ret;
1611
1612         range.minlen = max((unsigned int)range.minlen,
1613                                 q->limits.discard_granularity);
1614         ret = f2fs_trim_fs(F2FS_SB(sb), &range);
1615         mnt_drop_write_file(filp);
1616         if (ret < 0)
1617                 return ret;
1618
1619         if (copy_to_user((struct fstrim_range __user *)arg, &range,
1620                                 sizeof(range)))
1621                 return -EFAULT;
1622         f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1623         return 0;
1624 }
1625
1626 static bool uuid_is_nonzero(__u8 u[16])
1627 {
1628         int i;
1629
1630         for (i = 0; i < 16; i++)
1631                 if (u[i])
1632                         return true;
1633         return false;
1634 }
1635
1636 static int f2fs_ioc_set_encryption_policy(struct file *filp, unsigned long arg)
1637 {
1638         struct fscrypt_policy policy;
1639         struct inode *inode = file_inode(filp);
1640         int ret;
1641
1642         if (copy_from_user(&policy, (struct fscrypt_policy __user *)arg,
1643                                                         sizeof(policy)))
1644                 return -EFAULT;
1645
1646         ret = mnt_want_write_file(filp);
1647         if (ret)
1648                 return ret;
1649
1650         f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
1651         ret = fscrypt_process_policy(inode, &policy);
1652
1653         mnt_drop_write_file(filp);
1654         return ret;
1655 }
1656
1657 static int f2fs_ioc_get_encryption_policy(struct file *filp, unsigned long arg)
1658 {
1659         struct fscrypt_policy policy;
1660         struct inode *inode = file_inode(filp);
1661         int err;
1662
1663         err = fscrypt_get_policy(inode, &policy);
1664         if (err)
1665                 return err;
1666
1667         if (copy_to_user((struct fscrypt_policy __user *)arg, &policy, sizeof(policy)))
1668                 return -EFAULT;
1669         return 0;
1670 }
1671
1672 static int f2fs_ioc_get_encryption_pwsalt(struct file *filp, unsigned long arg)
1673 {
1674         struct inode *inode = file_inode(filp);
1675         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1676         int err;
1677
1678         if (!f2fs_sb_has_crypto(inode->i_sb))
1679                 return -EOPNOTSUPP;
1680
1681         if (uuid_is_nonzero(sbi->raw_super->encrypt_pw_salt))
1682                 goto got_it;
1683
1684         err = mnt_want_write_file(filp);
1685         if (err)
1686                 return err;
1687
1688         /* update superblock with uuid */
1689         generate_random_uuid(sbi->raw_super->encrypt_pw_salt);
1690
1691         err = f2fs_commit_super(sbi, false);
1692         if (err) {
1693                 /* undo new data */
1694                 memset(sbi->raw_super->encrypt_pw_salt, 0, 16);
1695                 mnt_drop_write_file(filp);
1696                 return err;
1697         }
1698         mnt_drop_write_file(filp);
1699 got_it:
1700         if (copy_to_user((__u8 __user *)arg, sbi->raw_super->encrypt_pw_salt,
1701                                                                         16))
1702                 return -EFAULT;
1703         return 0;
1704 }
1705
1706 static int f2fs_ioc_gc(struct file *filp, unsigned long arg)
1707 {
1708         struct inode *inode = file_inode(filp);
1709         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1710         __u32 sync;
1711         int ret;
1712
1713         if (!capable(CAP_SYS_ADMIN))
1714                 return -EPERM;
1715
1716         if (get_user(sync, (__u32 __user *)arg))
1717                 return -EFAULT;
1718
1719         if (f2fs_readonly(sbi->sb))
1720                 return -EROFS;
1721
1722         ret = mnt_want_write_file(filp);
1723         if (ret)
1724                 return ret;
1725
1726         if (!sync) {
1727                 if (!mutex_trylock(&sbi->gc_mutex)) {
1728                         ret = -EBUSY;
1729                         goto out;
1730                 }
1731         } else {
1732                 mutex_lock(&sbi->gc_mutex);
1733         }
1734
1735         ret = f2fs_gc(sbi, sync);
1736 out:
1737         mnt_drop_write_file(filp);
1738         return ret;
1739 }
1740
1741 static int f2fs_ioc_write_checkpoint(struct file *filp, unsigned long arg)
1742 {
1743         struct inode *inode = file_inode(filp);
1744         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1745         int ret;
1746
1747         if (!capable(CAP_SYS_ADMIN))
1748                 return -EPERM;
1749
1750         if (f2fs_readonly(sbi->sb))
1751                 return -EROFS;
1752
1753         ret = mnt_want_write_file(filp);
1754         if (ret)
1755                 return ret;
1756
1757         ret = f2fs_sync_fs(sbi->sb, 1);
1758
1759         mnt_drop_write_file(filp);
1760         return ret;
1761 }
1762
1763 static int f2fs_defragment_range(struct f2fs_sb_info *sbi,
1764                                         struct file *filp,
1765                                         struct f2fs_defragment *range)
1766 {
1767         struct inode *inode = file_inode(filp);
1768         struct f2fs_map_blocks map = { .m_next_pgofs = NULL };
1769         struct extent_info ei;
1770         pgoff_t pg_start, pg_end;
1771         unsigned int blk_per_seg = sbi->blocks_per_seg;
1772         unsigned int total = 0, sec_num;
1773         unsigned int pages_per_sec = sbi->segs_per_sec * blk_per_seg;
1774         block_t blk_end = 0;
1775         bool fragmented = false;
1776         int err;
1777
1778         /* if in-place-update policy is enabled, don't waste time here */
1779         if (need_inplace_update(inode))
1780                 return -EINVAL;
1781
1782         pg_start = range->start >> PAGE_SHIFT;
1783         pg_end = (range->start + range->len) >> PAGE_SHIFT;
1784
1785         f2fs_balance_fs(sbi, true);
1786
1787         inode_lock(inode);
1788
1789         /* writeback all dirty pages in the range */
1790         err = filemap_write_and_wait_range(inode->i_mapping, range->start,
1791                                                 range->start + range->len - 1);
1792         if (err)
1793                 goto out;
1794
1795         /*
1796          * lookup mapping info in extent cache, skip defragmenting if physical
1797          * block addresses are continuous.
1798          */
1799         if (f2fs_lookup_extent_cache(inode, pg_start, &ei)) {
1800                 if (ei.fofs + ei.len >= pg_end)
1801                         goto out;
1802         }
1803
1804         map.m_lblk = pg_start;
1805
1806         /*
1807          * lookup mapping info in dnode page cache, skip defragmenting if all
1808          * physical block addresses are continuous even if there are hole(s)
1809          * in logical blocks.
1810          */
1811         while (map.m_lblk < pg_end) {
1812                 map.m_len = pg_end - map.m_lblk;
1813                 err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_READ);
1814                 if (err)
1815                         goto out;
1816
1817                 if (!(map.m_flags & F2FS_MAP_FLAGS)) {
1818                         map.m_lblk++;
1819                         continue;
1820                 }
1821
1822                 if (blk_end && blk_end != map.m_pblk) {
1823                         fragmented = true;
1824                         break;
1825                 }
1826                 blk_end = map.m_pblk + map.m_len;
1827
1828                 map.m_lblk += map.m_len;
1829         }
1830
1831         if (!fragmented)
1832                 goto out;
1833
1834         map.m_lblk = pg_start;
1835         map.m_len = pg_end - pg_start;
1836
1837         sec_num = (map.m_len + pages_per_sec - 1) / pages_per_sec;
1838
1839         /*
1840          * make sure there are enough free section for LFS allocation, this can
1841          * avoid defragment running in SSR mode when free section are allocated
1842          * intensively
1843          */
1844         if (has_not_enough_free_secs(sbi, sec_num)) {
1845                 err = -EAGAIN;
1846                 goto out;
1847         }
1848
1849         while (map.m_lblk < pg_end) {
1850                 pgoff_t idx;
1851                 int cnt = 0;
1852
1853 do_map:
1854                 map.m_len = pg_end - map.m_lblk;
1855                 err = f2fs_map_blocks(inode, &map, 0, F2FS_GET_BLOCK_READ);
1856                 if (err)
1857                         goto clear_out;
1858
1859                 if (!(map.m_flags & F2FS_MAP_FLAGS)) {
1860                         map.m_lblk++;
1861                         continue;
1862                 }
1863
1864                 set_inode_flag(inode, FI_DO_DEFRAG);
1865
1866                 idx = map.m_lblk;
1867                 while (idx < map.m_lblk + map.m_len && cnt < blk_per_seg) {
1868                         struct page *page;
1869
1870                         page = get_lock_data_page(inode, idx, true);
1871                         if (IS_ERR(page)) {
1872                                 err = PTR_ERR(page);
1873                                 goto clear_out;
1874                         }
1875
1876                         set_page_dirty(page);
1877                         f2fs_put_page(page, 1);
1878
1879                         idx++;
1880                         cnt++;
1881                         total++;
1882                 }
1883
1884                 map.m_lblk = idx;
1885
1886                 if (idx < pg_end && cnt < blk_per_seg)
1887                         goto do_map;
1888
1889                 clear_inode_flag(inode, FI_DO_DEFRAG);
1890
1891                 err = filemap_fdatawrite(inode->i_mapping);
1892                 if (err)
1893                         goto out;
1894         }
1895 clear_out:
1896         clear_inode_flag(inode, FI_DO_DEFRAG);
1897 out:
1898         inode_unlock(inode);
1899         if (!err)
1900                 range->len = (u64)total << PAGE_SHIFT;
1901         return err;
1902 }
1903
1904 static int f2fs_ioc_defragment(struct file *filp, unsigned long arg)
1905 {
1906         struct inode *inode = file_inode(filp);
1907         struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
1908         struct f2fs_defragment range;
1909         int err;
1910
1911         if (!capable(CAP_SYS_ADMIN))
1912                 return -EPERM;
1913
1914         if (!S_ISREG(inode->i_mode))
1915                 return -EINVAL;
1916
1917         err = mnt_want_write_file(filp);
1918         if (err)
1919                 return err;
1920
1921         if (f2fs_readonly(sbi->sb)) {
1922                 err = -EROFS;
1923                 goto out;
1924         }
1925
1926         if (copy_from_user(&range, (struct f2fs_defragment __user *)arg,
1927                                                         sizeof(range))) {
1928                 err = -EFAULT;
1929                 goto out;
1930         }
1931
1932         /* verify alignment of offset & size */
1933         if (range.start & (F2FS_BLKSIZE - 1) ||
1934                 range.len & (F2FS_BLKSIZE - 1)) {
1935                 err = -EINVAL;
1936                 goto out;
1937         }
1938
1939         err = f2fs_defragment_range(sbi, filp, &range);
1940         f2fs_update_time(sbi, REQ_TIME);
1941         if (err < 0)
1942                 goto out;
1943
1944         if (copy_to_user((struct f2fs_defragment __user *)arg, &range,
1945                                                         sizeof(range)))
1946                 err = -EFAULT;
1947 out:
1948         mnt_drop_write_file(filp);
1949         return err;
1950 }
1951
1952 long f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
1953 {
1954         switch (cmd) {
1955         case F2FS_IOC_GETFLAGS:
1956                 return f2fs_ioc_getflags(filp, arg);
1957         case F2FS_IOC_SETFLAGS:
1958                 return f2fs_ioc_setflags(filp, arg);
1959         case F2FS_IOC_GETVERSION:
1960                 return f2fs_ioc_getversion(filp, arg);
1961         case F2FS_IOC_START_ATOMIC_WRITE:
1962                 return f2fs_ioc_start_atomic_write(filp);
1963         case F2FS_IOC_COMMIT_ATOMIC_WRITE:
1964                 return f2fs_ioc_commit_atomic_write(filp);
1965         case F2FS_IOC_START_VOLATILE_WRITE:
1966                 return f2fs_ioc_start_volatile_write(filp);
1967         case F2FS_IOC_RELEASE_VOLATILE_WRITE:
1968                 return f2fs_ioc_release_volatile_write(filp);
1969         case F2FS_IOC_ABORT_VOLATILE_WRITE:
1970                 return f2fs_ioc_abort_volatile_write(filp);
1971         case F2FS_IOC_SHUTDOWN:
1972                 return f2fs_ioc_shutdown(filp, arg);
1973         case FITRIM:
1974                 return f2fs_ioc_fitrim(filp, arg);
1975         case F2FS_IOC_SET_ENCRYPTION_POLICY:
1976                 return f2fs_ioc_set_encryption_policy(filp, arg);
1977         case F2FS_IOC_GET_ENCRYPTION_POLICY:
1978                 return f2fs_ioc_get_encryption_policy(filp, arg);
1979         case F2FS_IOC_GET_ENCRYPTION_PWSALT:
1980                 return f2fs_ioc_get_encryption_pwsalt(filp, arg);
1981         case F2FS_IOC_GARBAGE_COLLECT:
1982                 return f2fs_ioc_gc(filp, arg);
1983         case F2FS_IOC_WRITE_CHECKPOINT:
1984                 return f2fs_ioc_write_checkpoint(filp, arg);
1985         case F2FS_IOC_DEFRAGMENT:
1986                 return f2fs_ioc_defragment(filp, arg);
1987         default:
1988                 return -ENOTTY;
1989         }
1990 }
1991
1992 static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
1993 {
1994         struct file *file = iocb->ki_filp;
1995         struct inode *inode = file_inode(file);
1996         ssize_t ret;
1997
1998         if (f2fs_encrypted_inode(inode) &&
1999                                 !fscrypt_has_encryption_key(inode) &&
2000                                 fscrypt_get_encryption_info(inode))
2001                 return -EACCES;
2002
2003         inode_lock(inode);
2004         ret = generic_write_checks(iocb, from);
2005         if (ret > 0) {
2006                 ret = f2fs_preallocate_blocks(iocb, from);
2007                 if (!ret)
2008                         ret = __generic_file_write_iter(iocb, from);
2009         }
2010         inode_unlock(inode);
2011
2012         if (ret > 0)
2013                 ret = generic_write_sync(iocb, ret);
2014         return ret;
2015 }
2016
2017 #ifdef CONFIG_COMPAT
2018 long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
2019 {
2020         switch (cmd) {
2021         case F2FS_IOC32_GETFLAGS:
2022                 cmd = F2FS_IOC_GETFLAGS;
2023                 break;
2024         case F2FS_IOC32_SETFLAGS:
2025                 cmd = F2FS_IOC_SETFLAGS;
2026                 break;
2027         case F2FS_IOC32_GETVERSION:
2028                 cmd = F2FS_IOC_GETVERSION;
2029                 break;
2030         case F2FS_IOC_START_ATOMIC_WRITE:
2031         case F2FS_IOC_COMMIT_ATOMIC_WRITE:
2032         case F2FS_IOC_START_VOLATILE_WRITE:
2033         case F2FS_IOC_RELEASE_VOLATILE_WRITE:
2034         case F2FS_IOC_ABORT_VOLATILE_WRITE:
2035         case F2FS_IOC_SHUTDOWN:
2036         case F2FS_IOC_SET_ENCRYPTION_POLICY:
2037         case F2FS_IOC_GET_ENCRYPTION_PWSALT:
2038         case F2FS_IOC_GET_ENCRYPTION_POLICY:
2039         case F2FS_IOC_GARBAGE_COLLECT:
2040         case F2FS_IOC_WRITE_CHECKPOINT:
2041         case F2FS_IOC_DEFRAGMENT:
2042                 break;
2043         default:
2044                 return -ENOIOCTLCMD;
2045         }
2046         return f2fs_ioctl(file, cmd, (unsigned long) compat_ptr(arg));
2047 }
2048 #endif
2049
2050 const struct file_operations f2fs_file_operations = {
2051         .llseek         = f2fs_llseek,
2052         .read_iter      = generic_file_read_iter,
2053         .write_iter     = f2fs_file_write_iter,
2054         .open           = f2fs_file_open,
2055         .release        = f2fs_release_file,
2056         .mmap           = f2fs_file_mmap,
2057         .fsync          = f2fs_sync_file,
2058         .fallocate      = f2fs_fallocate,
2059         .unlocked_ioctl = f2fs_ioctl,
2060 #ifdef CONFIG_COMPAT
2061         .compat_ioctl   = f2fs_compat_ioctl,
2062 #endif
2063         .splice_read    = generic_file_splice_read,
2064         .splice_write   = iter_file_splice_write,
2065 };