mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-22 02:53:23 +00:00
new: rootfs
This commit is contained in:
@ -30,12 +30,12 @@ int do_mount(struct vfs_dir_entry_t *old_dentry, struct vfs_dir_entry_t *new_den
|
||||
mp->dentry = old_dentry;
|
||||
mp->parent_dentry = old_dentry->parent;
|
||||
|
||||
// kdebug("&new_dentry->name=%#018lx, &old_dentry->name=%#018lx", &new_dentry->name, &old_dentry->name);
|
||||
// 拷贝名称
|
||||
strncpy(new_dentry->name, old_dentry->name, old_dentry->name_length);
|
||||
kdebug("new_dentry->name=%s, old_dentry->name=%s, old_dentry->name_length=%d", new_dentry->name, old_dentry->name, old_dentry->name_length);
|
||||
|
||||
new_dentry->d_flags |= VFS_DF_MOUNTED; // 标记新的dentry是一个挂载点
|
||||
|
||||
|
||||
list_init(&new_dentry->child_node_list);
|
||||
list_init(&new_dentry->subdirs_list);
|
||||
new_dentry->parent = old_dentry->parent;
|
||||
@ -60,4 +60,40 @@ int do_umount(struct vfs_dir_entry_t *dentry)
|
||||
// todo: 实现umount(主要是结点的恢复问题)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 根据mountpoint的父目录dentry查找第一个符合条件的mountpoint结构体
|
||||
*
|
||||
* @param dentry 父dentry
|
||||
* @return struct mountpoint* 第一个符合条件的mountpoint结构体的指针
|
||||
*/
|
||||
struct mountpoint *mount_find_mnt_list_by_parent(struct vfs_dir_entry_t *dentry)
|
||||
{
|
||||
struct List *list = &mnt_list_head;
|
||||
struct mountpoint *ret = NULL;
|
||||
if (list_empty(list))
|
||||
return NULL;
|
||||
|
||||
while (list_next(list) != &mnt_list_head)
|
||||
{
|
||||
list = list_next(list);
|
||||
struct mountpoint *tmp = container_of(list, struct mountpoint, mnt_list);
|
||||
if (dentry == tmp->parent_dentry)
|
||||
return tmp;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 将挂载点结构体从链表中删除并释放
|
||||
*
|
||||
* @param mp mountpoint结构体
|
||||
* @return int 错误码
|
||||
*/
|
||||
int mount_release_mountpoint(struct mountpoint *mp)
|
||||
{
|
||||
list_del(&mp->mnt_list);
|
||||
return kfree(mp);
|
||||
}
|
Reference in New Issue
Block a user