From bf06e6535f7e00a3711978fa7835a3394b82b547 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Tue, 14 Apr 2015 22:37:31 +0200 Subject: ext2fs: use fat nodes Use `diskfs_make_node_alloc' to allocate both the node and the disknode in a continuous chunk of memory. This increases locality and reduces the pressure on the memory allocator. * ext2fs/inode.c: Use `diskfs_node_disknode' to access the disknode. (diskfs_cached_lookup): Use `diskfs_make_node_alloc' to allocate the node. (diskfs_node_norefs): Only free `np'. * ext2fs/dir.c: Use `diskfs_node_disknode' to access the disknode. * ext2fs/ext2fs.h: Likewise. * ext2fs/getblk.c: Likewise. * ext2fs/ialloc.c: Likewise. * ext2fs/pager.c: Likewise. * ext2fs/truncate.c: Likewise. --- ext2fs/ialloc.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'ext2fs/ialloc.c') diff --git a/ext2fs/ialloc.c b/ext2fs/ialloc.c index 52212d59..7cfc4f32 100644 --- a/ext2fs/ialloc.c +++ b/ext2fs/ialloc.c @@ -316,14 +316,14 @@ diskfs_alloc_node (struct node *dir, mode_t mode, struct node **node) } /* Zero out the block pointers in case there's some noise left on disk. */ for (block = 0; block < EXT2_N_BLOCKS; block++) - if (np->dn->info.i_data[block] != 0) + if (diskfs_node_disknode (np)->info.i_data[block] != 0) { - np->dn->info.i_data[block] = 0; + diskfs_node_disknode (np)->info.i_data[block] = 0; np->dn_set_ctime = 1; } - if (np->dn->info_i_translator != 0) + if (diskfs_node_disknode (np)->info_i_translator != 0) { - np->dn->info_i_translator = 0; + diskfs_node_disknode (np)->info_i_translator = 0; np->dn_set_ctime = 1; } st->st_mode &= ~S_IPTRANS; @@ -335,8 +335,9 @@ diskfs_alloc_node (struct node *dir, mode_t mode, struct node **node) } /* Propagate initial inode flags from the directory, as Linux does. */ - np->dn->info.i_flags = - ext2_mask_flags(mode, dir->dn->info.i_flags & EXT2_FL_INHERITED); + diskfs_node_disknode (np)->info.i_flags = + ext2_mask_flags(mode, + diskfs_node_disknode (dir)->info.i_flags & EXT2_FL_INHERITED); st->st_flags = 0; -- cgit v1.2.3