Hello, Here is the btrfs-progs patch needed for the new dir index stuff to work properly. Thanks, Josef diff -r 1235216d952d ctree.h --- a/ctree.h Fri Jul 11 18:39:36 2008 -0400 +++ b/ctree.h Sat Jul 12 03:08:52 2008 -0400 @@ -349,6 +349,7 @@ struct btrfs_dev_extent { } __attribute__ ((__packed__)); struct btrfs_inode_ref { + __le64 index; __le16 name_len; /* name goes here */ } __attribute__ ((__packed__)); @@ -795,6 +796,7 @@ BTRFS_SETGET_STACK_FUNCS(block_group_fla /* struct btrfs_inode_ref */ BTRFS_SETGET_FUNCS(inode_ref_name_len, struct btrfs_inode_ref, name_len, 16); +BTRFS_SETGET_FUNCS(inode_ref_index, struct btrfs_inode_ref, index, 64); /* struct btrfs_inode_item */ BTRFS_SETGET_FUNCS(inode_generation, struct btrfs_inode_item, generation, 64); @@ -1461,7 +1463,7 @@ int btrfs_insert_inode_ref(struct btrfs_ int btrfs_insert_inode_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, const char *name, int name_len, - u64 inode_objectid, u64 ref_objectid); + u64 inode_objectid, u64 ref_objectid, u64 index); int btrfs_del_inode_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, const char *name, int name_len, diff -r 1235216d952d inode-item.c --- a/inode-item.c Fri Jul 11 18:39:36 2008 -0400 +++ b/inode-item.c Sat Jul 12 03:08:52 2008 -0400 @@ -106,7 +106,7 @@ int btrfs_insert_inode_ref(struct btrfs_ int btrfs_insert_inode_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root, const char *name, int name_len, - u64 inode_objectid, u64 ref_objectid) + u64 inode_objectid, u64 ref_objectid, u64 index) { struct btrfs_path *path; struct btrfs_key key; @@ -138,6 +138,7 @@ int btrfs_insert_inode_ref(struct btrfs_ struct btrfs_inode_ref); ref = (struct btrfs_inode_ref *)((unsigned long)ref + old_size); btrfs_set_inode_ref_name_len(path->nodes[0], ref, name_len); + btrfs_set_inode_ref_index(path->nodes[0], ref, index); ptr = (unsigned long)(ref + 1); ret = 0; } else if (ret < 0) { @@ -146,6 +147,7 @@ int btrfs_insert_inode_ref(struct btrfs_ ref = btrfs_item_ptr(path->nodes[0], path->slots[0], struct btrfs_inode_ref); btrfs_set_inode_ref_name_len(path->nodes[0], ref, name_len); + btrfs_set_inode_ref_index(path->nodes[0], ref, index); ptr = (unsigned long)(ref + 1); } write_extent_buffer(path->nodes[0], name, ptr, name_len); diff -r 1235216d952d mkfs.c --- a/mkfs.c Fri Jul 11 18:39:36 2008 -0400 +++ b/mkfs.c Sat Jul 12 03:08:52 2008 -0400 @@ -137,7 +137,7 @@ static int make_root_dir(int fd, const c ret = btrfs_insert_inode_ref(trans, root->fs_info->tree_root, "default", 7, location.objectid, - BTRFS_ROOT_TREE_DIR_OBJECTID); + BTRFS_ROOT_TREE_DIR_OBJECTID, 0); if (ret) goto err; diff -r 1235216d952d print-tree.c --- a/print-tree.c Fri Jul 11 18:39:36 2008 -0400 +++ b/print-tree.c Sat Jul 12 03:08:52 2008 -0400 @@ -61,14 +61,16 @@ static int print_inode_ref_item(struct e u32 cur = 0; u32 len; u32 name_len; + u64 index; char namebuf[BTRFS_NAME_LEN]; total = btrfs_item_size(eb, item); while(cur < total) { name_len = btrfs_inode_ref_name_len(eb, ref); + index = btrfs_inode_ref_index(eb, ref); len = (name_len <= sizeof(namebuf))? name_len: sizeof(namebuf); read_extent_buffer(eb, namebuf, (unsigned long)(ref + 1), len); - printf("\t\tinode ref namelen %u name: %.*s\n", - name_len, len, namebuf); + printf("\t\tinode ref index %llu namelen %u name: %.*s\n", + index, name_len, len, namebuf); len = sizeof(*ref) + name_len; ref = (struct btrfs_inode_ref *)((char *)ref + len); cur += len; diff -r 1235216d952d utils.c --- a/utils.c Fri Jul 11 18:39:36 2008 -0400 +++ b/utils.c Sat Jul 12 03:08:52 2008 -0400 @@ -561,7 +561,7 @@ int btrfs_make_root_dir(struct btrfs_tra if (ret) goto error; - ret = btrfs_insert_inode_ref(trans, root, "..", 2, objectid, objectid); + ret = btrfs_insert_inode_ref(trans, root, "..", 2, objectid, objectid, 0); if (ret) goto error; -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html