@ -476,6 +476,7 @@ int clear_extent_bit(struct extent_io_tree *tree, u64 start, u64 end,
struct extent_state * state ;
struct extent_state * prealloc = NULL ;
struct rb_node * node ;
u64 last_end ;
int err ;
int set = 0 ;
@ -498,6 +499,7 @@ again:
if ( state - > start > end )
goto out ;
WARN_ON ( state - > end < start ) ;
last_end = state - > end ;
/*
* | - - - - desired range - - - - |
@ -524,9 +526,11 @@ again:
if ( err )
goto out ;
if ( state - > end < = end ) {
start = state - > end + 1 ;
set | = clear_state_bit ( tree , state , bits ,
wake , delete ) ;
if ( last_end = = ( u64 ) - 1 )
goto out ;
start = last_end + 1 ;
} else {
start = state - > start ;
}
@ -552,8 +556,10 @@ again:
goto out ;
}
start = state - > end + 1 ;
set | = clear_state_bit ( tree , state , bits , wake , delete ) ;
if ( last_end = = ( u64 ) - 1 )
goto out ;
start = last_end + 1 ;
goto search_again ;
out :
@ -707,8 +713,10 @@ again:
goto out ;
}
set_state_bits ( tree , state , bits ) ;
start = state - > end + 1 ;
merge_state ( tree , state ) ;
if ( last_end = = ( u64 ) - 1 )
goto out ;
start = last_end + 1 ;
goto search_again ;
}
@ -742,8 +750,10 @@ again:
goto out ;
if ( state - > end < = end ) {
set_state_bits ( tree , state , bits ) ;
start = state - > end + 1 ;
merge_state ( tree , state ) ;
if ( last_end = = ( u64 ) - 1 )
goto out ;
start = last_end + 1 ;
} else {
start = state - > start ;
}