Whamcloud - gitweb
LU-6441 ptlrpc: ptlrpc_bulk_abort unlink all entries in bd_mds 99/14399/5
authorArtem Blagodarenko <artem_blagodarenko@xyratex.com>
Wed, 8 Apr 2015 10:46:44 +0000 (13:46 +0300)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 1 May 2015 03:20:35 +0000 (03:20 +0000)
commit0a6470219a8602d7a56fe1c5171dba4a42244738
tree56b18fdf86b706c0af094fb22ae2401d7f11e028
parentc56f7675bfb17b3847b38044153e86550ced3c8e
LU-6441 ptlrpc: ptlrpc_bulk_abort unlink all entries in bd_mds

desc->bd_md_count is passed as bd_mds entries count that should
be unlinked in mdunlink_iterate_helper() function. But active
bd_md_count entries not always placed from first array element.
So there are cases when active bd_mds entries are not unlinked.
This problem happened, for example, with enabled 4MB IO, if not
all parts of bulk transfered.

bd_md_max_brw should be passed to mdunlink_iterate_helper() so all
bd_mds entries are unlinked.

This patch adds test. Last MD in RPC is not received. target_bulk_io()
terminates waiting by timeout and call ptlrpc_abort_bulk() to unlink
mds. If not all active MDs unlinked on this step, then OST finally
hangs.

Xyratex-bug-id: MRP-2472
Signed-off-by: Artem Blagodarenko <artem_blagodarenko@xyratex.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@seagate.com>
Tested-by: Elena Gryaznova <elena.gryaznova@seagate.com>
Reviewed-by: A. Zarochentsev <alexander.zarochentsev@seagate.com>
Change-Id: Ia8ea555e947f5fae06bee6e0c38f7dbc09570edc
Reviewed-on: http://review.whamcloud.com/14399
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Emoly Liu <emoly.liu@intel.com>
Reviewed-by: Alexander Zarochentsev <alexander_zarochentsev@xyratex.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
lustre/include/obd_support.h
lustre/ptlrpc/niobuf.c
lustre/tests/sanity.sh