Lines Matching defs:defrag

15 #include "defrag.h"
22 * When auto defrag is enabled we queue up these defrag structs to remember
30 * Transid where the defrag was added, we search for extents newer than
64 * Pop a record for an inode into the defrag tree. The lock must be held
70 * If an existing record is found the defrag item you pass in is freed.
73 struct inode_defrag *defrag)
86 ret = __compare_inode_defrag(defrag, entry);
93 * If we're reinserting an entry for an old defrag run,
97 if (defrag->transid < entry->transid)
98 entry->transid = defrag->transid;
99 entry->extent_thresh = min(defrag->extent_thresh,
105 rb_link_node(&defrag->rb_node, parent, p);
106 rb_insert_color(&defrag->rb_node, &fs_info->defrag_inodes);
122 * Insert a defrag record for this inode if auto defrag is enabled.
129 struct inode_defrag *defrag;
144 defrag = kmem_cache_zalloc(btrfs_inode_defrag_cachep, GFP_NOFS);
145 if (!defrag)
148 defrag->ino = btrfs_ino(inode);
149 defrag->transid = transid;
150 defrag->root = root->root_key.objectid;
151 defrag->extent_thresh = extent_thresh;
158 * IN_DEFRAG flag. At the case, we may find the existed defrag.
160 ret = __btrfs_add_inode_defrag(inode, defrag);
162 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
164 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
217 struct inode_defrag *defrag;
224 defrag = rb_entry(node, struct inode_defrag, rb_node);
225 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
237 struct inode_defrag *defrag)
252 inode_root = btrfs_get_fs_root(fs_info, defrag->root, true);
258 inode = btrfs_iget(fs_info->sb, defrag->ino, inode_root);
270 /* Do a chunk of defrag */
275 range.extent_thresh = defrag->extent_thresh;
278 ret = btrfs_defrag_file(inode, NULL, &range, defrag->transid,
290 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
299 struct inode_defrag *defrag;
312 /* find an inode to defrag */
313 defrag = btrfs_pick_defrag_inode(fs_info, root_objectid, first_ino);
314 if (!defrag) {
324 first_ino = defrag->ino + 1;
325 root_objectid = defrag->root;
327 __btrfs_run_defrag_inode(fs_info, defrag);
340 * Check if two blocks addresses are close, used by defrag.
771 * tree to get the original em for defrag.
822 * we will hit a case we mark current extent for defrag, but the next
960 * @newer_than: only defrag extents newer than this value
961 * @do_compress: whether the defrag is doing compression
991 * defrag it (fallthrough) if it will cause a regular extent.
1008 /* This em is under writeback, no need to defrag */
1032 * extent). If we mark pages in an adjacent range for defrag,
1063 * for defrag, and be converted to regular extents.
1151 * @target: target range to defrag
1152 * @pages: locked pages covering the defrag range
1313 * no need to defrag the range anymore.
1324 * Here we may not defrag any range if holes are punched before
1352 * @range: defrag options including range and flags
1353 * @newer_than: minimum transid to defrag
1359 * to indicate the file offset where next defrag should be started at.
1409 * readahead is just an optimization, defrag will work without it so
1421 * defrag range can be written sequentially.