changeset 113:325f5d3a757c

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.
author tpoynor <tpoynor>
date Wed, 25 Jan 2006 01:21:08 +0000
parents 0f8838615001
children 2a9f82d34433
files yaffs_fs.c
diffstat 1 files changed, 4 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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 <linux/config.h>
@@ -628,9 +628,9 @@ static int yaffs_commit_write(struct fil
 
 	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 f
 
 	}
 	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)