aboutsummaryrefslogtreecommitdiff
path: root/ext2fs/ialloc.c
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-04-14 22:37:31 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-04-17 22:01:39 +0200
commitbf06e6535f7e00a3711978fa7835a3394b82b547 (patch)
tree84812e4c2ae86a93f8293c283b59df8ffe0375d7 /ext2fs/ialloc.c
parente00a105ff35ee53bfd6caeb6f29c47d8ed7cf3ab (diff)
downloadhurd-bf06e6535f7e00a3711978fa7835a3394b82b547.tar.gz
hurd-bf06e6535f7e00a3711978fa7835a3394b82b547.tar.bz2
hurd-bf06e6535f7e00a3711978fa7835a3394b82b547.zip
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.
Diffstat (limited to 'ext2fs/ialloc.c')
-rw-r--r--ext2fs/ialloc.c13
1 files changed, 7 insertions, 6 deletions
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;