Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 158782
Collapse All | Expand All

(-)file_not_specified_in_diff (-4 / +20 lines)
Line  Link Here
0
--
0
++ b/fs/buffer.c
1
-- a/fs/buffer.c
Lines 1042-1049 grow_buffers(struct block_device *bdev, Link Here
1042
	} while ((size << sizebits) < PAGE_SIZE);
1042
	} while ((size << sizebits) < PAGE_SIZE);
1043
1043
1044
	index = block >> sizebits;
1044
	index = block >> sizebits;
1045
	block = index << sizebits;
1046
1045
1046
	/*
1047
	 * Check for a block which wants to lie outside our maximum possible
1048
	 * pagecache index.  (this comparison is done using sector_t types).
1049
	 */
1050
	if (unlikely(index != block >> sizebits)) {
1051
		char b[BDEVNAME_SIZE];
1052
1053
		printk(KERN_ERR "%s: requested out-of-range block %llu for "
1054
			"device %s\n",
1055
			__FUNCTION__, (unsigned long long)block,
1056
			bdevname(bdev, b));
1057
		return -EIO;
1058
	}
1059
	block = index << sizebits;
1047
	/* Create a page with the proper size buffers.. */
1060
	/* Create a page with the proper size buffers.. */
1048
	page = grow_dev_page(bdev, block, index, size);
1061
	page = grow_dev_page(bdev, block, index, size);
1049
	if (!page)
1062
	if (!page)
Lines 1070-1081 __getblk_slow(struct block_device *bdev, Link Here
1070
1083
1071
	for (;;) {
1084
	for (;;) {
1072
		struct buffer_head * bh;
1085
		struct buffer_head * bh;
1086
		int ret;
1073
1087
1074
		bh = __find_get_block(bdev, block, size);
1088
		bh = __find_get_block(bdev, block, size);
1075
		if (bh)
1089
		if (bh)
1076
			return bh;
1090
			return bh;
1077
1091
1078
		if (!grow_buffers(bdev, block, size))
1092
		ret = grow_buffers(bdev, block, size);
1093
		if (ret < 0)
1094
			return NULL;
1095
		if (ret == 0)
1079
			free_more_memory();
1096
			free_more_memory();
1080
	}
1097
	}
1081
}
1098
}

Return to bug 158782