]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/btrfs/delayed-inode.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[karo-tx-linux.git] / fs / btrfs / delayed-inode.c
index 5615eacc7e7f11eaa7501ace2bfc397250f6f29c..375510913fe744784f8f56966ed29693ee8e3612 100644 (file)
@@ -1667,8 +1667,7 @@ int btrfs_should_delete_dir_index(struct list_head *del_list,
  * btrfs_readdir_delayed_dir_index - read dir info stored in the delayed tree
  *
  */
-int btrfs_readdir_delayed_dir_index(struct file *filp, void *dirent,
-                                   filldir_t filldir,
+int btrfs_readdir_delayed_dir_index(struct dir_context *ctx,
                                    struct list_head *ins_list)
 {
        struct btrfs_dir_item *di;
@@ -1690,13 +1689,13 @@ int btrfs_readdir_delayed_dir_index(struct file *filp, void *dirent,
        list_for_each_entry_safe(curr, next, ins_list, readdir_list) {
                list_del(&curr->readdir_list);
 
-               if (curr->key.offset < filp->f_pos) {
+               if (curr->key.offset < ctx->pos) {
                        if (atomic_dec_and_test(&curr->refs))
                                kfree(curr);
                        continue;
                }
 
-               filp->f_pos = curr->key.offset;
+               ctx->pos = curr->key.offset;
 
                di = (struct btrfs_dir_item *)curr->data;
                name = (char *)(di + 1);
@@ -1705,7 +1704,7 @@ int btrfs_readdir_delayed_dir_index(struct file *filp, void *dirent,
                d_type = btrfs_filetype_table[di->type];
                btrfs_disk_key_to_cpu(&location, &di->location);
 
-               over = filldir(dirent, name, name_len, curr->key.offset,
+               over = !dir_emit(ctx, name, name_len,
                               location.objectid, d_type);
 
                if (atomic_dec_and_test(&curr->refs))