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:50 +0000 (10:36 -0400)
commit475086740c1a8d507338729c5b947108c1fea02c
treeba3294ff112b5a29cfeb7aaea3eae8dc9595d60c
parent9a14a86f135fdf8d6e59ae4c7f05c50e6f911ac9
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