Changeset cd1cc4e6 in mainline for uspace/srv/fs/ext4fs/ext4fs_ops.c


Ignore:
Timestamp:
2012-01-24T16:32:32Z (12 years ago)
Author:
Frantisek Princ <frantisek.princ@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
02aad10
Parents:
786bd56
Message:

bugfixes of inode allocation and link operation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/ext4fs/ext4fs_ops.c

    r786bd56 rcd1cc4e6  
    401401        }
    402402
     403        EXT4FS_DBG("allocated");
     404
    403405        enode->inode_ref = inode_ref;
    404406        enode->instance = inst;
     
    424426        *rfn = fs_node;
    425427
     428        EXT4FS_DBG("finished");
     429
    426430        // TODO
    427431        return EOK;
     
    431435int ext4fs_destroy_node(fs_node_t *fn)
    432436{
     437        EXT4FS_DBG("");
    433438        int rc;
    434439
     
    480485int ext4fs_link(fs_node_t *pfn, fs_node_t *cfn, const char *name)
    481486{
     487        EXT4FS_DBG("");
     488
    482489        int rc;
    483490
     
    487494        }
    488495
     496        EXT4FS_DBG("name checked");
     497
    489498        ext4fs_node_t *parent = EXT4FS_NODE(pfn);
    490499        ext4fs_node_t *child = EXT4FS_NODE(cfn);
     
    492501
    493502        // Add entry to parent directory
    494         rc = ext4_directory_add_entry(fs, parent->inode_ref, name, child->inode_ref->index);
    495         if (rc != EOK) {
    496                 return rc;
    497         }
     503        rc = ext4_directory_add_entry(fs, parent->inode_ref, name, child->inode_ref);
     504        if (rc != EOK) {
     505                return rc;
     506        }
     507
     508        EXT4FS_DBG("dentry added");
    498509
    499510        // Fill new dir -> add '.' and '..' entries
    500511        if (ext4_inode_is_type(fs->superblock, child->inode_ref->inode, EXT4_INODE_MODE_DIRECTORY)) {
    501512
    502                 rc = ext4_directory_add_entry(fs, child->inode_ref, ".", child->inode_ref->index);
     513                rc = ext4_directory_add_entry(fs, child->inode_ref, ".", child->inode_ref);
    503514                if (rc != EOK) {
    504515                        ext4_directory_remove_entry(fs, parent->inode_ref, name);
     
    506517                }
    507518
    508                 rc = ext4_directory_add_entry(fs, child->inode_ref, "..", parent->inode_ref->index);
     519                EXT4FS_DBG("added dot");
     520
     521                rc = ext4_directory_add_entry(fs, child->inode_ref, "..", parent->inode_ref);
    509522                if (rc != EOK) {
    510523                        ext4_directory_remove_entry(fs, parent->inode_ref, name);
     
    512525                        return rc;
    513526                }
     527
     528                EXT4FS_DBG("added dotdot");
    514529
    515530                uint16_t parent_links = ext4_inode_get_links_count(parent->inode_ref->inode);
Note: See TracChangeset for help on using the changeset viewer.