On Tue, Feb 23, 2010 at 6:11 AM, Talyansky, Roman
<roman.talyan...@sap.com>wrote:

> Hi Sage,
>
> As you advised us, we switched to the release 0.19 of ceph and ran into
> another bug in the ceph client. When writing to a file with the O_SYNC flag,
>  "0" is always returned although the data is written to disk.
> This poses a problem in our benchmark which uses the return value as number
> of bytes written. Also it seems that such behavior infringes the POSIX
> write() contract.
>
>
Yeah, thanks. A fix was pushed to the unstable branch. We will probably
start maintaining a stable version that will contain such fixes, but you can
apply this in the mean time:

diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 2c4ae44..88932c9 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -807,7 +807,7 @@ static ssize_t ceph_aio_write(struct kiocb *iocb, const
struct iovec *iov,
        struct ceph_osd_client *osdc = &ceph_client(inode->i_sb)->osdc;
        loff_t endoff = pos + iov->iov_len;
        int got = 0;
-       int ret;
+       int ret, err;

        if (ceph_snap(inode) != CEPH_NOSNAP)
                return -EROFS;
@@ -838,9 +838,12 @@ retry_snap:

                if ((ret >= 0 || ret == -EIOCBQUEUED) &&
                    ((file->f_flags & O_SYNC) ||
IS_SYNC(file->f_mapping->host)
-                    || ceph_osdmap_flag(osdc->osdmap,
CEPH_OSDMAP_NEARFULL)))
-                       ret = vfs_fsync_range(file, file->f_path.dentry,
+                    || ceph_osdmap_flag(osdc->osdmap,
CEPH_OSDMAP_NEARFULL))) {
+                       err = vfs_fsync_range(file, file->f_path.dentry,
                                              pos, pos + ret - 1, 1);
+                       if (err < 0)
+                               ret = err;
+               }
        }
        if (ret >= 0) {
                spin_lock(&inode->i_lock);



Yehuda
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Ceph-devel mailing list
Ceph-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ceph-devel

Reply via email to