diff options
author | Chris Mason <chris.mason@oracle.com> | 2007-04-04 21:23:26 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@hera.kernel.org> | 2007-04-04 21:23:26 -0400 |
commit | 6542904d952d24a6e0c77f5ebf1d8f65196d8b81 (patch) | |
tree | 80bb58e6bd8980a2431233c3966c34a05df23533 /dir-item.c | |
parent | 4d11434c123b30c695db9294b7db352e50ba85bd (diff) | |
download | btrfs-progs-6542904d952d24a6e0c77f5ebf1d8f65196d8b81.tar.gz |
dir inode index
Diffstat (limited to 'dir-item.c')
-rw-r--r-- | dir-item.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -42,6 +42,25 @@ int btrfs_insert_dir_item(struct btrfs_trans_handle *trans, struct btrfs_root btrfs_set_dir_name_len(dir_item, name_len); name_ptr = (char *)(dir_item + 1); memcpy(name_ptr, name, name_len); + + // FIXME don't be stupid + if (key.offset == 2) + goto out; + btrfs_release_path(root, &path); + btrfs_set_key_type(&key, BTRFS_DIR_INDEX_KEY); + key.offset = objectid; + ret = btrfs_insert_empty_item(trans, root, &path, &key, data_size); + if (ret) + goto out; + + dir_item = btrfs_item_ptr(&path.nodes[0]->leaf, path.slots[0], + struct btrfs_dir_item); + btrfs_set_dir_objectid(dir_item, objectid); + btrfs_set_dir_type(dir_item, type); + btrfs_set_dir_flags(dir_item, 0); + btrfs_set_dir_name_len(dir_item, name_len); + name_ptr = (char *)(dir_item + 1); + memcpy(name_ptr, name, name_len); out: btrfs_release_path(root, &path); return ret; |