|
@@ -256,10 +256,12 @@ static void rd_free_device(struct se_device *dev)
|
|
|
|
|
|
static struct rd_dev_sg_table *rd_get_sg_table(struct rd_dev *rd_dev, u32 page)
|
|
|
{
|
|
|
- u32 i;
|
|
|
struct rd_dev_sg_table *sg_table;
|
|
|
+ u32 i, sg_per_table = (RD_MAX_ALLOCATION_SIZE /
|
|
|
+ sizeof(struct scatterlist));
|
|
|
|
|
|
- for (i = 0; i < rd_dev->sg_table_count; i++) {
|
|
|
+ i = page / sg_per_table;
|
|
|
+ if (i < rd_dev->sg_table_count) {
|
|
|
sg_table = &rd_dev->sg_table_array[i];
|
|
|
if ((sg_table->page_start_offset <= page) &&
|
|
|
(sg_table->page_end_offset >= page))
|