1. Extra directory remove caching.
authorgkostka <kostka.grzegorz@gmail.com>
Fri, 17 Jan 2014 18:38:49 +0000 (18:38 +0000)
committergkostka <kostka.grzegorz@gmail.com>
Fri, 17 Jan 2014 18:38:49 +0000 (18:38 +0000)
2. Faster inode allocation (but worse inode distribution)

lwext4/ext4.c
lwext4/ext4_ialloc.c

index c5dd967ba645d1a3fdbe4ce49089ab777e45b973..f7fe07a0f3b61d7e803027615894a3e892517b3b 100644 (file)
@@ -1167,6 +1167,9 @@ int ext4_dir_rm(const char *path)
 \r
     inode_current = f.inode;\r
     dir_end = false;\r
+\r
+    ext4_block_delay_cache_flush(mp->fs.bdev, 1);\r
+\r
     do {\r
         /*Load directory node.*/\r
         r = ext4_fs_get_inode_ref(&f.mp->fs, inode_current, &current);\r
@@ -1300,7 +1303,7 @@ int ext4_dir_rm(const char *path)
 \r
     }while(depth);\r
 \r
-\r
+    ext4_block_delay_cache_flush(mp->fs.bdev, 0);\r
     EXT4_MP_UNLOCK(mp);\r
     return r;\r
 }\r
index 3c10e5e74f4929a7a6384faa1e79a8401bebc78e..39bba1ce21fa9f03d686deaaca50184d9812271c 100644 (file)
@@ -186,7 +186,7 @@ int ext4_ialloc_alloc_inode(struct ext4_fs *fs, uint32_t *index, bool is_dir)
         uint32_t used_dirs = ext4_bg_get_used_dirs_count(bg, sb);\r
 \r
         /* Check if this block group is good candidate for allocation */\r
-        if (free_inodes >= avg_free_inodes) {\r
+        if (free_inodes > 0) {\r
             /* Load block with bitmap */\r
             uint32_t bitmap_block_addr = ext4_bg_get_inode_bitmap(\r
                     bg_ref.block_group, sb);\r