staging/lustre/osc: split different type of IO
Do not allow different type of pages at the same rpc. Signed-off-by: Alexander Boyko <alexander_boyko@xyratex.com> Signed-off-by: Vitaly Fertman <vitaly_fertman@xyratex.com> Xyratex-bug-id: MRP-859 Reviewed-on: http://review.whamcloud.com/10930 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3192 Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: Niu Yawei <yawei.niu@intel.com> Signed-off-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
fa55c6a4b4
Коммит
c00266e369
|
@ -1820,6 +1820,9 @@ static int try_to_add_extent_for_io(struct client_obd *cli,
|
||||||
int *pc, unsigned int *max_pages)
|
int *pc, unsigned int *max_pages)
|
||||||
{
|
{
|
||||||
struct osc_extent *tmp;
|
struct osc_extent *tmp;
|
||||||
|
struct osc_async_page *oap = list_first_entry(&ext->oe_pages,
|
||||||
|
struct osc_async_page,
|
||||||
|
oap_pending_item);
|
||||||
|
|
||||||
EASSERT((ext->oe_state == OES_CACHE || ext->oe_state == OES_LOCK_DONE),
|
EASSERT((ext->oe_state == OES_CACHE || ext->oe_state == OES_LOCK_DONE),
|
||||||
ext);
|
ext);
|
||||||
|
@ -1829,6 +1832,10 @@ static int try_to_add_extent_for_io(struct client_obd *cli,
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
list_for_each_entry(tmp, rpclist, oe_link) {
|
list_for_each_entry(tmp, rpclist, oe_link) {
|
||||||
|
struct osc_async_page *oap2;
|
||||||
|
|
||||||
|
oap2 = list_first_entry(&tmp->oe_pages, struct osc_async_page,
|
||||||
|
oap_pending_item);
|
||||||
EASSERT(tmp->oe_owner == current, tmp);
|
EASSERT(tmp->oe_owner == current, tmp);
|
||||||
#if 0
|
#if 0
|
||||||
if (overlapped(tmp, ext)) {
|
if (overlapped(tmp, ext)) {
|
||||||
|
@ -1836,6 +1843,11 @@ static int try_to_add_extent_for_io(struct client_obd *cli,
|
||||||
EASSERT(0, ext);
|
EASSERT(0, ext);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (oap2cl_page(oap)->cp_type != oap2cl_page(oap2)->cp_type) {
|
||||||
|
CDEBUG(D_CACHE, "Do not permit different type of IO"
|
||||||
|
" for a same RPC\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (tmp->oe_srvlock != ext->oe_srvlock ||
|
if (tmp->oe_srvlock != ext->oe_srvlock ||
|
||||||
!tmp->oe_grants != !ext->oe_grants)
|
!tmp->oe_grants != !ext->oe_grants)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче