mirror of
https://github.com/psankar/simplefs.git
synced 2025-07-28 16:34:08 +02:00
simplefs_create_fs_object(): avoid extra allocation of memory
We can just use already existed bh->b_data for this, and copy filename and inode number directly to it.
This commit is contained in:
parent
0e14ca0edc
commit
82a2041957
11
simple.c
11
simple.c
@ -431,7 +431,6 @@ static int simplefs_create_fs_object(struct inode *dir, struct dentry *dentry,
|
|||||||
struct simplefs_inode *sfs_inode;
|
struct simplefs_inode *sfs_inode;
|
||||||
struct simplefs_inode *inode_iterator;
|
struct simplefs_inode *inode_iterator;
|
||||||
struct super_block *sb;
|
struct super_block *sb;
|
||||||
struct simplefs_dir_record *record;
|
|
||||||
struct simplefs_inode *parent_dir_inode;
|
struct simplefs_inode *parent_dir_inode;
|
||||||
struct buffer_head *bh;
|
struct buffer_head *bh;
|
||||||
struct simplefs_dir_record *dir_contents_datablock;
|
struct simplefs_dir_record *dir_contents_datablock;
|
||||||
@ -515,10 +514,6 @@ static int simplefs_create_fs_object(struct inode *dir, struct dentry *dentry,
|
|||||||
|
|
||||||
simplefs_inode_add(sb, sfs_inode);
|
simplefs_inode_add(sb, sfs_inode);
|
||||||
|
|
||||||
record = kmalloc(sizeof(struct simplefs_dir_record), GFP_KERNEL);
|
|
||||||
record->inode_no = sfs_inode->inode_no;
|
|
||||||
strcpy(record->filename, dentry->d_name.name);
|
|
||||||
|
|
||||||
parent_dir_inode = SIMPLEFS_INODE(dir);
|
parent_dir_inode = SIMPLEFS_INODE(dir);
|
||||||
bh = sb_bread(sb, parent_dir_inode->data_block_number);
|
bh = sb_bread(sb, parent_dir_inode->data_block_number);
|
||||||
dir_contents_datablock = (struct simplefs_dir_record *)bh->b_data;
|
dir_contents_datablock = (struct simplefs_dir_record *)bh->b_data;
|
||||||
@ -526,10 +521,8 @@ static int simplefs_create_fs_object(struct inode *dir, struct dentry *dentry,
|
|||||||
/* Navigate to the last record in the directory contents */
|
/* Navigate to the last record in the directory contents */
|
||||||
dir_contents_datablock += parent_dir_inode->dir_children_count;
|
dir_contents_datablock += parent_dir_inode->dir_children_count;
|
||||||
|
|
||||||
memcpy(dir_contents_datablock, record,
|
dir_contents_datablock->inode_no = sfs_inode->inode_no;
|
||||||
sizeof(struct simplefs_dir_record));
|
strcpy(dir_contents_datablock->filename, dentry->d_name.name);
|
||||||
|
|
||||||
kfree(record);
|
|
||||||
|
|
||||||
mark_buffer_dirty(bh);
|
mark_buffer_dirty(bh);
|
||||||
sync_dirty_buffer(bh);
|
sync_dirty_buffer(bh);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user