Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
file.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007 Oracle. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public
6  * License v2 as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public
14  * License along with this program; if not, write to the
15  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16  * Boston, MA 021110-1307, USA.
17  */
18 
19 #include <linux/fs.h>
20 #include <linux/pagemap.h>
21 #include <linux/highmem.h>
22 #include <linux/time.h>
23 #include <linux/init.h>
24 #include <linux/string.h>
25 #include <linux/backing-dev.h>
26 #include <linux/mpage.h>
27 #include <linux/falloc.h>
28 #include <linux/swap.h>
29 #include <linux/writeback.h>
30 #include <linux/statfs.h>
31 #include <linux/compat.h>
32 #include <linux/slab.h>
33 #include "ctree.h"
34 #include "disk-io.h"
35 #include "transaction.h"
36 #include "btrfs_inode.h"
37 #include "ioctl.h"
38 #include "print-tree.h"
39 #include "tree-log.h"
40 #include "locking.h"
41 #include "compat.h"
42 #include "volumes.h"
43 
44 /*
45  * when auto defrag is enabled we
46  * queue up these defrag structs to remember which
47  * inodes need defragging passes
48  */
49 struct inode_defrag {
50  struct rb_node rb_node;
51  /* objectid */
53  /*
54  * transid where the defrag was added, we search for
55  * extents newer than this
56  */
58 
59  /* root objectid */
61 
62  /* last offset we were able to defrag */
64 
65  /* if we've wrapped around back to zero once already */
66  int cycled;
67 };
68 
69 static int __compare_inode_defrag(struct inode_defrag *defrag1,
70  struct inode_defrag *defrag2)
71 {
72  if (defrag1->root > defrag2->root)
73  return 1;
74  else if (defrag1->root < defrag2->root)
75  return -1;
76  else if (defrag1->ino > defrag2->ino)
77  return 1;
78  else if (defrag1->ino < defrag2->ino)
79  return -1;
80  else
81  return 0;
82 }
83 
84 /* pop a record for an inode into the defrag tree. The lock
85  * must be held already
86  *
87  * If you're inserting a record for an older transid than an
88  * existing record, the transid already in the tree is lowered
89  *
90  * If an existing record is found the defrag item you
91  * pass in is freed
92  */
93 static void __btrfs_add_inode_defrag(struct inode *inode,
94  struct inode_defrag *defrag)
95 {
96  struct btrfs_root *root = BTRFS_I(inode)->root;
97  struct inode_defrag *entry;
98  struct rb_node **p;
99  struct rb_node *parent = NULL;
100  int ret;
101 
102  p = &root->fs_info->defrag_inodes.rb_node;
103  while (*p) {
104  parent = *p;
105  entry = rb_entry(parent, struct inode_defrag, rb_node);
106 
107  ret = __compare_inode_defrag(defrag, entry);
108  if (ret < 0)
109  p = &parent->rb_left;
110  else if (ret > 0)
111  p = &parent->rb_right;
112  else {
113  /* if we're reinserting an entry for
114  * an old defrag run, make sure to
115  * lower the transid of our existing record
116  */
117  if (defrag->transid < entry->transid)
118  entry->transid = defrag->transid;
119  if (defrag->last_offset > entry->last_offset)
120  entry->last_offset = defrag->last_offset;
121  goto exists;
122  }
123  }
124  set_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags);
125  rb_link_node(&defrag->rb_node, parent, p);
126  rb_insert_color(&defrag->rb_node, &root->fs_info->defrag_inodes);
127  return;
128 
129 exists:
130  kfree(defrag);
131  return;
132 
133 }
134 
135 /*
136  * insert a defrag record for this inode if auto defrag is
137  * enabled
138  */
140  struct inode *inode)
141 {
142  struct btrfs_root *root = BTRFS_I(inode)->root;
143  struct inode_defrag *defrag;
144  u64 transid;
145 
146  if (!btrfs_test_opt(root, AUTO_DEFRAG))
147  return 0;
148 
149  if (btrfs_fs_closing(root->fs_info))
150  return 0;
151 
152  if (test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags))
153  return 0;
154 
155  if (trans)
156  transid = trans->transid;
157  else
158  transid = BTRFS_I(inode)->root->last_trans;
159 
160  defrag = kzalloc(sizeof(*defrag), GFP_NOFS);
161  if (!defrag)
162  return -ENOMEM;
163 
164  defrag->ino = btrfs_ino(inode);
165  defrag->transid = transid;
166  defrag->root = root->root_key.objectid;
167 
168  spin_lock(&root->fs_info->defrag_inodes_lock);
169  if (!test_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags))
170  __btrfs_add_inode_defrag(inode, defrag);
171  else
172  kfree(defrag);
173  spin_unlock(&root->fs_info->defrag_inodes_lock);
174  return 0;
175 }
176 
177 /*
178  * must be called with the defrag_inodes lock held
179  */
181  u64 root, u64 ino,
182  struct rb_node **next)
183 {
184  struct inode_defrag *entry = NULL;
185  struct inode_defrag tmp;
186  struct rb_node *p;
187  struct rb_node *parent = NULL;
188  int ret;
189 
190  tmp.ino = ino;
191  tmp.root = root;
192 
193  p = info->defrag_inodes.rb_node;
194  while (p) {
195  parent = p;
196  entry = rb_entry(parent, struct inode_defrag, rb_node);
197 
198  ret = __compare_inode_defrag(&tmp, entry);
199  if (ret < 0)
200  p = parent->rb_left;
201  else if (ret > 0)
202  p = parent->rb_right;
203  else
204  return entry;
205  }
206 
207  if (next) {
208  while (parent && __compare_inode_defrag(&tmp, entry) > 0) {
209  parent = rb_next(parent);
210  entry = rb_entry(parent, struct inode_defrag, rb_node);
211  }
212  *next = parent;
213  }
214  return NULL;
215 }
216 
217 /*
218  * run through the list of inodes in the FS that need
219  * defragging
220  */
222 {
223  struct inode_defrag *defrag;
224  struct btrfs_root *inode_root;
225  struct inode *inode;
226  struct rb_node *n;
227  struct btrfs_key key;
228  struct btrfs_ioctl_defrag_range_args range;
229  u64 first_ino = 0;
230  u64 root_objectid = 0;
231  int num_defrag;
232  int defrag_batch = 1024;
233 
234  memset(&range, 0, sizeof(range));
235  range.len = (u64)-1;
236 
237  atomic_inc(&fs_info->defrag_running);
238  spin_lock(&fs_info->defrag_inodes_lock);
239  while(1) {
240  n = NULL;
241 
242  /* find an inode to defrag */
243  defrag = btrfs_find_defrag_inode(fs_info, root_objectid,
244  first_ino, &n);
245  if (!defrag) {
246  if (n) {
247  defrag = rb_entry(n, struct inode_defrag,
248  rb_node);
249  } else if (root_objectid || first_ino) {
250  root_objectid = 0;
251  first_ino = 0;
252  continue;
253  } else {
254  break;
255  }
256  }
257 
258  /* remove it from the rbtree */
259  first_ino = defrag->ino + 1;
260  root_objectid = defrag->root;
261  rb_erase(&defrag->rb_node, &fs_info->defrag_inodes);
262 
263  if (btrfs_fs_closing(fs_info))
264  goto next_free;
265 
266  spin_unlock(&fs_info->defrag_inodes_lock);
267 
268  /* get the inode */
269  key.objectid = defrag->root;
270  btrfs_set_key_type(&key, BTRFS_ROOT_ITEM_KEY);
271  key.offset = (u64)-1;
272  inode_root = btrfs_read_fs_root_no_name(fs_info, &key);
273  if (IS_ERR(inode_root))
274  goto next;
275 
276  key.objectid = defrag->ino;
277  btrfs_set_key_type(&key, BTRFS_INODE_ITEM_KEY);
278  key.offset = 0;
279 
280  inode = btrfs_iget(fs_info->sb, &key, inode_root, NULL);
281  if (IS_ERR(inode))
282  goto next;
283 
284  /* do a chunk of defrag */
285  clear_bit(BTRFS_INODE_IN_DEFRAG, &BTRFS_I(inode)->runtime_flags);
286  range.start = defrag->last_offset;
287  num_defrag = btrfs_defrag_file(inode, NULL, &range, defrag->transid,
288  defrag_batch);
289  /*
290  * if we filled the whole defrag batch, there
291  * must be more work to do. Queue this defrag
292  * again
293  */
294  if (num_defrag == defrag_batch) {
295  defrag->last_offset = range.start;
296  __btrfs_add_inode_defrag(inode, defrag);
297  /*
298  * we don't want to kfree defrag, we added it back to
299  * the rbtree
300  */
301  defrag = NULL;
302  } else if (defrag->last_offset && !defrag->cycled) {
303  /*
304  * we didn't fill our defrag batch, but
305  * we didn't start at zero. Make sure we loop
306  * around to the start of the file.
307  */
308  defrag->last_offset = 0;
309  defrag->cycled = 1;
310  __btrfs_add_inode_defrag(inode, defrag);
311  defrag = NULL;
312  }
313 
314  iput(inode);
315 next:
316  spin_lock(&fs_info->defrag_inodes_lock);
317 next_free:
318  kfree(defrag);
319  }
320  spin_unlock(&fs_info->defrag_inodes_lock);
321 
322  atomic_dec(&fs_info->defrag_running);
323 
324  /*
325  * during unmount, we use the transaction_wait queue to
326  * wait for the defragger to stop
327  */
328  wake_up(&fs_info->transaction_wait);
329  return 0;
330 }
331 
332 /* simple helper to fault in pages and copy. This should go away
333  * and be replaced with calls into generic code.
334  */
335 static noinline int btrfs_copy_from_user(loff_t pos, int num_pages,
336  size_t write_bytes,
337  struct page **prepared_pages,
338  struct iov_iter *i)
339 {
340  size_t copied = 0;
341  size_t total_copied = 0;
342  int pg = 0;
343  int offset = pos & (PAGE_CACHE_SIZE - 1);
344 
345  while (write_bytes > 0) {
346  size_t count = min_t(size_t,
347  PAGE_CACHE_SIZE - offset, write_bytes);
348  struct page *page = prepared_pages[pg];
349  /*
350  * Copy data from userspace to the current page
351  *
352  * Disable pagefault to avoid recursive lock since
353  * the pages are already locked
354  */
355  pagefault_disable();
356  copied = iov_iter_copy_from_user_atomic(page, i, offset, count);
357  pagefault_enable();
358 
359  /* Flush processor's dcache for this page */
360  flush_dcache_page(page);
361 
362  /*
363  * if we get a partial write, we can end up with
364  * partially up to date pages. These add
365  * a lot of complexity, so make sure they don't
366  * happen by forcing this copy to be retried.
367  *
368  * The rest of the btrfs_file_write code will fall
369  * back to page at a time copies after we return 0.
370  */
371  if (!PageUptodate(page) && copied < count)
372  copied = 0;
373 
374  iov_iter_advance(i, copied);
375  write_bytes -= copied;
376  total_copied += copied;
377 
378  /* Return to btrfs_file_aio_write to fault page */
379  if (unlikely(copied == 0))
380  break;
381 
382  if (unlikely(copied < PAGE_CACHE_SIZE - offset)) {
383  offset += copied;
384  } else {
385  pg++;
386  offset = 0;
387  }
388  }
389  return total_copied;
390 }
391 
392 /*
393  * unlocks pages after btrfs_file_write is done with them
394  */
395 void btrfs_drop_pages(struct page **pages, size_t num_pages)
396 {
397  size_t i;
398  for (i = 0; i < num_pages; i++) {
399  /* page checked is some magic around finding pages that
400  * have been modified without going through btrfs_set_page_dirty
401  * clear it here
402  */
403  ClearPageChecked(pages[i]);
404  unlock_page(pages[i]);
405  mark_page_accessed(pages[i]);
406  page_cache_release(pages[i]);
407  }
408 }
409 
410 /*
411  * after copy_from_user, pages need to be dirtied and we need to make
412  * sure holes are created between the current EOF and the start of
413  * any next extents (if required).
414  *
415  * this also makes the decision about creating an inline extent vs
416  * doing real data extents, marking pages dirty and delalloc as required.
417  */
418 int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode,
419  struct page **pages, size_t num_pages,
420  loff_t pos, size_t write_bytes,
421  struct extent_state **cached)
422 {
423  int err = 0;
424  int i;
425  u64 num_bytes;
426  u64 start_pos;
427  u64 end_of_last_block;
428  u64 end_pos = pos + write_bytes;
429  loff_t isize = i_size_read(inode);
430 
431  start_pos = pos & ~((u64)root->sectorsize - 1);
432  num_bytes = (write_bytes + pos - start_pos +
433  root->sectorsize - 1) & ~((u64)root->sectorsize - 1);
434 
435  end_of_last_block = start_pos + num_bytes - 1;
436  err = btrfs_set_extent_delalloc(inode, start_pos, end_of_last_block,
437  cached);
438  if (err)
439  return err;
440 
441  for (i = 0; i < num_pages; i++) {
442  struct page *p = pages[i];
443  SetPageUptodate(p);
444  ClearPageChecked(p);
445  set_page_dirty(p);
446  }
447 
448  /*
449  * we've only changed i_size in ram, and we haven't updated
450  * the disk i_size. There is no need to log the inode
451  * at this time.
452  */
453  if (end_pos > isize)
454  i_size_write(inode, end_pos);
455  return 0;
456 }
457 
458 /*
459  * this drops all the extents in the cache that intersect the range
460  * [start, end]. Existing extents are split as required.
461  */
462 void btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end,
463  int skip_pinned)
464 {
465  struct extent_map *em;
466  struct extent_map *split = NULL;
467  struct extent_map *split2 = NULL;
468  struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
469  u64 len = end - start + 1;
470  u64 gen;
471  int ret;
472  int testend = 1;
473  unsigned long flags;
474  int compressed = 0;
475 
476  WARN_ON(end < start);
477  if (end == (u64)-1) {
478  len = (u64)-1;
479  testend = 0;
480  }
481  while (1) {
482  int no_splits = 0;
483 
484  if (!split)
485  split = alloc_extent_map();
486  if (!split2)
487  split2 = alloc_extent_map();
488  if (!split || !split2)
489  no_splits = 1;
490 
491  write_lock(&em_tree->lock);
492  em = lookup_extent_mapping(em_tree, start, len);
493  if (!em) {
494  write_unlock(&em_tree->lock);
495  break;
496  }
497  flags = em->flags;
498  gen = em->generation;
499  if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) {
500  if (testend && em->start + em->len >= start + len) {
501  free_extent_map(em);
502  write_unlock(&em_tree->lock);
503  break;
504  }
505  start = em->start + em->len;
506  if (testend)
507  len = start + len - (em->start + em->len);
508  free_extent_map(em);
509  write_unlock(&em_tree->lock);
510  continue;
511  }
512  compressed = test_bit(EXTENT_FLAG_COMPRESSED, &em->flags);
514  remove_extent_mapping(em_tree, em);
515  if (no_splits)
516  goto next;
517 
518  if (em->block_start < EXTENT_MAP_LAST_BYTE &&
519  em->start < start) {
520  split->start = em->start;
521  split->len = start - em->start;
522  split->orig_start = em->orig_start;
523  split->block_start = em->block_start;
524 
525  if (compressed)
526  split->block_len = em->block_len;
527  else
528  split->block_len = split->len;
529  split->generation = gen;
530  split->bdev = em->bdev;
531  split->flags = flags;
532  split->compress_type = em->compress_type;
533  ret = add_extent_mapping(em_tree, split);
534  BUG_ON(ret); /* Logic error */
535  list_move(&split->list, &em_tree->modified_extents);
536  free_extent_map(split);
537  split = split2;
538  split2 = NULL;
539  }
540  if (em->block_start < EXTENT_MAP_LAST_BYTE &&
541  testend && em->start + em->len > start + len) {
542  u64 diff = start + len - em->start;
543 
544  split->start = start + len;
545  split->len = em->start + em->len - (start + len);
546  split->bdev = em->bdev;
547  split->flags = flags;
548  split->compress_type = em->compress_type;
549  split->generation = gen;
550 
551  if (compressed) {
552  split->block_len = em->block_len;
553  split->block_start = em->block_start;
554  split->orig_start = em->orig_start;
555  } else {
556  split->block_len = split->len;
557  split->block_start = em->block_start + diff;
558  split->orig_start = split->start;
559  }
560 
561  ret = add_extent_mapping(em_tree, split);
562  BUG_ON(ret); /* Logic error */
563  list_move(&split->list, &em_tree->modified_extents);
564  free_extent_map(split);
565  split = NULL;
566  }
567 next:
568  write_unlock(&em_tree->lock);
569 
570  /* once for us */
571  free_extent_map(em);
572  /* once for the tree*/
573  free_extent_map(em);
574  }
575  if (split)
576  free_extent_map(split);
577  if (split2)
578  free_extent_map(split2);
579 }
580 
581 /*
582  * this is very complex, but the basic idea is to drop all extents
583  * in the range start - end. hint_block is filled in with a block number
584  * that would be a good hint to the block allocator for this file.
585  *
586  * If an extent intersects the range but is not entirely inside the range
587  * it is either truncated or split. Anything entirely inside the range
588  * is deleted from the tree.
589  */
591  struct btrfs_root *root, struct inode *inode,
592  struct btrfs_path *path, u64 start, u64 end,
593  u64 *drop_end, int drop_cache)
594 {
595  struct extent_buffer *leaf;
596  struct btrfs_file_extent_item *fi;
597  struct btrfs_key key;
598  struct btrfs_key new_key;
599  u64 ino = btrfs_ino(inode);
600  u64 search_start = start;
601  u64 disk_bytenr = 0;
602  u64 num_bytes = 0;
603  u64 extent_offset = 0;
604  u64 extent_end = 0;
605  int del_nr = 0;
606  int del_slot = 0;
607  int extent_type;
608  int recow;
609  int ret;
610  int modify_tree = -1;
611  int update_refs = (root->ref_cows || root == root->fs_info->tree_root);
612  int found = 0;
613 
614  if (drop_cache)
615  btrfs_drop_extent_cache(inode, start, end - 1, 0);
616 
617  if (start >= BTRFS_I(inode)->disk_i_size)
618  modify_tree = 0;
619 
620  while (1) {
621  recow = 0;
622  ret = btrfs_lookup_file_extent(trans, root, path, ino,
623  search_start, modify_tree);
624  if (ret < 0)
625  break;
626  if (ret > 0 && path->slots[0] > 0 && search_start == start) {
627  leaf = path->nodes[0];
628  btrfs_item_key_to_cpu(leaf, &key, path->slots[0] - 1);
629  if (key.objectid == ino &&
631  path->slots[0]--;
632  }
633  ret = 0;
634 next_slot:
635  leaf = path->nodes[0];
636  if (path->slots[0] >= btrfs_header_nritems(leaf)) {
637  BUG_ON(del_nr > 0);
638  ret = btrfs_next_leaf(root, path);
639  if (ret < 0)
640  break;
641  if (ret > 0) {
642  ret = 0;
643  break;
644  }
645  leaf = path->nodes[0];
646  recow = 1;
647  }
648 
649  btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
650  if (key.objectid > ino ||
651  key.type > BTRFS_EXTENT_DATA_KEY || key.offset >= end)
652  break;
653 
654  fi = btrfs_item_ptr(leaf, path->slots[0],
655  struct btrfs_file_extent_item);
656  extent_type = btrfs_file_extent_type(leaf, fi);
657 
658  if (extent_type == BTRFS_FILE_EXTENT_REG ||
659  extent_type == BTRFS_FILE_EXTENT_PREALLOC) {
660  disk_bytenr = btrfs_file_extent_disk_bytenr(leaf, fi);
661  num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi);
662  extent_offset = btrfs_file_extent_offset(leaf, fi);
663  extent_end = key.offset +
664  btrfs_file_extent_num_bytes(leaf, fi);
665  } else if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
666  extent_end = key.offset +
667  btrfs_file_extent_inline_len(leaf, fi);
668  } else {
669  WARN_ON(1);
670  extent_end = search_start;
671  }
672 
673  if (extent_end <= search_start) {
674  path->slots[0]++;
675  goto next_slot;
676  }
677 
678  found = 1;
679  search_start = max(key.offset, start);
680  if (recow || !modify_tree) {
681  modify_tree = -1;
682  btrfs_release_path(path);
683  continue;
684  }
685 
686  /*
687  * | - range to drop - |
688  * | -------- extent -------- |
689  */
690  if (start > key.offset && end < extent_end) {
691  BUG_ON(del_nr > 0);
692  BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE);
693 
694  memcpy(&new_key, &key, sizeof(new_key));
695  new_key.offset = start;
696  ret = btrfs_duplicate_item(trans, root, path,
697  &new_key);
698  if (ret == -EAGAIN) {
699  btrfs_release_path(path);
700  continue;
701  }
702  if (ret < 0)
703  break;
704 
705  leaf = path->nodes[0];
706  fi = btrfs_item_ptr(leaf, path->slots[0] - 1,
707  struct btrfs_file_extent_item);
708  btrfs_set_file_extent_num_bytes(leaf, fi,
709  start - key.offset);
710 
711  fi = btrfs_item_ptr(leaf, path->slots[0],
712  struct btrfs_file_extent_item);
713 
714  extent_offset += start - key.offset;
715  btrfs_set_file_extent_offset(leaf, fi, extent_offset);
716  btrfs_set_file_extent_num_bytes(leaf, fi,
717  extent_end - start);
719 
720  if (update_refs && disk_bytenr > 0) {
721  ret = btrfs_inc_extent_ref(trans, root,
722  disk_bytenr, num_bytes, 0,
723  root->root_key.objectid,
724  new_key.objectid,
725  start - extent_offset, 0);
726  BUG_ON(ret); /* -ENOMEM */
727  }
728  key.offset = start;
729  }
730  /*
731  * | ---- range to drop ----- |
732  * | -------- extent -------- |
733  */
734  if (start <= key.offset && end < extent_end) {
735  BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE);
736 
737  memcpy(&new_key, &key, sizeof(new_key));
738  new_key.offset = end;
739  btrfs_set_item_key_safe(trans, root, path, &new_key);
740 
741  extent_offset += end - key.offset;
742  btrfs_set_file_extent_offset(leaf, fi, extent_offset);
743  btrfs_set_file_extent_num_bytes(leaf, fi,
744  extent_end - end);
746  if (update_refs && disk_bytenr > 0)
747  inode_sub_bytes(inode, end - key.offset);
748  break;
749  }
750 
751  search_start = extent_end;
752  /*
753  * | ---- range to drop ----- |
754  * | -------- extent -------- |
755  */
756  if (start > key.offset && end >= extent_end) {
757  BUG_ON(del_nr > 0);
758  BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE);
759 
760  btrfs_set_file_extent_num_bytes(leaf, fi,
761  start - key.offset);
763  if (update_refs && disk_bytenr > 0)
764  inode_sub_bytes(inode, extent_end - start);
765  if (end == extent_end)
766  break;
767 
768  path->slots[0]++;
769  goto next_slot;
770  }
771 
772  /*
773  * | ---- range to drop ----- |
774  * | ------ extent ------ |
775  */
776  if (start <= key.offset && end >= extent_end) {
777  if (del_nr == 0) {
778  del_slot = path->slots[0];
779  del_nr = 1;
780  } else {
781  BUG_ON(del_slot + del_nr != path->slots[0]);
782  del_nr++;
783  }
784 
785  if (update_refs &&
786  extent_type == BTRFS_FILE_EXTENT_INLINE) {
787  inode_sub_bytes(inode,
788  extent_end - key.offset);
789  extent_end = ALIGN(extent_end,
790  root->sectorsize);
791  } else if (update_refs && disk_bytenr > 0) {
792  ret = btrfs_free_extent(trans, root,
793  disk_bytenr, num_bytes, 0,
794  root->root_key.objectid,
795  key.objectid, key.offset -
796  extent_offset, 0);
797  BUG_ON(ret); /* -ENOMEM */
798  inode_sub_bytes(inode,
799  extent_end - key.offset);
800  }
801 
802  if (end == extent_end)
803  break;
804 
805  if (path->slots[0] + 1 < btrfs_header_nritems(leaf)) {
806  path->slots[0]++;
807  goto next_slot;
808  }
809 
810  ret = btrfs_del_items(trans, root, path, del_slot,
811  del_nr);
812  if (ret) {
813  btrfs_abort_transaction(trans, root, ret);
814  break;
815  }
816 
817  del_nr = 0;
818  del_slot = 0;
819 
820  btrfs_release_path(path);
821  continue;
822  }
823 
824  BUG_ON(1);
825  }
826 
827  if (!ret && del_nr > 0) {
828  ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
829  if (ret)
830  btrfs_abort_transaction(trans, root, ret);
831  }
832 
833  if (drop_end)
834  *drop_end = found ? min(end, extent_end) : end;
835  btrfs_release_path(path);
836  return ret;
837 }
838 
840  struct btrfs_root *root, struct inode *inode, u64 start,
841  u64 end, int drop_cache)
842 {
843  struct btrfs_path *path;
844  int ret;
845 
846  path = btrfs_alloc_path();
847  if (!path)
848  return -ENOMEM;
849  ret = __btrfs_drop_extents(trans, root, inode, path, start, end, NULL,
850  drop_cache);
851  btrfs_free_path(path);
852  return ret;
853 }
854 
855 static int extent_mergeable(struct extent_buffer *leaf, int slot,
856  u64 objectid, u64 bytenr, u64 orig_offset,
857  u64 *start, u64 *end)
858 {
859  struct btrfs_file_extent_item *fi;
860  struct btrfs_key key;
861  u64 extent_end;
862 
863  if (slot < 0 || slot >= btrfs_header_nritems(leaf))
864  return 0;
865 
866  btrfs_item_key_to_cpu(leaf, &key, slot);
867  if (key.objectid != objectid || key.type != BTRFS_EXTENT_DATA_KEY)
868  return 0;
869 
870  fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
871  if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG ||
872  btrfs_file_extent_disk_bytenr(leaf, fi) != bytenr ||
873  btrfs_file_extent_offset(leaf, fi) != key.offset - orig_offset ||
874  btrfs_file_extent_compression(leaf, fi) ||
875  btrfs_file_extent_encryption(leaf, fi) ||
876  btrfs_file_extent_other_encoding(leaf, fi))
877  return 0;
878 
879  extent_end = key.offset + btrfs_file_extent_num_bytes(leaf, fi);
880  if ((*start && *start != key.offset) || (*end && *end != extent_end))
881  return 0;
882 
883  *start = key.offset;
884  *end = extent_end;
885  return 1;
886 }
887 
888 /*
889  * Mark extent in the range start - end as written.
890  *
891  * This changes extent type from 'pre-allocated' to 'regular'. If only
892  * part of extent is marked as written, the extent will be split into
893  * two or three.
894  */
896  struct inode *inode, u64 start, u64 end)
897 {
898  struct btrfs_root *root = BTRFS_I(inode)->root;
899  struct extent_buffer *leaf;
900  struct btrfs_path *path;
901  struct btrfs_file_extent_item *fi;
902  struct btrfs_key key;
903  struct btrfs_key new_key;
904  u64 bytenr;
905  u64 num_bytes;
906  u64 extent_end;
907  u64 orig_offset;
908  u64 other_start;
909  u64 other_end;
910  u64 split;
911  int del_nr = 0;
912  int del_slot = 0;
913  int recow;
914  int ret;
915  u64 ino = btrfs_ino(inode);
916 
917  path = btrfs_alloc_path();
918  if (!path)
919  return -ENOMEM;
920 again:
921  recow = 0;
922  split = start;
923  key.objectid = ino;
925  key.offset = split;
926 
927  ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
928  if (ret < 0)
929  goto out;
930  if (ret > 0 && path->slots[0] > 0)
931  path->slots[0]--;
932 
933  leaf = path->nodes[0];
934  btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
935  BUG_ON(key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY);
936  fi = btrfs_item_ptr(leaf, path->slots[0],
937  struct btrfs_file_extent_item);
938  BUG_ON(btrfs_file_extent_type(leaf, fi) !=
940  extent_end = key.offset + btrfs_file_extent_num_bytes(leaf, fi);
941  BUG_ON(key.offset > start || extent_end < end);
942 
943  bytenr = btrfs_file_extent_disk_bytenr(leaf, fi);
944  num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi);
945  orig_offset = key.offset - btrfs_file_extent_offset(leaf, fi);
946  memcpy(&new_key, &key, sizeof(new_key));
947 
948  if (start == key.offset && end < extent_end) {
949  other_start = 0;
950  other_end = start;
951  if (extent_mergeable(leaf, path->slots[0] - 1,
952  ino, bytenr, orig_offset,
953  &other_start, &other_end)) {
954  new_key.offset = end;
955  btrfs_set_item_key_safe(trans, root, path, &new_key);
956  fi = btrfs_item_ptr(leaf, path->slots[0],
957  struct btrfs_file_extent_item);
958  btrfs_set_file_extent_generation(leaf, fi,
959  trans->transid);
960  btrfs_set_file_extent_num_bytes(leaf, fi,
961  extent_end - end);
962  btrfs_set_file_extent_offset(leaf, fi,
963  end - orig_offset);
964  fi = btrfs_item_ptr(leaf, path->slots[0] - 1,
965  struct btrfs_file_extent_item);
966  btrfs_set_file_extent_generation(leaf, fi,
967  trans->transid);
968  btrfs_set_file_extent_num_bytes(leaf, fi,
969  end - other_start);
971  goto out;
972  }
973  }
974 
975  if (start > key.offset && end == extent_end) {
976  other_start = end;
977  other_end = 0;
978  if (extent_mergeable(leaf, path->slots[0] + 1,
979  ino, bytenr, orig_offset,
980  &other_start, &other_end)) {
981  fi = btrfs_item_ptr(leaf, path->slots[0],
982  struct btrfs_file_extent_item);
983  btrfs_set_file_extent_num_bytes(leaf, fi,
984  start - key.offset);
985  btrfs_set_file_extent_generation(leaf, fi,
986  trans->transid);
987  path->slots[0]++;
988  new_key.offset = start;
989  btrfs_set_item_key_safe(trans, root, path, &new_key);
990 
991  fi = btrfs_item_ptr(leaf, path->slots[0],
992  struct btrfs_file_extent_item);
993  btrfs_set_file_extent_generation(leaf, fi,
994  trans->transid);
995  btrfs_set_file_extent_num_bytes(leaf, fi,
996  other_end - start);
997  btrfs_set_file_extent_offset(leaf, fi,
998  start - orig_offset);
1000  goto out;
1001  }
1002  }
1003 
1004  while (start > key.offset || end < extent_end) {
1005  if (key.offset == start)
1006  split = end;
1007 
1008  new_key.offset = split;
1009  ret = btrfs_duplicate_item(trans, root, path, &new_key);
1010  if (ret == -EAGAIN) {
1011  btrfs_release_path(path);
1012  goto again;
1013  }
1014  if (ret < 0) {
1015  btrfs_abort_transaction(trans, root, ret);
1016  goto out;
1017  }
1018 
1019  leaf = path->nodes[0];
1020  fi = btrfs_item_ptr(leaf, path->slots[0] - 1,
1021  struct btrfs_file_extent_item);
1022  btrfs_set_file_extent_generation(leaf, fi, trans->transid);
1023  btrfs_set_file_extent_num_bytes(leaf, fi,
1024  split - key.offset);
1025 
1026  fi = btrfs_item_ptr(leaf, path->slots[0],
1027  struct btrfs_file_extent_item);
1028 
1029  btrfs_set_file_extent_generation(leaf, fi, trans->transid);
1030  btrfs_set_file_extent_offset(leaf, fi, split - orig_offset);
1031  btrfs_set_file_extent_num_bytes(leaf, fi,
1032  extent_end - split);
1034 
1035  ret = btrfs_inc_extent_ref(trans, root, bytenr, num_bytes, 0,
1036  root->root_key.objectid,
1037  ino, orig_offset, 0);
1038  BUG_ON(ret); /* -ENOMEM */
1039 
1040  if (split == start) {
1041  key.offset = start;
1042  } else {
1043  BUG_ON(start != key.offset);
1044  path->slots[0]--;
1045  extent_end = end;
1046  }
1047  recow = 1;
1048  }
1049 
1050  other_start = end;
1051  other_end = 0;
1052  if (extent_mergeable(leaf, path->slots[0] + 1,
1053  ino, bytenr, orig_offset,
1054  &other_start, &other_end)) {
1055  if (recow) {
1056  btrfs_release_path(path);
1057  goto again;
1058  }
1059  extent_end = other_end;
1060  del_slot = path->slots[0] + 1;
1061  del_nr++;
1062  ret = btrfs_free_extent(trans, root, bytenr, num_bytes,
1063  0, root->root_key.objectid,
1064  ino, orig_offset, 0);
1065  BUG_ON(ret); /* -ENOMEM */
1066  }
1067  other_start = 0;
1068  other_end = start;
1069  if (extent_mergeable(leaf, path->slots[0] - 1,
1070  ino, bytenr, orig_offset,
1071  &other_start, &other_end)) {
1072  if (recow) {
1073  btrfs_release_path(path);
1074  goto again;
1075  }
1076  key.offset = other_start;
1077  del_slot = path->slots[0];
1078  del_nr++;
1079  ret = btrfs_free_extent(trans, root, bytenr, num_bytes,
1080  0, root->root_key.objectid,
1081  ino, orig_offset, 0);
1082  BUG_ON(ret); /* -ENOMEM */
1083  }
1084  if (del_nr == 0) {
1085  fi = btrfs_item_ptr(leaf, path->slots[0],
1086  struct btrfs_file_extent_item);
1087  btrfs_set_file_extent_type(leaf, fi,
1089  btrfs_set_file_extent_generation(leaf, fi, trans->transid);
1091  } else {
1092  fi = btrfs_item_ptr(leaf, del_slot - 1,
1093  struct btrfs_file_extent_item);
1094  btrfs_set_file_extent_type(leaf, fi,
1096  btrfs_set_file_extent_generation(leaf, fi, trans->transid);
1097  btrfs_set_file_extent_num_bytes(leaf, fi,
1098  extent_end - key.offset);
1100 
1101  ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
1102  if (ret < 0) {
1103  btrfs_abort_transaction(trans, root, ret);
1104  goto out;
1105  }
1106  }
1107 out:
1108  btrfs_free_path(path);
1109  return 0;
1110 }
1111 
1112 /*
1113  * on error we return an unlocked page and the error value
1114  * on success we return a locked page and 0
1115  */
1116 static int prepare_uptodate_page(struct page *page, u64 pos,
1117  bool force_uptodate)
1118 {
1119  int ret = 0;
1120 
1121  if (((pos & (PAGE_CACHE_SIZE - 1)) || force_uptodate) &&
1122  !PageUptodate(page)) {
1123  ret = btrfs_readpage(NULL, page);
1124  if (ret)
1125  return ret;
1126  lock_page(page);
1127  if (!PageUptodate(page)) {
1128  unlock_page(page);
1129  return -EIO;
1130  }
1131  }
1132  return 0;
1133 }
1134 
1135 /*
1136  * this gets pages into the page cache and locks them down, it also properly
1137  * waits for data=ordered extents to finish before allowing the pages to be
1138  * modified.
1139  */
1140 static noinline int prepare_pages(struct btrfs_root *root, struct file *file,
1141  struct page **pages, size_t num_pages,
1142  loff_t pos, unsigned long first_index,
1143  size_t write_bytes, bool force_uptodate)
1144 {
1145  struct extent_state *cached_state = NULL;
1146  int i;
1147  unsigned long index = pos >> PAGE_CACHE_SHIFT;
1148  struct inode *inode = fdentry(file)->d_inode;
1149  gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping);
1150  int err = 0;
1151  int faili = 0;
1152  u64 start_pos;
1153  u64 last_pos;
1154 
1155  start_pos = pos & ~((u64)root->sectorsize - 1);
1156  last_pos = ((u64)index + num_pages) << PAGE_CACHE_SHIFT;
1157 
1158 again:
1159  for (i = 0; i < num_pages; i++) {
1160  pages[i] = find_or_create_page(inode->i_mapping, index + i,
1161  mask | __GFP_WRITE);
1162  if (!pages[i]) {
1163  faili = i - 1;
1164  err = -ENOMEM;
1165  goto fail;
1166  }
1167 
1168  if (i == 0)
1169  err = prepare_uptodate_page(pages[i], pos,
1170  force_uptodate);
1171  if (i == num_pages - 1)
1172  err = prepare_uptodate_page(pages[i],
1173  pos + write_bytes, false);
1174  if (err) {
1175  page_cache_release(pages[i]);
1176  faili = i - 1;
1177  goto fail;
1178  }
1179  wait_on_page_writeback(pages[i]);
1180  }
1181  err = 0;
1182  if (start_pos < inode->i_size) {
1183  struct btrfs_ordered_extent *ordered;
1184  lock_extent_bits(&BTRFS_I(inode)->io_tree,
1185  start_pos, last_pos - 1, 0, &cached_state);
1186  ordered = btrfs_lookup_first_ordered_extent(inode,
1187  last_pos - 1);
1188  if (ordered &&
1189  ordered->file_offset + ordered->len > start_pos &&
1190  ordered->file_offset < last_pos) {
1191  btrfs_put_ordered_extent(ordered);
1192  unlock_extent_cached(&BTRFS_I(inode)->io_tree,
1193  start_pos, last_pos - 1,
1194  &cached_state, GFP_NOFS);
1195  for (i = 0; i < num_pages; i++) {
1196  unlock_page(pages[i]);
1197  page_cache_release(pages[i]);
1198  }
1199  btrfs_wait_ordered_range(inode, start_pos,
1200  last_pos - start_pos);
1201  goto again;
1202  }
1203  if (ordered)
1204  btrfs_put_ordered_extent(ordered);
1205 
1206  clear_extent_bit(&BTRFS_I(inode)->io_tree, start_pos,
1207  last_pos - 1, EXTENT_DIRTY | EXTENT_DELALLOC |
1209  0, 0, &cached_state, GFP_NOFS);
1210  unlock_extent_cached(&BTRFS_I(inode)->io_tree,
1211  start_pos, last_pos - 1, &cached_state,
1212  GFP_NOFS);
1213  }
1214  for (i = 0; i < num_pages; i++) {
1215  if (clear_page_dirty_for_io(pages[i]))
1216  account_page_redirty(pages[i]);
1217  set_page_extent_mapped(pages[i]);
1218  WARN_ON(!PageLocked(pages[i]));
1219  }
1220  return 0;
1221 fail:
1222  while (faili >= 0) {
1223  unlock_page(pages[faili]);
1224  page_cache_release(pages[faili]);
1225  faili--;
1226  }
1227  return err;
1228 
1229 }
1230 
1231 static noinline ssize_t __btrfs_buffered_write(struct file *file,
1232  struct iov_iter *i,
1233  loff_t pos)
1234 {
1235  struct inode *inode = fdentry(file)->d_inode;
1236  struct btrfs_root *root = BTRFS_I(inode)->root;
1237  struct page **pages = NULL;
1238  unsigned long first_index;
1239  size_t num_written = 0;
1240  int nrptrs;
1241  int ret = 0;
1242  bool force_page_uptodate = false;
1243 
1244  nrptrs = min((iov_iter_count(i) + PAGE_CACHE_SIZE - 1) /
1246  (sizeof(struct page *)));
1247  nrptrs = min(nrptrs, current->nr_dirtied_pause - current->nr_dirtied);
1248  nrptrs = max(nrptrs, 8);
1249  pages = kmalloc(nrptrs * sizeof(struct page *), GFP_KERNEL);
1250  if (!pages)
1251  return -ENOMEM;
1252 
1253  first_index = pos >> PAGE_CACHE_SHIFT;
1254 
1255  while (iov_iter_count(i) > 0) {
1256  size_t offset = pos & (PAGE_CACHE_SIZE - 1);
1257  size_t write_bytes = min(iov_iter_count(i),
1258  nrptrs * (size_t)PAGE_CACHE_SIZE -
1259  offset);
1260  size_t num_pages = (write_bytes + offset +
1261  PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
1262  size_t dirty_pages;
1263  size_t copied;
1264 
1265  WARN_ON(num_pages > nrptrs);
1266 
1267  /*
1268  * Fault pages before locking them in prepare_pages
1269  * to avoid recursive lock
1270  */
1271  if (unlikely(iov_iter_fault_in_readable(i, write_bytes))) {
1272  ret = -EFAULT;
1273  break;
1274  }
1275 
1276  ret = btrfs_delalloc_reserve_space(inode,
1277  num_pages << PAGE_CACHE_SHIFT);
1278  if (ret)
1279  break;
1280 
1281  /*
1282  * This is going to setup the pages array with the number of
1283  * pages we want, so we don't really need to worry about the
1284  * contents of pages from loop to loop
1285  */
1286  ret = prepare_pages(root, file, pages, num_pages,
1287  pos, first_index, write_bytes,
1288  force_page_uptodate);
1289  if (ret) {
1291  num_pages << PAGE_CACHE_SHIFT);
1292  break;
1293  }
1294 
1295  copied = btrfs_copy_from_user(pos, num_pages,
1296  write_bytes, pages, i);
1297 
1298  /*
1299  * if we have trouble faulting in the pages, fall
1300  * back to one page at a time
1301  */
1302  if (copied < write_bytes)
1303  nrptrs = 1;
1304 
1305  if (copied == 0) {
1306  force_page_uptodate = true;
1307  dirty_pages = 0;
1308  } else {
1309  force_page_uptodate = false;
1310  dirty_pages = (copied + offset +
1311  PAGE_CACHE_SIZE - 1) >>
1312  PAGE_CACHE_SHIFT;
1313  }
1314 
1315  /*
1316  * If we had a short copy we need to release the excess delaloc
1317  * bytes we reserved. We need to increment outstanding_extents
1318  * because btrfs_delalloc_release_space will decrement it, but
1319  * we still have an outstanding extent for the chunk we actually
1320  * managed to copy.
1321  */
1322  if (num_pages > dirty_pages) {
1323  if (copied > 0) {
1324  spin_lock(&BTRFS_I(inode)->lock);
1325  BTRFS_I(inode)->outstanding_extents++;
1326  spin_unlock(&BTRFS_I(inode)->lock);
1327  }
1329  (num_pages - dirty_pages) <<
1330  PAGE_CACHE_SHIFT);
1331  }
1332 
1333  if (copied > 0) {
1334  ret = btrfs_dirty_pages(root, inode, pages,
1335  dirty_pages, pos, copied,
1336  NULL);
1337  if (ret) {
1339  dirty_pages << PAGE_CACHE_SHIFT);
1340  btrfs_drop_pages(pages, num_pages);
1341  break;
1342  }
1343  }
1344 
1345  btrfs_drop_pages(pages, num_pages);
1346 
1347  cond_resched();
1348 
1350  dirty_pages);
1351  if (dirty_pages < (root->leafsize >> PAGE_CACHE_SHIFT) + 1)
1352  btrfs_btree_balance_dirty(root, 1);
1353 
1354  pos += copied;
1355  num_written += copied;
1356  }
1357 
1358  kfree(pages);
1359 
1360  return num_written ? num_written : ret;
1361 }
1362 
1363 static ssize_t __btrfs_direct_write(struct kiocb *iocb,
1364  const struct iovec *iov,
1365  unsigned long nr_segs, loff_t pos,
1366  loff_t *ppos, size_t count, size_t ocount)
1367 {
1368  struct file *file = iocb->ki_filp;
1369  struct iov_iter i;
1370  ssize_t written;
1371  ssize_t written_buffered;
1372  loff_t endbyte;
1373  int err;
1374 
1375  written = generic_file_direct_write(iocb, iov, &nr_segs, pos, ppos,
1376  count, ocount);
1377 
1378  if (written < 0 || written == count)
1379  return written;
1380 
1381  pos += written;
1382  count -= written;
1383  iov_iter_init(&i, iov, nr_segs, count, written);
1384  written_buffered = __btrfs_buffered_write(file, &i, pos);
1385  if (written_buffered < 0) {
1386  err = written_buffered;
1387  goto out;
1388  }
1389  endbyte = pos + written_buffered - 1;
1390  err = filemap_write_and_wait_range(file->f_mapping, pos, endbyte);
1391  if (err)
1392  goto out;
1393  written += written_buffered;
1394  *ppos = pos + written_buffered;
1395  invalidate_mapping_pages(file->f_mapping, pos >> PAGE_CACHE_SHIFT,
1396  endbyte >> PAGE_CACHE_SHIFT);
1397 out:
1398  return written ? written : err;
1399 }
1400 
1401 static ssize_t btrfs_file_aio_write(struct kiocb *iocb,
1402  const struct iovec *iov,
1403  unsigned long nr_segs, loff_t pos)
1404 {
1405  struct file *file = iocb->ki_filp;
1406  struct inode *inode = fdentry(file)->d_inode;
1407  struct btrfs_root *root = BTRFS_I(inode)->root;
1408  loff_t *ppos = &iocb->ki_pos;
1409  u64 start_pos;
1410  ssize_t num_written = 0;
1411  ssize_t err = 0;
1412  size_t count, ocount;
1413 
1414  sb_start_write(inode->i_sb);
1415 
1416  mutex_lock(&inode->i_mutex);
1417 
1418  err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ);
1419  if (err) {
1420  mutex_unlock(&inode->i_mutex);
1421  goto out;
1422  }
1423  count = ocount;
1424 
1425  current->backing_dev_info = inode->i_mapping->backing_dev_info;
1426  err = generic_write_checks(file, &pos, &count, S_ISBLK(inode->i_mode));
1427  if (err) {
1428  mutex_unlock(&inode->i_mutex);
1429  goto out;
1430  }
1431 
1432  if (count == 0) {
1433  mutex_unlock(&inode->i_mutex);
1434  goto out;
1435  }
1436 
1437  err = file_remove_suid(file);
1438  if (err) {
1439  mutex_unlock(&inode->i_mutex);
1440  goto out;
1441  }
1442 
1443  /*
1444  * If BTRFS flips readonly due to some impossible error
1445  * (fs_info->fs_state now has BTRFS_SUPER_FLAG_ERROR),
1446  * although we have opened a file as writable, we have
1447  * to stop this write operation to ensure FS consistency.
1448  */
1449  if (root->fs_info->fs_state & BTRFS_SUPER_FLAG_ERROR) {
1450  mutex_unlock(&inode->i_mutex);
1451  err = -EROFS;
1452  goto out;
1453  }
1454 
1455  err = file_update_time(file);
1456  if (err) {
1457  mutex_unlock(&inode->i_mutex);
1458  goto out;
1459  }
1460 
1461  start_pos = round_down(pos, root->sectorsize);
1462  if (start_pos > i_size_read(inode)) {
1463  err = btrfs_cont_expand(inode, i_size_read(inode), start_pos);
1464  if (err) {
1465  mutex_unlock(&inode->i_mutex);
1466  goto out;
1467  }
1468  }
1469 
1470  if (unlikely(file->f_flags & O_DIRECT)) {
1471  num_written = __btrfs_direct_write(iocb, iov, nr_segs,
1472  pos, ppos, count, ocount);
1473  } else {
1474  struct iov_iter i;
1475 
1476  iov_iter_init(&i, iov, nr_segs, count, num_written);
1477 
1478  num_written = __btrfs_buffered_write(file, &i, pos);
1479  if (num_written > 0)
1480  *ppos = pos + num_written;
1481  }
1482 
1483  mutex_unlock(&inode->i_mutex);
1484 
1485  /*
1486  * we want to make sure fsync finds this change
1487  * but we haven't joined a transaction running right now.
1488  *
1489  * Later on, someone is sure to update the inode and get the
1490  * real transid recorded.
1491  *
1492  * We set last_trans now to the fs_info generation + 1,
1493  * this will either be one more than the running transaction
1494  * or the generation used for the next transaction if there isn't
1495  * one running right now.
1496  */
1497  BTRFS_I(inode)->last_trans = root->fs_info->generation + 1;
1498  if (num_written > 0 || num_written == -EIOCBQUEUED) {
1499  err = generic_write_sync(file, pos, num_written);
1500  if (err < 0 && num_written > 0)
1501  num_written = err;
1502  }
1503 out:
1504  sb_end_write(inode->i_sb);
1505  current->backing_dev_info = NULL;
1506  return num_written ? num_written : err;
1507 }
1508 
1509 int btrfs_release_file(struct inode *inode, struct file *filp)
1510 {
1511  /*
1512  * ordered_data_close is set by settattr when we are about to truncate
1513  * a file from a non-zero size to a zero size. This tries to
1514  * flush down new bytes that may have been written if the
1515  * application were using truncate to replace a file in place.
1516  */
1518  &BTRFS_I(inode)->runtime_flags)) {
1519  btrfs_add_ordered_operation(NULL, BTRFS_I(inode)->root, inode);
1521  filemap_flush(inode->i_mapping);
1522  }
1523  if (filp->private_data)
1524  btrfs_ioctl_trans_end(filp);
1525  return 0;
1526 }
1527 
1528 /*
1529  * fsync call for both files and directories. This logs the inode into
1530  * the tree log instead of forcing full commits whenever possible.
1531  *
1532  * It needs to call filemap_fdatawait so that all ordered extent updates are
1533  * in the metadata btree are up to date for copying to the log.
1534  *
1535  * It drops the inode mutex before doing the tree log commit. This is an
1536  * important optimization for directories because holding the mutex prevents
1537  * new operations on the dir while we write to disk.
1538  */
1539 int btrfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
1540 {
1541  struct dentry *dentry = file->f_path.dentry;
1542  struct inode *inode = dentry->d_inode;
1543  struct btrfs_root *root = BTRFS_I(inode)->root;
1544  int ret = 0;
1545  struct btrfs_trans_handle *trans;
1546 
1547  trace_btrfs_sync_file(file, datasync);
1548 
1549  /*
1550  * We write the dirty pages in the range and wait until they complete
1551  * out of the ->i_mutex. If so, we can flush the dirty pages by
1552  * multi-task, and make the performance up.
1553  */
1554  ret = filemap_write_and_wait_range(inode->i_mapping, start, end);
1555  if (ret)
1556  return ret;
1557 
1558  mutex_lock(&inode->i_mutex);
1559 
1560  /*
1561  * We flush the dirty pages again to avoid some dirty pages in the
1562  * range being left.
1563  */
1564  atomic_inc(&root->log_batch);
1565  btrfs_wait_ordered_range(inode, start, end);
1566  atomic_inc(&root->log_batch);
1567 
1568  /*
1569  * check the transaction that last modified this inode
1570  * and see if its already been committed
1571  */
1572  if (!BTRFS_I(inode)->last_trans) {
1573  mutex_unlock(&inode->i_mutex);
1574  goto out;
1575  }
1576 
1577  /*
1578  * if the last transaction that changed this file was before
1579  * the current transaction, we can bail out now without any
1580  * syncing
1581  */
1582  smp_mb();
1583  if (btrfs_inode_in_log(inode, root->fs_info->generation) ||
1584  BTRFS_I(inode)->last_trans <=
1585  root->fs_info->last_trans_committed) {
1586  BTRFS_I(inode)->last_trans = 0;
1587 
1588  /*
1589  * We'v had everything committed since the last time we were
1590  * modified so clear this flag in case it was set for whatever
1591  * reason, it's no longer relevant.
1592  */
1594  &BTRFS_I(inode)->runtime_flags);
1595  mutex_unlock(&inode->i_mutex);
1596  goto out;
1597  }
1598 
1599  /*
1600  * ok we haven't committed the transaction yet, lets do a commit
1601  */
1602  if (file->private_data)
1603  btrfs_ioctl_trans_end(file);
1604 
1605  trans = btrfs_start_transaction(root, 0);
1606  if (IS_ERR(trans)) {
1607  ret = PTR_ERR(trans);
1608  mutex_unlock(&inode->i_mutex);
1609  goto out;
1610  }
1611 
1612  ret = btrfs_log_dentry_safe(trans, root, dentry);
1613  if (ret < 0) {
1614  mutex_unlock(&inode->i_mutex);
1615  goto out;
1616  }
1617 
1618  /* we've logged all the items and now have a consistent
1619  * version of the file in the log. It is possible that
1620  * someone will come in and modify the file, but that's
1621  * fine because the log is consistent on disk, and we
1622  * have references to all of the file's extents
1623  *
1624  * It is possible that someone will come in and log the
1625  * file again, but that will end up using the synchronization
1626  * inside btrfs_sync_log to keep things safe.
1627  */
1628  mutex_unlock(&inode->i_mutex);
1629 
1630  if (ret != BTRFS_NO_LOG_SYNC) {
1631  if (ret > 0) {
1632  ret = btrfs_commit_transaction(trans, root);
1633  } else {
1634  ret = btrfs_sync_log(trans, root);
1635  if (ret == 0)
1636  ret = btrfs_end_transaction(trans, root);
1637  else
1638  ret = btrfs_commit_transaction(trans, root);
1639  }
1640  } else {
1641  ret = btrfs_end_transaction(trans, root);
1642  }
1643 out:
1644  return ret > 0 ? -EIO : ret;
1645 }
1646 
1647 static const struct vm_operations_struct btrfs_file_vm_ops = {
1648  .fault = filemap_fault,
1649  .page_mkwrite = btrfs_page_mkwrite,
1650  .remap_pages = generic_file_remap_pages,
1651 };
1652 
1653 static int btrfs_file_mmap(struct file *filp, struct vm_area_struct *vma)
1654 {
1655  struct address_space *mapping = filp->f_mapping;
1656 
1657  if (!mapping->a_ops->readpage)
1658  return -ENOEXEC;
1659 
1660  file_accessed(filp);
1661  vma->vm_ops = &btrfs_file_vm_ops;
1662 
1663  return 0;
1664 }
1665 
1666 static int hole_mergeable(struct inode *inode, struct extent_buffer *leaf,
1667  int slot, u64 start, u64 end)
1668 {
1669  struct btrfs_file_extent_item *fi;
1670  struct btrfs_key key;
1671 
1672  if (slot < 0 || slot >= btrfs_header_nritems(leaf))
1673  return 0;
1674 
1675  btrfs_item_key_to_cpu(leaf, &key, slot);
1676  if (key.objectid != btrfs_ino(inode) ||
1677  key.type != BTRFS_EXTENT_DATA_KEY)
1678  return 0;
1679 
1680  fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
1681 
1682  if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_REG)
1683  return 0;
1684 
1685  if (btrfs_file_extent_disk_bytenr(leaf, fi))
1686  return 0;
1687 
1688  if (key.offset == end)
1689  return 1;
1690  if (key.offset + btrfs_file_extent_num_bytes(leaf, fi) == start)
1691  return 1;
1692  return 0;
1693 }
1694 
1695 static int fill_holes(struct btrfs_trans_handle *trans, struct inode *inode,
1696  struct btrfs_path *path, u64 offset, u64 end)
1697 {
1698  struct btrfs_root *root = BTRFS_I(inode)->root;
1699  struct extent_buffer *leaf;
1700  struct btrfs_file_extent_item *fi;
1701  struct extent_map *hole_em;
1702  struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree;
1703  struct btrfs_key key;
1704  int ret;
1705 
1706  key.objectid = btrfs_ino(inode);
1707  key.type = BTRFS_EXTENT_DATA_KEY;
1708  key.offset = offset;
1709 
1710 
1711  ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
1712  if (ret < 0)
1713  return ret;
1714  BUG_ON(!ret);
1715 
1716  leaf = path->nodes[0];
1717  if (hole_mergeable(inode, leaf, path->slots[0]-1, offset, end)) {
1718  u64 num_bytes;
1719 
1720  path->slots[0]--;
1721  fi = btrfs_item_ptr(leaf, path->slots[0],
1722  struct btrfs_file_extent_item);
1723  num_bytes = btrfs_file_extent_num_bytes(leaf, fi) +
1724  end - offset;
1725  btrfs_set_file_extent_num_bytes(leaf, fi, num_bytes);
1726  btrfs_set_file_extent_ram_bytes(leaf, fi, num_bytes);
1727  btrfs_set_file_extent_offset(leaf, fi, 0);
1729  goto out;
1730  }
1731 
1732  if (hole_mergeable(inode, leaf, path->slots[0]+1, offset, end)) {
1733  u64 num_bytes;
1734 
1735  path->slots[0]++;
1736  key.offset = offset;
1737  btrfs_set_item_key_safe(trans, root, path, &key);
1738  fi = btrfs_item_ptr(leaf, path->slots[0],
1739  struct btrfs_file_extent_item);
1740  num_bytes = btrfs_file_extent_num_bytes(leaf, fi) + end -
1741  offset;
1742  btrfs_set_file_extent_num_bytes(leaf, fi, num_bytes);
1743  btrfs_set_file_extent_ram_bytes(leaf, fi, num_bytes);
1744  btrfs_set_file_extent_offset(leaf, fi, 0);
1746  goto out;
1747  }
1748  btrfs_release_path(path);
1749 
1750  ret = btrfs_insert_file_extent(trans, root, btrfs_ino(inode), offset,
1751  0, 0, end - offset, 0, end - offset,
1752  0, 0, 0);
1753  if (ret)
1754  return ret;
1755 
1756 out:
1757  btrfs_release_path(path);
1758 
1759  hole_em = alloc_extent_map();
1760  if (!hole_em) {
1761  btrfs_drop_extent_cache(inode, offset, end - 1, 0);
1763  &BTRFS_I(inode)->runtime_flags);
1764  } else {
1765  hole_em->start = offset;
1766  hole_em->len = end - offset;
1767  hole_em->orig_start = offset;
1768 
1769  hole_em->block_start = EXTENT_MAP_HOLE;
1770  hole_em->block_len = 0;
1771  hole_em->bdev = root->fs_info->fs_devices->latest_bdev;
1773  hole_em->generation = trans->transid;
1774 
1775  do {
1776  btrfs_drop_extent_cache(inode, offset, end - 1, 0);
1777  write_lock(&em_tree->lock);
1778  ret = add_extent_mapping(em_tree, hole_em);
1779  if (!ret)
1780  list_move(&hole_em->list,
1781  &em_tree->modified_extents);
1782  write_unlock(&em_tree->lock);
1783  } while (ret == -EEXIST);
1784  free_extent_map(hole_em);
1785  if (ret)
1787  &BTRFS_I(inode)->runtime_flags);
1788  }
1789 
1790  return 0;
1791 }
1792 
1793 static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len)
1794 {
1795  struct btrfs_root *root = BTRFS_I(inode)->root;
1796  struct extent_state *cached_state = NULL;
1797  struct btrfs_path *path;
1798  struct btrfs_block_rsv *rsv;
1799  struct btrfs_trans_handle *trans;
1800  u64 mask = BTRFS_I(inode)->root->sectorsize - 1;
1801  u64 lockstart = (offset + mask) & ~mask;
1802  u64 lockend = ((offset + len) & ~mask) - 1;
1803  u64 cur_offset = lockstart;
1804  u64 min_size = btrfs_calc_trunc_metadata_size(root, 1);
1805  u64 drop_end;
1806  unsigned long nr;
1807  int ret = 0;
1808  int err = 0;
1809  bool same_page = (offset >> PAGE_CACHE_SHIFT) ==
1810  ((offset + len) >> PAGE_CACHE_SHIFT);
1811 
1812  btrfs_wait_ordered_range(inode, offset, len);
1813 
1814  mutex_lock(&inode->i_mutex);
1815  if (offset >= inode->i_size) {
1816  mutex_unlock(&inode->i_mutex);
1817  return 0;
1818  }
1819 
1820  /*
1821  * Only do this if we are in the same page and we aren't doing the
1822  * entire page.
1823  */
1824  if (same_page && len < PAGE_CACHE_SIZE) {
1825  ret = btrfs_truncate_page(inode, offset, len, 0);
1826  mutex_unlock(&inode->i_mutex);
1827  return ret;
1828  }
1829 
1830  /* zero back part of the first page */
1831  ret = btrfs_truncate_page(inode, offset, 0, 0);
1832  if (ret) {
1833  mutex_unlock(&inode->i_mutex);
1834  return ret;
1835  }
1836 
1837  /* zero the front end of the last page */
1838  ret = btrfs_truncate_page(inode, offset + len, 0, 1);
1839  if (ret) {
1840  mutex_unlock(&inode->i_mutex);
1841  return ret;
1842  }
1843 
1844  if (lockend < lockstart) {
1845  mutex_unlock(&inode->i_mutex);
1846  return 0;
1847  }
1848 
1849  while (1) {
1850  struct btrfs_ordered_extent *ordered;
1851 
1852  truncate_pagecache_range(inode, lockstart, lockend);
1853 
1854  lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend,
1855  0, &cached_state);
1856  ordered = btrfs_lookup_first_ordered_extent(inode, lockend);
1857 
1858  /*
1859  * We need to make sure we have no ordered extents in this range
1860  * and nobody raced in and read a page in this range, if we did
1861  * we need to try again.
1862  */
1863  if ((!ordered ||
1864  (ordered->file_offset + ordered->len < lockstart ||
1865  ordered->file_offset > lockend)) &&
1866  !test_range_bit(&BTRFS_I(inode)->io_tree, lockstart,
1867  lockend, EXTENT_UPTODATE, 0,
1868  cached_state)) {
1869  if (ordered)
1870  btrfs_put_ordered_extent(ordered);
1871  break;
1872  }
1873  if (ordered)
1874  btrfs_put_ordered_extent(ordered);
1875  unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart,
1876  lockend, &cached_state, GFP_NOFS);
1877  btrfs_wait_ordered_range(inode, lockstart,
1878  lockend - lockstart + 1);
1879  }
1880 
1881  path = btrfs_alloc_path();
1882  if (!path) {
1883  ret = -ENOMEM;
1884  goto out;
1885  }
1886 
1888  if (!rsv) {
1889  ret = -ENOMEM;
1890  goto out_free;
1891  }
1892  rsv->size = btrfs_calc_trunc_metadata_size(root, 1);
1893  rsv->failfast = 1;
1894 
1895  /*
1896  * 1 - update the inode
1897  * 1 - removing the extents in the range
1898  * 1 - adding the hole extent
1899  */
1900  trans = btrfs_start_transaction(root, 3);
1901  if (IS_ERR(trans)) {
1902  err = PTR_ERR(trans);
1903  goto out_free;
1904  }
1905 
1906  ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv, rsv,
1907  min_size);
1908  BUG_ON(ret);
1909  trans->block_rsv = rsv;
1910 
1911  while (cur_offset < lockend) {
1912  ret = __btrfs_drop_extents(trans, root, inode, path,
1913  cur_offset, lockend + 1,
1914  &drop_end, 1);
1915  if (ret != -ENOSPC)
1916  break;
1917 
1918  trans->block_rsv = &root->fs_info->trans_block_rsv;
1919 
1920  ret = fill_holes(trans, inode, path, cur_offset, drop_end);
1921  if (ret) {
1922  err = ret;
1923  break;
1924  }
1925 
1926  cur_offset = drop_end;
1927 
1928  ret = btrfs_update_inode(trans, root, inode);
1929  if (ret) {
1930  err = ret;
1931  break;
1932  }
1933 
1934  nr = trans->blocks_used;
1935  btrfs_end_transaction(trans, root);
1936  btrfs_btree_balance_dirty(root, nr);
1937 
1938  trans = btrfs_start_transaction(root, 3);
1939  if (IS_ERR(trans)) {
1940  ret = PTR_ERR(trans);
1941  trans = NULL;
1942  break;
1943  }
1944 
1945  ret = btrfs_block_rsv_migrate(&root->fs_info->trans_block_rsv,
1946  rsv, min_size);
1947  BUG_ON(ret); /* shouldn't happen */
1948  trans->block_rsv = rsv;
1949  }
1950 
1951  if (ret) {
1952  err = ret;
1953  goto out_trans;
1954  }
1955 
1956  trans->block_rsv = &root->fs_info->trans_block_rsv;
1957  ret = fill_holes(trans, inode, path, cur_offset, drop_end);
1958  if (ret) {
1959  err = ret;
1960  goto out_trans;
1961  }
1962 
1963 out_trans:
1964  if (!trans)
1965  goto out_free;
1966 
1967  trans->block_rsv = &root->fs_info->trans_block_rsv;
1968  ret = btrfs_update_inode(trans, root, inode);
1969  nr = trans->blocks_used;
1970  btrfs_end_transaction(trans, root);
1971  btrfs_btree_balance_dirty(root, nr);
1972 out_free:
1973  btrfs_free_path(path);
1974  btrfs_free_block_rsv(root, rsv);
1975 out:
1976  unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend,
1977  &cached_state, GFP_NOFS);
1978  mutex_unlock(&inode->i_mutex);
1979  if (ret && !err)
1980  err = ret;
1981  return err;
1982 }
1983 
1984 static long btrfs_fallocate(struct file *file, int mode,
1985  loff_t offset, loff_t len)
1986 {
1987  struct inode *inode = file->f_path.dentry->d_inode;
1988  struct extent_state *cached_state = NULL;
1989  u64 cur_offset;
1990  u64 last_byte;
1991  u64 alloc_start;
1992  u64 alloc_end;
1993  u64 alloc_hint = 0;
1994  u64 locked_end;
1995  u64 mask = BTRFS_I(inode)->root->sectorsize - 1;
1996  struct extent_map *em;
1997  int ret;
1998 
1999  alloc_start = offset & ~mask;
2000  alloc_end = (offset + len + mask) & ~mask;
2001 
2002  /* Make sure we aren't being give some crap mode */
2003  if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
2004  return -EOPNOTSUPP;
2005 
2006  if (mode & FALLOC_FL_PUNCH_HOLE)
2007  return btrfs_punch_hole(inode, offset, len);
2008 
2009  /*
2010  * Make sure we have enough space before we do the
2011  * allocation.
2012  */
2013  ret = btrfs_check_data_free_space(inode, alloc_end - alloc_start + 1);
2014  if (ret)
2015  return ret;
2016 
2017  /*
2018  * wait for ordered IO before we have any locks. We'll loop again
2019  * below with the locks held.
2020  */
2021  btrfs_wait_ordered_range(inode, alloc_start, alloc_end - alloc_start);
2022 
2023  mutex_lock(&inode->i_mutex);
2024  ret = inode_newsize_ok(inode, alloc_end);
2025  if (ret)
2026  goto out;
2027 
2028  if (alloc_start > inode->i_size) {
2029  ret = btrfs_cont_expand(inode, i_size_read(inode),
2030  alloc_start);
2031  if (ret)
2032  goto out;
2033  }
2034 
2035  locked_end = alloc_end - 1;
2036  while (1) {
2037  struct btrfs_ordered_extent *ordered;
2038 
2039  /* the extent lock is ordered inside the running
2040  * transaction
2041  */
2042  lock_extent_bits(&BTRFS_I(inode)->io_tree, alloc_start,
2043  locked_end, 0, &cached_state);
2044  ordered = btrfs_lookup_first_ordered_extent(inode,
2045  alloc_end - 1);
2046  if (ordered &&
2047  ordered->file_offset + ordered->len > alloc_start &&
2048  ordered->file_offset < alloc_end) {
2049  btrfs_put_ordered_extent(ordered);
2050  unlock_extent_cached(&BTRFS_I(inode)->io_tree,
2051  alloc_start, locked_end,
2052  &cached_state, GFP_NOFS);
2053  /*
2054  * we can't wait on the range with the transaction
2055  * running or with the extent lock held
2056  */
2057  btrfs_wait_ordered_range(inode, alloc_start,
2058  alloc_end - alloc_start);
2059  } else {
2060  if (ordered)
2061  btrfs_put_ordered_extent(ordered);
2062  break;
2063  }
2064  }
2065 
2066  cur_offset = alloc_start;
2067  while (1) {
2068  u64 actual_end;
2069 
2070  em = btrfs_get_extent(inode, NULL, 0, cur_offset,
2071  alloc_end - cur_offset, 0);
2072  if (IS_ERR_OR_NULL(em)) {
2073  if (!em)
2074  ret = -ENOMEM;
2075  else
2076  ret = PTR_ERR(em);
2077  break;
2078  }
2079  last_byte = min(extent_map_end(em), alloc_end);
2080  actual_end = min_t(u64, extent_map_end(em), offset + len);
2081  last_byte = (last_byte + mask) & ~mask;
2082 
2083  if (em->block_start == EXTENT_MAP_HOLE ||
2084  (cur_offset >= inode->i_size &&
2085  !test_bit(EXTENT_FLAG_PREALLOC, &em->flags))) {
2086  ret = btrfs_prealloc_file_range(inode, mode, cur_offset,
2087  last_byte - cur_offset,
2088  1 << inode->i_blkbits,
2089  offset + len,
2090  &alloc_hint);
2091 
2092  if (ret < 0) {
2093  free_extent_map(em);
2094  break;
2095  }
2096  } else if (actual_end > inode->i_size &&
2097  !(mode & FALLOC_FL_KEEP_SIZE)) {
2098  /*
2099  * We didn't need to allocate any more space, but we
2100  * still extended the size of the file so we need to
2101  * update i_size.
2102  */
2103  inode->i_ctime = CURRENT_TIME;
2104  i_size_write(inode, actual_end);
2105  btrfs_ordered_update_i_size(inode, actual_end, NULL);
2106  }
2107  free_extent_map(em);
2108 
2109  cur_offset = last_byte;
2110  if (cur_offset >= alloc_end) {
2111  ret = 0;
2112  break;
2113  }
2114  }
2115  unlock_extent_cached(&BTRFS_I(inode)->io_tree, alloc_start, locked_end,
2116  &cached_state, GFP_NOFS);
2117 out:
2118  mutex_unlock(&inode->i_mutex);
2119  /* Let go of our reservation. */
2120  btrfs_free_reserved_data_space(inode, alloc_end - alloc_start + 1);
2121  return ret;
2122 }
2123 
2124 static int find_desired_extent(struct inode *inode, loff_t *offset, int origin)
2125 {
2126  struct btrfs_root *root = BTRFS_I(inode)->root;
2127  struct extent_map *em;
2128  struct extent_state *cached_state = NULL;
2129  u64 lockstart = *offset;
2130  u64 lockend = i_size_read(inode);
2131  u64 start = *offset;
2132  u64 orig_start = *offset;
2133  u64 len = i_size_read(inode);
2134  u64 last_end = 0;
2135  int ret = 0;
2136 
2137  lockend = max_t(u64, root->sectorsize, lockend);
2138  if (lockend <= lockstart)
2139  lockend = lockstart + root->sectorsize;
2140 
2141  len = lockend - lockstart + 1;
2142 
2143  len = max_t(u64, len, root->sectorsize);
2144  if (inode->i_size == 0)
2145  return -ENXIO;
2146 
2147  lock_extent_bits(&BTRFS_I(inode)->io_tree, lockstart, lockend, 0,
2148  &cached_state);
2149 
2150  /*
2151  * Delalloc is such a pain. If we have a hole and we have pending
2152  * delalloc for a portion of the hole we will get back a hole that
2153  * exists for the entire range since it hasn't been actually written
2154  * yet. So to take care of this case we need to look for an extent just
2155  * before the position we want in case there is outstanding delalloc
2156  * going on here.
2157  */
2158  if (origin == SEEK_HOLE && start != 0) {
2159  if (start <= root->sectorsize)
2160  em = btrfs_get_extent_fiemap(inode, NULL, 0, 0,
2161  root->sectorsize, 0);
2162  else
2163  em = btrfs_get_extent_fiemap(inode, NULL, 0,
2164  start - root->sectorsize,
2165  root->sectorsize, 0);
2166  if (IS_ERR(em)) {
2167  ret = PTR_ERR(em);
2168  goto out;
2169  }
2170  last_end = em->start + em->len;
2171  if (em->block_start == EXTENT_MAP_DELALLOC)
2172  last_end = min_t(u64, last_end, inode->i_size);
2173  free_extent_map(em);
2174  }
2175 
2176  while (1) {
2177  em = btrfs_get_extent_fiemap(inode, NULL, 0, start, len, 0);
2178  if (IS_ERR(em)) {
2179  ret = PTR_ERR(em);
2180  break;
2181  }
2182 
2183  if (em->block_start == EXTENT_MAP_HOLE) {
2184  if (test_bit(EXTENT_FLAG_VACANCY, &em->flags)) {
2185  if (last_end <= orig_start) {
2186  free_extent_map(em);
2187  ret = -ENXIO;
2188  break;
2189  }
2190  }
2191 
2192  if (origin == SEEK_HOLE) {
2193  *offset = start;
2194  free_extent_map(em);
2195  break;
2196  }
2197  } else {
2198  if (origin == SEEK_DATA) {
2199  if (em->block_start == EXTENT_MAP_DELALLOC) {
2200  if (start >= inode->i_size) {
2201  free_extent_map(em);
2202  ret = -ENXIO;
2203  break;
2204  }
2205  }
2206 
2207  *offset = start;
2208  free_extent_map(em);
2209  break;
2210  }
2211  }
2212 
2213  start = em->start + em->len;
2214  last_end = em->start + em->len;
2215 
2216  if (em->block_start == EXTENT_MAP_DELALLOC)
2217  last_end = min_t(u64, last_end, inode->i_size);
2218 
2219  if (test_bit(EXTENT_FLAG_VACANCY, &em->flags)) {
2220  free_extent_map(em);
2221  ret = -ENXIO;
2222  break;
2223  }
2224  free_extent_map(em);
2225  cond_resched();
2226  }
2227  if (!ret)
2228  *offset = min(*offset, inode->i_size);
2229 out:
2230  unlock_extent_cached(&BTRFS_I(inode)->io_tree, lockstart, lockend,
2231  &cached_state, GFP_NOFS);
2232  return ret;
2233 }
2234 
2235 static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin)
2236 {
2237  struct inode *inode = file->f_mapping->host;
2238  int ret;
2239 
2240  mutex_lock(&inode->i_mutex);
2241  switch (origin) {
2242  case SEEK_END:
2243  case SEEK_CUR:
2244  offset = generic_file_llseek(file, offset, origin);
2245  goto out;
2246  case SEEK_DATA:
2247  case SEEK_HOLE:
2248  if (offset >= i_size_read(inode)) {
2249  mutex_unlock(&inode->i_mutex);
2250  return -ENXIO;
2251  }
2252 
2253  ret = find_desired_extent(inode, &offset, origin);
2254  if (ret) {
2255  mutex_unlock(&inode->i_mutex);
2256  return ret;
2257  }
2258  }
2259 
2260  if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) {
2261  offset = -EINVAL;
2262  goto out;
2263  }
2264  if (offset > inode->i_sb->s_maxbytes) {
2265  offset = -EINVAL;
2266  goto out;
2267  }
2268 
2269  /* Special lock needed here? */
2270  if (offset != file->f_pos) {
2271  file->f_pos = offset;
2272  file->f_version = 0;
2273  }
2274 out:
2275  mutex_unlock(&inode->i_mutex);
2276  return offset;
2277 }
2278 
2280  .llseek = btrfs_file_llseek,
2281  .read = do_sync_read,
2282  .write = do_sync_write,
2283  .aio_read = generic_file_aio_read,
2284  .splice_read = generic_file_splice_read,
2285  .aio_write = btrfs_file_aio_write,
2286  .mmap = btrfs_file_mmap,
2287  .open = generic_file_open,
2288  .release = btrfs_release_file,
2289  .fsync = btrfs_sync_file,
2290  .fallocate = btrfs_fallocate,
2291  .unlocked_ioctl = btrfs_ioctl,
2292 #ifdef CONFIG_COMPAT
2293  .compat_ioctl = btrfs_ioctl,
2294 #endif
2295 };