OSDN Git Service

staging/lustre/osc: osc_extent_truncate()) ASSERTION( !ext->oe_urgent ) failed
authorAndriy Skulysh <Andriy_Skulysh@xyratex.com>
Mon, 23 Jun 2014 01:32:16 +0000 (21:32 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2014 00:45:06 +0000 (20:45 -0400)
commitce248d59783438f2fb0a8cfb27e7c9b9045170f1
tree10568e4712c3f5f70fd103943e3846207ffe8282
parent88fa62b24de166bb5a7e3ce55ebe7984f6209b74
staging/lustre/osc: osc_extent_truncate()) ASSERTION( !ext->oe_urgent ) failed

The bug was caused by race between truncate & fsync.
osc_extent_wait() doesn't takes into account oe_trunc_pending
during setting oe_urgent. The race arises after
osc_object_unlock().
osc_extent_wait() should ignore extents with oe_trunc_pending
while waiting for OES_INV. osc_cache_truncate_end() will set
oe_urgent and call osc_io_unplug_async()

Signed-off-by: Andriy Skulysh <Andriy_Skulysh@xyratex.com>
Reviewed-on: http://review.whamcloud.com/10204
Xyratex-bug-id: LELUS-239
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4852
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/osc/osc_cache.c