Example #1
0
struct inode*
unixfs_internal_iget(ino_t ino)
{
    if (ino == OSXFUSE_ROOTINO)
        ino = MINIX_ROOT_INO;

    struct super_block* sb = unixfs;

    struct inode* inode = unixfs_inodelayer_iget(ino);
    if (!inode) {
        fprintf(stderr, "*** fatal error: no inode for %llu\n", ino);
        abort();
    }

    if (inode->I_initialized)
        return inode;

    inode->I_sb = unixfs;
    inode->I_blkbits = sb->s_blocksize_bits;

    if (minixfs_iget(sb, inode) != 0) {
        fprintf(stderr, "major problem: failed to read inode %llu\n", ino);
        unixfs_inodelayer_ifailed(inode);
        goto bad_inode;
    }

    unixfs_inodelayer_isucceeded(inode);

    return inode;

bad_inode:
    return NULL;
}
Example #2
0
static struct inode*
unixfs_internal_iget(ino_t ino)
{
    struct inode* ip = unixfs_inodelayer_iget(ino);
    if (!ip) {
        fprintf(stderr, "*** fatal error: no inode for %llu\n", (ino64_t)ino);
        abort();
    }

    if (ip->I_initialized)
        return ip;

    unixfs_inodelayer_ifailed(ip);

    return NULL;
}