diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index afde837644e55f3e7c7db58ea693d37680797ca3..18cc23d164a80b7ccc717a83499214b81f395896 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -1186,6 +1186,9 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, if (newer_off == (u64)-1) break; + if (ret > 0) + i += ret; + newer_off = max(newer_off + 1, (u64)i << PAGE_CACHE_SHIFT);