From 7f5d565819d4276246ee352378d71d303dc34ca5 Mon Sep 17 00:00:00 2001 From: "Martin K. Petersen" Date: Fri, 31 Jul 2009 11:49:12 -0400 Subject: [PATCH] --- yaml --- r: 156368 b: refs/heads/master c: 70dd5bf3b99964d52862ad2810c24cc32a553535 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/block/blk-settings.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index aa8d90255157..ce7f23d58b19 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7c958e32649e0c35801762878fb0b6da8c55a515 +refs/heads/master: 70dd5bf3b99964d52862ad2810c24cc32a553535 diff --git a/trunk/block/blk-settings.c b/trunk/block/blk-settings.c index 1f7197434166..e1327ddfc13b 100644 --- a/trunk/block/blk-settings.c +++ b/trunk/block/blk-settings.c @@ -7,6 +7,7 @@ #include #include #include /* for max_pfn/max_low_pfn */ +#include #include "blk.h" @@ -520,6 +521,16 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, return -1; } + /* Find lcm() of optimal I/O size */ + if (t->io_opt && b->io_opt) + t->io_opt = (t->io_opt * b->io_opt) / gcd(t->io_opt, b->io_opt); + else if (b->io_opt) + t->io_opt = b->io_opt; + + /* Verify that optimal I/O size is a multiple of io_min */ + if (t->io_min && t->io_opt % t->io_min) + return -1; + return 0; } EXPORT_SYMBOL(blk_stack_limits);