@@ -1479,9 +1479,9 @@ static int ext4_journalled_write_end(struct file *file,
1479
1479
}
1480
1480
1481
1481
/*
1482
- * Reserve space for a single cluster
1482
+ * Reserve space for 'nr_resv' clusters
1483
1483
*/
1484
- static int ext4_da_reserve_space (struct inode * inode )
1484
+ static int ext4_da_reserve_space (struct inode * inode , int nr_resv )
1485
1485
{
1486
1486
struct ext4_sb_info * sbi = EXT4_SB (inode -> i_sb );
1487
1487
struct ext4_inode_info * ei = EXT4_I (inode );
@@ -1492,18 +1492,18 @@ static int ext4_da_reserve_space(struct inode *inode)
1492
1492
* us from metadata over-estimation, though we may go over by
1493
1493
* a small amount in the end. Here we just reserve for data.
1494
1494
*/
1495
- ret = dquot_reserve_block (inode , EXT4_C2B (sbi , 1 ));
1495
+ ret = dquot_reserve_block (inode , EXT4_C2B (sbi , nr_resv ));
1496
1496
if (ret )
1497
1497
return ret ;
1498
1498
1499
1499
spin_lock (& ei -> i_block_reservation_lock );
1500
- if (ext4_claim_free_clusters (sbi , 1 , 0 )) {
1500
+ if (ext4_claim_free_clusters (sbi , nr_resv , 0 )) {
1501
1501
spin_unlock (& ei -> i_block_reservation_lock );
1502
- dquot_release_reservation_block (inode , EXT4_C2B (sbi , 1 ));
1502
+ dquot_release_reservation_block (inode , EXT4_C2B (sbi , nr_resv ));
1503
1503
return - ENOSPC ;
1504
1504
}
1505
- ei -> i_reserved_data_blocks ++ ;
1506
- trace_ext4_da_reserve_space (inode );
1505
+ ei -> i_reserved_data_blocks += nr_resv ;
1506
+ trace_ext4_da_reserve_space (inode , nr_resv );
1507
1507
spin_unlock (& ei -> i_block_reservation_lock );
1508
1508
1509
1509
return 0 ; /* success */
@@ -1678,7 +1678,7 @@ static int ext4_insert_delayed_block(struct inode *inode, ext4_lblk_t lblk)
1678
1678
* extents status tree doesn't get a match.
1679
1679
*/
1680
1680
if (sbi -> s_cluster_ratio == 1 ) {
1681
- ret = ext4_da_reserve_space (inode );
1681
+ ret = ext4_da_reserve_space (inode , 1 );
1682
1682
if (ret != 0 ) /* ENOSPC */
1683
1683
return ret ;
1684
1684
} else { /* bigalloc */
@@ -1690,7 +1690,7 @@ static int ext4_insert_delayed_block(struct inode *inode, ext4_lblk_t lblk)
1690
1690
if (ret < 0 )
1691
1691
return ret ;
1692
1692
if (ret == 0 ) {
1693
- ret = ext4_da_reserve_space (inode );
1693
+ ret = ext4_da_reserve_space (inode , 1 );
1694
1694
if (ret != 0 ) /* ENOSPC */
1695
1695
return ret ;
1696
1696
} else {
0 commit comments