Import backup from 2005-02-01
This commit is contained in:
parent
4638656aaf
commit
862b36b37b
@ -299,8 +299,36 @@ u32_t ext2_alloc_inode(vfs_mount_t *mount)
|
|||||||
ext2_super_block_t *super = mount->super;
|
ext2_super_block_t *super = mount->super;
|
||||||
if (!super->s_free_inodes_count)
|
if (!super->s_free_inodes_count)
|
||||||
return 0; // no free inodes
|
return 0; // no free inodes
|
||||||
|
int bg;
|
||||||
|
for (bg = 0; bg < super->s_blocks_count; b++)
|
||||||
|
{
|
||||||
|
ext2_group_desc_t group_desc = ext2_get_group_desc(mount, b);
|
||||||
|
if (group_desc.bg_free_inodes_count)
|
||||||
|
{
|
||||||
|
u32_t node = ext2_reserve_node(super, group_desc.bg_inode_bitmap, super->s_inodes_per_group);
|
||||||
|
return b *
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32_t ext2_reserve_node(ext2_super_block_t *super, u32_t bitmap_block_num, u32_t max_node)
|
||||||
|
{
|
||||||
|
u32_t *bitmap = kmalloc(1024 << super->s_log_block_size);
|
||||||
|
int block, max_block = max_node / (8192 << super->s_log_block_size);
|
||||||
|
for (block = 0; block < max_block; block++)
|
||||||
|
{
|
||||||
|
block_read(super->major, super->minor, ext2_FSToDiskBlock(bitmap_block_num + block, super),
|
||||||
|
2 << super->s_log_block_size, bitmap);
|
||||||
|
}
|
||||||
|
kfree(bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ext2_num_block_groups(ext2_super_block_t *super)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************** VFS INTERFACE FUNCTIONS *******************/
|
/***************** VFS INTERFACE FUNCTIONS *******************/
|
||||||
|
|
||||||
|
@ -192,6 +192,8 @@ int ext2_inode_seek(vfs_mount_t *mount, ext2_open_inode_t *open_inode, u32_t blo
|
|||||||
int ext2_inode_status(vfs_mount_t *mount, u32_t inode_number);
|
int ext2_inode_status(vfs_mount_t *mount, u32_t inode_number);
|
||||||
int ext2_block_status(vfs_mount_t *mount, u32_t block_number);
|
int ext2_block_status(vfs_mount_t *mount, u32_t block_number);
|
||||||
u32_t ext2_alloc_inode(vfs_mount_t *mount);
|
u32_t ext2_alloc_inode(vfs_mount_t *mount);
|
||||||
|
u32_t ext2_reserve_node(ext2_super_block_t *super, u32_t bitmap_block_num, u32_t max_node);
|
||||||
|
int ext2_num_block_groups(ext2_super_block_t *super);
|
||||||
|
|
||||||
|
|
||||||
ext2_open_dir_t *ext2_open_dir(vfs_mount_t *mount, u32_t inode_number);
|
ext2_open_dir_t *ext2_open_dir(vfs_mount_t *mount, u32_t inode_number);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user