From 9ba290174077217e612c4c71dfc23666e143af84 Mon Sep 17 00:00:00 2001 From: tpoynor Date: Wed, 25 Jan 2006 01:21:08 +0000 Subject: [PATCH] Handle partial writes more gracefully: return partial byte counts, return ENOSPC only if no partial count or error code available. Based on fix from Mikhail Ryleev. --- yaffs_fs.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/yaffs_fs.c b/yaffs_fs.c index 3ded1fe..cc4f68a 100644 --- a/yaffs_fs.c +++ b/yaffs_fs.c @@ -31,7 +31,7 @@ */ const char *yaffs_fs_c_version = - "$Id: yaffs_fs.c,v 1.39 2006-01-24 22:22:52 tpoynor Exp $"; + "$Id: yaffs_fs.c,v 1.40 2006-01-25 01:21:08 tpoynor Exp $"; extern const char *yaffs_guts_c_version; #include @@ -628,9 +628,9 @@ static int yaffs_commit_write(struct file *f, struct page *pg, unsigned offset, T(YAFFS_TRACE_OS, (KERN_DEBUG "yaffs_commit_write returning %d\n", - nWritten == nBytes ? 0 : -1)); + nWritten == nBytes ? 0 : nWritten)); - return nWritten == nBytes ? 0 : -1; + return nWritten == nBytes ? 0 : nWritten; } @@ -788,8 +788,7 @@ static ssize_t yaffs_file_write(struct file *f, const char *buf, size_t n, } yaffs_GrossUnlock(dev); - - return nWritten != n ? -ENOSPC : nWritten; + return nWritten == 0 ? -ENOSPC : nWritten; } static int yaffs_readdir(struct file *f, void *dirent, filldir_t filldir) -- 2.30.2