From 6254515b631a4f7ca21c1ef26b0749388086faa9 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Mon, 18 Apr 2011 09:50:30 +0300 Subject: fs-tests: integck: handle all failures in operate_on_open_file Make 'operate_on_open_file()' to handle possible 'fsync()' and 'fdatasync()' errors by returning -1 up to the caller. Signed-off-by: Artem Bityutskiy --- tests/fs-tests/integrity/integck.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'tests') diff --git a/tests/fs-tests/integrity/integck.c b/tests/fs-tests/integrity/integck.c index 7ccbcb1..7348e14 100644 --- a/tests/fs-tests/integrity/integck.c +++ b/tests/fs-tests/integrity/integck.c @@ -1947,26 +1947,33 @@ static int operate_on_dir(struct dir_info *dir) */ static int operate_on_open_file(struct fd_info *fdi) { + int ret = 0; unsigned int r = random_no(1000); if (shrink && r < 5) - return file_truncate(fdi->file, fdi->fd); + ret = file_truncate(fdi->file, fdi->fd); else if (r < 21) file_close(fdi); else if (shrink && r < 121 && !fdi->file->deleted) - return file_delete(fdi->file); + ret = file_delete(fdi->file); else { - if (file_write(fdi->file, fdi->fd)) - return -1; - if (r >= 999) { - if (random_no(100) >= 50) - CHECK(fsync(fdi->fd) == 0); - else - CHECK(fdatasync(fdi->fd) == 0); + ret = file_write(fdi->file, fdi->fd); + if (!ret && r >= 999) { + if (random_no(100) >= 50) { + ret = fsync(fdi->fd); + if (ret) + pcv("fsync failed for %s", + fdi->file->name); + } else { + ret = fdatasync(fdi->fd); + if (ret) + pcv("fdatasync failed for %s", + fdi->file->name); + } } } - return 0; + return ret; } /* -- cgit v1.2.3