[sheepdog] [PATCH v2] sheep/plain_store: move displaced object from read/write operation

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Wed Feb 5 03:03:05 CET 2014


At Tue,  4 Feb 2014 11:53:43 +0800,
Liu Yuan wrote:
> 
> This is a defensive patch, but solve a problem we found on the test cluster. The
> problem is tricky:
> 
> init_vdi_state() errorr out as "failed to read inode header xxx, 0".
> 
> After a detailed log analyzing, we found that the cause of this problem is
> mismatch of object of path between get_obj_path() and its real path, e.g,
> 
> - disk1/oidA (real location)
> - disk3/oidA (get_obj_path() location)
> 
> So default_read() fails.
> 
> To solve this problem and any future problems caused by misplaced object (if any
> by any unexpected reason), we call default_exist() before default_{read, write}.
> By this means, all the misplaced objects will be placed properly before
> any read/write operations.
> 
> Signed-off-by: Liu Yuan <namei.unix at gmail.com>
> ---
>  sheep/plain_store.c | 34 +++++++++++++++++++++++++++++++---
>  1 file changed, 31 insertions(+), 3 deletions(-)

Applied, thanks.

Kazutaka



More information about the sheepdog mailing list