Lines Matching refs:defrag
83 struct inode_defrag *defrag) in __btrfs_add_inode_defrag() argument
96 ret = __compare_inode_defrag(defrag, entry); in __btrfs_add_inode_defrag()
106 if (defrag->transid < entry->transid) in __btrfs_add_inode_defrag()
107 entry->transid = defrag->transid; in __btrfs_add_inode_defrag()
108 if (defrag->last_offset > entry->last_offset) in __btrfs_add_inode_defrag()
109 entry->last_offset = defrag->last_offset; in __btrfs_add_inode_defrag()
114 rb_link_node(&defrag->rb_node, parent, p); in __btrfs_add_inode_defrag()
115 rb_insert_color(&defrag->rb_node, &fs_info->defrag_inodes); in __btrfs_add_inode_defrag()
139 struct inode_defrag *defrag; in btrfs_add_inode_defrag() local
154 defrag = kmem_cache_zalloc(btrfs_inode_defrag_cachep, GFP_NOFS); in btrfs_add_inode_defrag()
155 if (!defrag) in btrfs_add_inode_defrag()
158 defrag->ino = btrfs_ino(inode); in btrfs_add_inode_defrag()
159 defrag->transid = transid; in btrfs_add_inode_defrag()
160 defrag->root = root->root_key.objectid; in btrfs_add_inode_defrag()
169 ret = __btrfs_add_inode_defrag(inode, defrag); in btrfs_add_inode_defrag()
171 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in btrfs_add_inode_defrag()
173 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in btrfs_add_inode_defrag()
185 struct inode_defrag *defrag) in btrfs_requeue_inode_defrag() argument
198 ret = __btrfs_add_inode_defrag(inode, defrag); in btrfs_requeue_inode_defrag()
204 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in btrfs_requeue_inode_defrag()
254 struct inode_defrag *defrag; in btrfs_cleanup_defrag_inodes() local
261 defrag = rb_entry(node, struct inode_defrag, rb_node); in btrfs_cleanup_defrag_inodes()
262 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in btrfs_cleanup_defrag_inodes()
274 struct inode_defrag *defrag) in __btrfs_run_defrag_inode() argument
283 inode_root = btrfs_get_fs_root(fs_info, defrag->root, true); in __btrfs_run_defrag_inode()
289 inode = btrfs_iget(fs_info->sb, defrag->ino, inode_root); in __btrfs_run_defrag_inode()
300 range.start = defrag->last_offset; in __btrfs_run_defrag_inode()
303 num_defrag = btrfs_defrag_file(inode, NULL, &range, defrag->transid, in __btrfs_run_defrag_inode()
312 defrag->last_offset = range.start; in __btrfs_run_defrag_inode()
313 btrfs_requeue_inode_defrag(BTRFS_I(inode), defrag); in __btrfs_run_defrag_inode()
314 } else if (defrag->last_offset && !defrag->cycled) { in __btrfs_run_defrag_inode()
320 defrag->last_offset = 0; in __btrfs_run_defrag_inode()
321 defrag->cycled = 1; in __btrfs_run_defrag_inode()
322 btrfs_requeue_inode_defrag(BTRFS_I(inode), defrag); in __btrfs_run_defrag_inode()
324 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in __btrfs_run_defrag_inode()
330 kmem_cache_free(btrfs_inode_defrag_cachep, defrag); in __btrfs_run_defrag_inode()
340 struct inode_defrag *defrag; in btrfs_run_defrag_inodes() local
355 defrag = btrfs_pick_defrag_inode(fs_info, root_objectid, in btrfs_run_defrag_inodes()
357 if (!defrag) { in btrfs_run_defrag_inodes()
367 first_ino = defrag->ino + 1; in btrfs_run_defrag_inodes()
368 root_objectid = defrag->root; in btrfs_run_defrag_inodes()
370 __btrfs_run_defrag_inode(fs_info, defrag); in btrfs_run_defrag_inodes()