source: mainline/uspace/srv/fs/minixfs/mfs_inode.c@ f213ae7

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since f213ae7 was f213ae7, checked in by Maurizio Lombardi <m.lombardi85@…>, 15 years ago

add function to read V1 inode on disk

  • Property mode set to 100644
File size: 1010 bytes
Line 
1#include <stdlib.h>
2#include <mem.h>
3#include "mfs.h"
4#include "mfs_utils.h"
5
6struct mfs_inode *mfs_read_inode_raw(const struct mfs_instance *instance,
7 uint32_t inum)
8{
9 struct mfs_inode *ino;
10 struct mfs_sb_info *sbi;
11 block_t *b;
12 int i;
13
14 const size_t ino_size = sizeof(struct mfs_inode);
15
16 ino = (struct mfs_inode *) malloc(ino_size);
17
18 if (!ino)
19 return NULL;
20
21 sbi = instance->sbi;
22
23 block_get(&b, instance->handle, 2 + inum / V1_INODES_PER_BLOCK,
24 BLOCK_FLAGS_NONE);
25
26 memcpy(ino, (struct mfs_ino *) (((uint8_t *) b->data) +
27 inum * ino_size), ino_size);
28
29 ino->i_mode = conv16(sbi->native, ino->i_mode);
30 ino->i_uid = conv16(sbi->native, ino->i_uid);
31 ino->i_size = conv32(sbi->native, ino->i_size);
32 ino->i_mtime = conv32(sbi->native, ino->i_mtime);
33
34 for (i = 0; i < V1_NR_DIRECT_ZONES; ++i)
35 ino->i_dzone[i] = conv16(sbi->native, ino->i_dzone[i]);
36
37 for (i = 0; i < V1_NR_INDIRECT_ZONES; ++i)
38 ino->i_izone[i] = conv16(sbi->native, ino->i_izone[i]);
39
40 block_put(b);
41
42 return ino;
43}
44
Note: See TracBrowser for help on using the repository browser.