diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-04-14 22:37:31 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-04-17 22:01:39 +0200 |
commit | bf06e6535f7e00a3711978fa7835a3394b82b547 (patch) | |
tree | 84812e4c2ae86a93f8293c283b59df8ffe0375d7 /ext2fs/ialloc.c | |
parent | e00a105ff35ee53bfd6caeb6f29c47d8ed7cf3ab (diff) | |
download | hurd-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.c | 13 |
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; |