From 5650191e916eb93205b60a1c816c7a9380b8295b Mon Sep 17 00:00:00 2001 From: niu Date: Fri, 4 Nov 2005 06:35:46 +0000 Subject: [PATCH] improve cfs_user_write() for quota --- lnet/libcfs/linux/linux-fs.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lnet/libcfs/linux/linux-fs.c b/lnet/libcfs/linux/linux-fs.c index a7924e8..ef351a0 100644 --- a/lnet/libcfs/linux/linux-fs.c +++ b/lnet/libcfs/linux/linux-fs.c @@ -32,12 +32,18 @@ ssize_t cfs_user_write (cfs_file_t *filp, const char *buf, size_t count, loff_t *offset) { mm_segment_t fs; - ssize_t size; - - fs = get_fs(); - set_fs(KERNEL_DS); - size = filp->f_op->write(filp, (char *)buf, count, offset); - set_fs(fs); + ssize_t size = 0; + + fs = get_fs(); + set_fs(KERNEL_DS); + while (count > 0) { + size = filp->f_op->write(filp, (char *)buf, count, offset); + if (size < 0) + break; + count -= size; + size = 0; + } + set_fs(fs); return size; } -- 1.8.3.1