Commit dd187a2603d9904ddc410441348f0cfc558a5233
Committed by
Linus Torvalds
1 parent
abf5d15fd2
Exists in
master
and in
7 other branches
[PATCH] ufs: little directory lookup optimization
This patch make little optimization of ufs_find_entry like "ext2" does. Save number of page and reuse it again in the next call. Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 4 changed files with 8 additions and 5 deletions Side-by-side Diff
fs/ufs/dir.c
... | ... | @@ -252,6 +252,7 @@ |
252 | 252 | unsigned long start, n; |
253 | 253 | unsigned long npages = ufs_dir_pages(dir); |
254 | 254 | struct page *page = NULL; |
255 | + struct ufs_inode_info *ui = UFS_I(dir); | |
255 | 256 | struct ufs_dir_entry *de; |
256 | 257 | |
257 | 258 | UFSD("ENTER, dir_ino %lu, name %s, namlen %u\n", dir->i_ino, name, namelen); |
... | ... | @@ -262,8 +263,8 @@ |
262 | 263 | /* OFFSET_CACHE */ |
263 | 264 | *res_page = NULL; |
264 | 265 | |
265 | - /* start = ei->i_dir_start_lookup; */ | |
266 | - start = 0; | |
266 | + start = ui->i_dir_start_lookup; | |
267 | + | |
267 | 268 | if (start >= npages) |
268 | 269 | start = 0; |
269 | 270 | n = start; |
... | ... | @@ -295,7 +296,7 @@ |
295 | 296 | |
296 | 297 | found: |
297 | 298 | *res_page = page; |
298 | - /* ei->i_dir_start_lookup = n; */ | |
299 | + ui->i_dir_start_lookup = n; | |
299 | 300 | return de; |
300 | 301 | } |
301 | 302 |
fs/ufs/ialloc.c
fs/ufs/inode.c
... | ... | @@ -628,12 +628,12 @@ |
628 | 628 | ufsi->i_shadow = fs32_to_cpu(sb, ufs_inode->ui_u3.ui_sun.ui_shadow); |
629 | 629 | ufsi->i_oeftflag = fs32_to_cpu(sb, ufs_inode->ui_u3.ui_sun.ui_oeftflag); |
630 | 630 | ufsi->i_lastfrag = (inode->i_size + uspi->s_fsize - 1) >> uspi->s_fshift; |
631 | + ufsi->i_dir_start_lookup = 0; | |
631 | 632 | |
632 | 633 | if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { |
633 | 634 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR); i++) |
634 | 635 | ufsi->i_u1.i_data[i] = ufs_inode->ui_u2.ui_addr.ui_db[i]; |
635 | - } | |
636 | - else { | |
636 | + } else { | |
637 | 637 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR) * 4; i++) |
638 | 638 | ufsi->i_u1.i_symlink[i] = ufs_inode->ui_u2.ui_symlink[i]; |
639 | 639 | } |