Lines Matching defs:defrag
34 * when auto defrag is enabled we
35 * queue up these defrag structs to remember which
43 * transid where the defrag was added, we search for
51 /* last offset we were able to defrag */
73 /* pop a record for an inode into the defrag tree. The lock
79 * If an existing record is found the defrag item you
83 struct inode_defrag *defrag)
96 ret = __compare_inode_defrag(defrag, entry);
103 * an old defrag run, make sure to
106 if (defrag->transid < entry->transid)
107 entry->transid = defrag->transid;
108 if (defrag->last_offset > entry->last_offset)
109 entry->last_offset = defrag->last_offset;
114 rb_link_node(&defrag->rb_node, parent, p);
115 rb_insert_color(&defrag->rb_node, &fs_info->defrag_inodes);
131 * insert a defrag record for this inode if auto defrag is
139 struct inode_defrag *defrag;
154 defrag = kmem_cache_zalloc(btrfs_inode_defrag_cachep, GFP_NOFS);
155 if (!defrag)
158 defrag->ino = btrfs_ino(inode);
159 defrag->transid = transid;
160 defrag->root = root->root_key.objectid;
167 * IN_DEFRAG flag. At the case, we may find the existed defrag.
169 ret = __btrfs_add_inode_defrag(inode, defrag);
171 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
173 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
180 * Requeue the defrag object. If there is a defrag object that points to
185 struct inode_defrag *defrag)
198 ret = __btrfs_add_inode_defrag(inode, defrag);
204 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
254 struct inode_defrag *defrag;
261 defrag = rb_entry(node, struct inode_defrag, rb_node);
262 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
274 struct inode_defrag *defrag)
283 inode_root = btrfs_get_fs_root(fs_info, defrag->root, true);
289 inode = btrfs_iget(fs_info->sb, defrag->ino, inode_root);
296 /* do a chunk of defrag */
300 range.start = defrag->last_offset;
303 num_defrag = btrfs_defrag_file(inode, NULL, &range, defrag->transid,
307 * if we filled the whole defrag batch, there
308 * must be more work to do. Queue this defrag
312 defrag->last_offset = range.start;
313 btrfs_requeue_inode_defrag(BTRFS_I(inode), defrag);
314 } else if (defrag->last_offset && !defrag->cycled) {
316 * we didn't fill our defrag batch, but
320 defrag->last_offset = 0;
321 defrag->cycled = 1;
322 btrfs_requeue_inode_defrag(BTRFS_I(inode), defrag);
324 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
330 kmem_cache_free(btrfs_inode_defrag_cachep, defrag);
340 struct inode_defrag *defrag;
354 /* find an inode to defrag */
355 defrag = btrfs_pick_defrag_inode(fs_info, root_objectid,
357 if (!defrag) {
367 first_ino = defrag->ino + 1;
368 root_objectid = defrag->root;
370 __btrfs_run_defrag_inode(fs_info, defrag);