Whamcloud - gitweb
LU-1755 osc: solve a race between fsync and truncate
authorJinshan Xiong <jinshan.xiong@intel.com>
Thu, 16 Aug 2012 17:10:54 +0000 (10:10 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 6 Sep 2012 14:36:31 +0000 (10:36 -0400)
commit3762e55302ac6df9818b791f065acb8e716af6f9
treebc7a9818901e9396da132021ecade3540ba9a45f
parent3b7d840a6f1ca207ec810272013bc7aa3907f96b
LU-1755 osc: solve a race between fsync and truncate

If an OSC extent is being truncated when fsync is called, it will
have oe_fsync_wait set but no oe_urgent or oe_hp set. This causes
problem because when the extent changes OES_CACHE later, it won't
be written out immediately because urgent bit is not set.

This problem can be fixed by checking oe_fsync_wait bit and set urgent
bit correspondingly when changing osc extent's state from OES_TRUNC to
OES_CACHE at the end of truncate.

Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Change-Id: I755baac066375a92730b14de1c470c66baad5320
Reviewed-on: http://review.whamcloud.com/3699
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Niu Yawei <niu@whamcloud.com>
Reviewed-by: Johann Lombardi <johann@whamcloud.com>
lustre/osc/osc_cache.c