diff options
Diffstat (limited to 'fs/btrfs/extent_io.c')
| -rw-r--r-- | fs/btrfs/extent_io.c | 15 | 
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index a389820d158b..af0359dcf337 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -2532,6 +2532,7 @@ static void end_bio_extent_readpage(struct bio *bio, int err)  					test_bit(BIO_UPTODATE, &bio->bi_flags);  				if (err)  					uptodate = 0; +				offset += len;  				continue;  			}  		} @@ -3437,16 +3438,10 @@ done_unlocked:  	return 0;  } -static int eb_wait(void *word) -{ -	io_schedule(); -	return 0; -} -  void wait_on_extent_buffer_writeback(struct extent_buffer *eb)  { -	wait_on_bit(&eb->bflags, EXTENT_BUFFER_WRITEBACK, eb_wait, -		    TASK_UNINTERRUPTIBLE); +	wait_on_bit_io(&eb->bflags, EXTENT_BUFFER_WRITEBACK, +		       TASK_UNINTERRUPTIBLE);  }  static noinline_for_stack int @@ -4213,8 +4208,8 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,  		return -ENOMEM;  	path->leave_spinning = 1; -	start = ALIGN(start, BTRFS_I(inode)->root->sectorsize); -	len = ALIGN(len, BTRFS_I(inode)->root->sectorsize); +	start = round_down(start, BTRFS_I(inode)->root->sectorsize); +	len = round_up(max, BTRFS_I(inode)->root->sectorsize) - start;  	/*  	 * lookup the last file extent.  We're not using i_size here  |