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 |
|
|---|
| 6 | struct 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.