Lines Matching defs:defrag

16 #include "defrag.h"
23 * When auto defrag is enabled we queue up these defrag structs to remember
31 * Transid where the defrag was added, we search for extents newer than
65 * Pop a record for an inode into the defrag tree. The lock must be held
71 * If an existing record is found the defrag item you pass in is freed.
74 struct inode_defrag *defrag)
87 ret = __compare_inode_defrag(defrag, entry);
94 * If we're reinserting an entry for an old defrag run,
98 if (defrag->transid < entry->transid)
99 entry->transid = defrag->transid;
100 entry->extent_thresh = min(defrag->extent_thresh,
106 rb_link_node(&defrag->rb_node, parent, p);
107 rb_insert_color(&defrag->rb_node, &fs_info->defrag_inodes);
123 * Insert a defrag record for this inode if auto defrag is enabled.
130 struct inode_defrag *defrag;
145 defrag = kmem_cache_zalloc(btrfs_inode_defrag_cachep, GFP_NOFS);
146 if (!defrag)
149 defrag->ino = btrfs_ino(inode);
150 defrag->transid = transid;
151 defrag->root = root->root_key.objectid;
152 defrag->extent_thresh = extent_thresh;
159 * IN_DEFRAG flag. At the case, we may find the existed defrag.
161 ret = __btrfs_add_inode_defrag(inode, defrag);
163 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
165 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
218 struct inode_defrag *defrag;
225 defrag = rb_entry(node, struct inode_defrag, rb_node);
226 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
238 struct inode_defrag *defrag)
253 inode_root = btrfs_get_fs_root(fs_info, defrag->root, true);
259 inode = btrfs_iget(fs_info->sb, defrag->ino, inode_root);
271 /* Do a chunk of defrag */
276 range.extent_thresh = defrag->extent_thresh;
279 ret = btrfs_defrag_file(inode, NULL, &range, defrag->transid,
291 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
300 struct inode_defrag *defrag;
313 /* find an inode to defrag */
314 defrag = btrfs_pick_defrag_inode(fs_info, root_objectid, first_ino);
315 if (!defrag) {
325 first_ino = defrag->ino + 1;
326 root_objectid = defrag->root;
328 __btrfs_run_defrag_inode(fs_info, defrag);
628 * tree to get the original em for defrag.
679 * we will hit a case we mark current extent for defrag, but the next
816 * @newer_than: only defrag extents newer than this value
817 * @do_compress: whether the defrag is doing compression
847 * defrag it (fallthrough) if it will cause a regular extent.
865 /* This em is under writeback, no need to defrag */
889 * extent). If we mark pages in an adjacent range for defrag,
920 * for defrag, and be converted to regular extents.
1008 * @target: target range to defrag
1009 * @pages: locked pages covering the defrag range
1172 * no need to defrag the range anymore.
1183 * Here we may not defrag any range if holes are punched before
1211 * @range: defrag options including range and flags
1212 * @newer_than: minimum transid to defrag
1218 * to indicate the file offset where next defrag should be started at.
1268 * readahead is just an optimization, defrag will work without it so
1280 * defrag range can be written sequentially.