From a81e34e7f815ee735912ac379360eb0e4ebf9ac1 Mon Sep 17 00:00:00 2001 From: Jeff Mahoney Date: Mon, 4 Feb 2013 17:07:07 -0500 Subject: [PATCH] LU-1812 osd-ldiskfs: handle 4-arg fsync properly Fix locking around fsync in osd_object_sync. Signed-off-by: Jeff Mahoney Change-Id: Idc35c1649af7ef7d65fba316ffbcd86574fa847a Reviewed-on: http://review.whamcloud.com/5115 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Niu Yawei Reviewed-by: chas williams - CONTRACTOR Reviewed-by: James Simmons Reviewed-by: Andreas Dilger --- lustre/osd-ldiskfs/osd_handler.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index f6dad39..9932320 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -2827,9 +2827,13 @@ static int osd_object_sync(const struct lu_env *env, struct dt_object *dt) file->f_dentry = dentry; file->f_mapping = inode->i_mapping; file->f_op = inode->i_fop; +#ifndef HAVE_FILE_FSYNC_4ARGS mutex_lock(&inode->i_mutex); - rc = file->f_op->fsync(file, dentry, 0); +#endif + rc = cfs_do_fsync(file, 0); +#ifndef HAVE_FILE_FSYNC_4ARGS mutex_unlock(&inode->i_mutex); +#endif RETURN(rc); } -- 1.8.3.1