Преглед на файлове

Btrfs: 32 bit compile fixes for the resizer and enospc checks

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason преди 17 години
родител
ревизия
f9ef6604ac
променени са 2 файла, в които са добавени 10 реда и са изтрити 4 реда
  1. 3 1
      fs/btrfs/extent-tree.c
  2. 7 3
      fs/btrfs/inode.c

+ 3 - 1
fs/btrfs/extent-tree.c

@@ -2501,6 +2501,7 @@ int btrfs_grow_extent_tree(struct btrfs_trans_handle *trans,
 	u64 nr = 0;
 	u64 cur_byte;
 	u64 old_size;
+	unsigned long rem;
 	struct btrfs_block_group_cache *cache;
 	struct btrfs_block_group_item *item;
 	struct btrfs_fs_info *info = root->fs_info;
@@ -2538,7 +2539,8 @@ int btrfs_grow_extent_tree(struct btrfs_trans_handle *trans,
 				      struct btrfs_block_group_item);
 
 		btrfs_set_disk_block_group_used(leaf, item, 0);
-		if (nr % 3) {
+		div_long_long_rem(nr, 3, &rem);
+		if (rem) {
 			btrfs_set_disk_block_group_flags(leaf, item,
 						 BTRFS_BLOCK_GROUP_DATA);
 		} else {

+ 7 - 3
fs/btrfs/inode.c

@@ -81,9 +81,11 @@ int btrfs_check_free_space(struct btrfs_root *root, u64 num_required,
 	int ret = 0;
 
 	if (for_del)
-		thresh = (total * 90) / 100;
+		thresh = total * 90;
 	else
-		thresh = (total * 85) / 100;
+		thresh = total * 85;
+
+	do_div(thresh, 100);
 
 	spin_lock(&root->fs_info->delalloc_lock);
 	if (used + root->fs_info->delalloc_bytes + num_required > thresh)
@@ -2475,7 +2477,9 @@ static int btrfs_ioctl_resize(struct btrfs_root *root, void __user *arg)
 		ret = -EFBIG;
 		goto out_unlock;
 	}
-	new_size = (new_size / root->sectorsize) * root->sectorsize;
+
+	do_div(new_size, root->sectorsize);
+	new_size *= root->sectorsize;
 
 printk("new size is %Lu\n", new_size);
 	if (new_size > old_size) {