Message types for VFS readsuper

Change-Id: I7aea85d9842459ea454420bb1687d9b8eb597914
This commit is contained in:
2014-04-28 16:45:11 +02:00
parent 20211dd1b0
commit 398af818df
8 changed files with 101 additions and 72 deletions

View File

@@ -19,21 +19,21 @@ int fs_readsuper(void)
{
struct vattr *root_va;
fs_dev = fs_m_in.REQ_DEV;
is_readonly_fs = (fs_m_in.REQ_FLAGS & REQ_RDONLY) ? 1 : 0;
is_root_fs = (fs_m_in.REQ_FLAGS & REQ_ISROOT) ? 1 : 0;
fs_dev = fs_m_in.m_vfs_fs_readsuper.device;
is_readonly_fs = (fs_m_in.m_vfs_fs_readsuper.flags & REQ_RDONLY) ? 1 : 0;
is_root_fs = (fs_m_in.m_vfs_fs_readsuper.flags & REQ_ISROOT) ? 1 : 0;
/* Open root pnode */
global_pu->pu_pn_root->pn_count = 1;
/* Root pnode properties */
root_va = &global_pu->pu_pn_root->pn_va;
fs_m_out.RES_INODE_NR = root_va->va_fileid;
fs_m_out.RES_MODE = root_va->va_mode;
fs_m_out.RES_FILE_SIZE = root_va->va_size;
fs_m_out.RES_UID = root_va->va_uid;
fs_m_out.RES_GID = root_va->va_gid;
fs_m_out.RES_FLAGS = RES_NOFLAGS;
fs_m_out.m_fs_vfs_readsuper.inode = root_va->va_fileid;
fs_m_out.m_fs_vfs_readsuper.mode = root_va->va_mode;
fs_m_out.m_fs_vfs_readsuper.file_size = root_va->va_size;
fs_m_out.m_fs_vfs_readsuper.uid = root_va->va_uid;
fs_m_out.m_fs_vfs_readsuper.gid = root_va->va_gid;
fs_m_out.m_fs_vfs_readsuper.flags = RES_NOFLAGS;
return(OK);
}

View File

@@ -23,16 +23,16 @@ int do_readsuper(void)
int r;
dprintf(("%s: readsuper (dev %x, flags %x)\n",
sffs_name, m_in.REQ_DEV, m_in.REQ_FLAGS));
sffs_name, m_in.m_vfs_fs_readsuper.device, m_in.vfs_fs_readsuper.flags));
if (m_in.REQ_FLAGS & REQ_ISROOT) {
if (m_in.m_vfs_fs_readsuper.flags & REQ_ISROOT) {
printf("%s: attempt to mount as root device\n", sffs_name);
return EINVAL;
}
state.s_read_only = !!(m_in.REQ_FLAGS & REQ_RDONLY);
state.s_dev = m_in.REQ_DEV;
state.s_read_only = !!(m_in.m_vfs_fs_readsuper.flags & REQ_RDONLY);
state.s_dev = m_in.m_vfs_fs_readsuper.device;
init_dentry();
ino = init_inode();
@@ -55,13 +55,13 @@ int do_readsuper(void)
return r;
}
m_out.RES_INODE_NR = INODE_NR(ino);
m_out.RES_MODE = get_mode(ino, attr.a_mode);
m_out.RES_FILE_SIZE = attr.a_size;
m_out.RES_UID = sffs_params->p_uid;
m_out.RES_GID = sffs_params->p_gid;
m_out.RES_DEV = NO_DEV;
m_out.RES_FLAGS = RES_64BIT;
m_out.m_fs_vfs_readsuper.inode = INODE_NR(ino);
m_out.m_fs_vfs_readsuper.mode = get_mode(ino, attr.a_mode);
m_out.m_fs_vfs_readsuper.file_size = attr.a_size;
m_out.m_fs_vfs_readsuper.uid = sffs_params->p_uid;
m_out.m_fs_vfs_readsuper.gid = sffs_params->p_gid;
m_out.m_fs_vfs_readsuper.device = NO_DEV;
m_out.m_fs_vfs_readsuper.flags = RES_64BIT;
state.s_mounted = TRUE;

View File

@@ -12,10 +12,10 @@ int fs_readsuper(void)
struct inode *root;
/* Get the device number, for stat requests. */
fs_dev = fs_m_in.REQ_DEV;
fs_dev = fs_m_in.m_vfs_fs_readsuper.device;
/* The VTreeFS must not be mounted as a root file system. */
if (fs_m_in.REQ_FLAGS & REQ_ISROOT)
if (fs_m_in.m_vfs_fs_readsuper.flags & REQ_ISROOT)
return EINVAL;
/* Get the root inode and increase its reference count. */
@@ -27,13 +27,13 @@ int fs_readsuper(void)
vtreefs_hooks->init_hook();
/* Return the root inode's properties. */
fs_m_out.RES_INODE_NR = get_inode_number(root);
fs_m_out.RES_MODE = root->i_stat.mode;
fs_m_out.RES_FILE_SIZE = root->i_stat.size;
fs_m_out.RES_UID = root->i_stat.uid;
fs_m_out.RES_GID = root->i_stat.gid;
fs_m_out.RES_DEV = NO_DEV;
fs_m_out.RES_FLAGS = RES_NOFLAGS;
fs_m_out.m_fs_vfs_readsuper.inode = get_inode_number(root);
fs_m_out.m_fs_vfs_readsuper.mode = root->i_stat.mode;
fs_m_out.m_fs_vfs_readsuper.file_size = root->i_stat.size;
fs_m_out.m_fs_vfs_readsuper.uid = root->i_stat.uid;
fs_m_out.m_fs_vfs_readsuper.gid = root->i_stat.gid;
fs_m_out.m_fs_vfs_readsuper.device = NO_DEV;
fs_m_out.m_fs_vfs_readsuper.flags = RES_NOFLAGS;
fs_mounted = TRUE;