Btrfs: finish off inode indexing in dirs, add overflows

Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Chris Mason
2007-04-05 12:13:21 -04:00
committed by David Woodhouse
parent 5f26f772e5
commit 7fcde0e329
3 changed files with 107 additions and 11 deletions

View File

@@ -486,19 +486,18 @@ static int btrfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
continue;
if (btrfs_disk_key_offset(&item->key) < filp->f_pos)
continue;
filp->f_pos = btrfs_disk_key_offset(&item->key);
advance = 1;
di = btrfs_item_ptr(leaf, slot, struct btrfs_dir_item);
over = filldir(dirent, (const char *)(di + 1),
btrfs_dir_name_len(di),
btrfs_disk_key_offset(&item->key),
btrfs_dir_objectid(di), d_type);
if (over) {
filp->f_pos = btrfs_disk_key_offset(&item->key);
break;
}
filp->f_pos = btrfs_disk_key_offset(&item->key) + 1;
if (over)
goto nopos;
}
filp->f_pos++;
nopos:
ret = 0;
err:
btrfs_release_path(root, path);