@@ -1704,7 +1704,6 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
1704
1704
/* Lookup extent status tree firstly */
1705
1705
if (ext4_es_lookup_extent (inode , iblock , NULL , & es )) {
1706
1706
if (ext4_es_is_hole (& es )) {
1707
- retval = 0 ;
1708
1707
down_read (& EXT4_I (inode )-> i_data_sem );
1709
1708
goto add_delayed ;
1710
1709
}
@@ -1749,26 +1748,9 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
1749
1748
retval = ext4_ext_map_blocks (NULL , inode , map , 0 );
1750
1749
else
1751
1750
retval = ext4_ind_map_blocks (NULL , inode , map , 0 );
1752
-
1753
- add_delayed :
1754
- if (retval == 0 ) {
1755
- int ret ;
1756
-
1757
- /*
1758
- * XXX: __block_prepare_write() unmaps passed block,
1759
- * is it OK?
1760
- */
1761
-
1762
- ret = ext4_insert_delayed_block (inode , map -> m_lblk );
1763
- if (ret != 0 ) {
1764
- retval = ret ;
1765
- goto out_unlock ;
1766
- }
1767
-
1768
- map_bh (bh , inode -> i_sb , invalid_block );
1769
- set_buffer_new (bh );
1770
- set_buffer_delay (bh );
1771
- } else if (retval > 0 ) {
1751
+ if (retval < 0 )
1752
+ goto out_unlock ;
1753
+ if (retval > 0 ) {
1772
1754
unsigned int status ;
1773
1755
1774
1756
if (unlikely (retval != map -> m_len )) {
@@ -1783,11 +1765,24 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
1783
1765
EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN ;
1784
1766
ext4_es_insert_extent (inode , map -> m_lblk , map -> m_len ,
1785
1767
map -> m_pblk , status );
1768
+ goto out_unlock ;
1786
1769
}
1787
1770
1771
+ add_delayed :
1772
+ /*
1773
+ * XXX: __block_prepare_write() unmaps passed block,
1774
+ * is it OK?
1775
+ */
1776
+ retval = ext4_insert_delayed_block (inode , map -> m_lblk );
1777
+ if (retval )
1778
+ goto out_unlock ;
1779
+
1780
+ map_bh (bh , inode -> i_sb , invalid_block );
1781
+ set_buffer_new (bh );
1782
+ set_buffer_delay (bh );
1783
+
1788
1784
out_unlock :
1789
1785
up_read ((& EXT4_I (inode )-> i_data_sem ));
1790
-
1791
1786
return retval ;
1792
1787
}
1793
1788
0 commit comments