Whamcloud - gitweb
b=15599 hsm infrastructure
[fs/lustre-release.git] / libcfs / libcfs / linux / linux-fs.c
index 13d4d86..2bf8593 100644 (file)
@@ -16,8 +16,8 @@
  * in the LICENSE file that accompanied this code).
  *
  * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see [sun.com URL with a
- * copy of GPLv2].
+ * version 2 along with this program; If not, see
+ * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
  *
  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  * CA 95054 USA or visit www.sun.com if you need additional information or
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
@@ -56,8 +56,8 @@ cfs_filp_open (const char *name, int flags, int mode, int *err)
                int rc;
 
                rc = PTR_ERR(filp);
-               printk(KERN_ERR "LustreError: can't open %s file: err %d\n",
-                               name, rc);
+                printk(KERN_ERR "LustreError: can't open %s file: err %d\n",
+                       name, rc);
                if (err)
                        *err = rc;
                filp = NULL;
@@ -75,11 +75,12 @@ cfs_user_write (cfs_file_t *filp, const char *buf, size_t count, loff_t *offset)
 
        fs = get_fs();
        set_fs(KERNEL_DS);
-       while (count > 0) {
+       while ((ssize_t)count > 0) {
                size = filp->f_op->write(filp, (char *)buf, count, offset);
                if (size < 0)
                        break;
                count -= size;
+                buf += size;
                size = 0;
        }
        set_fs(fs);
@@ -88,6 +89,7 @@ cfs_user_write (cfs_file_t *filp, const char *buf, size_t count, loff_t *offset)
 }
 
 #if !(CFS_O_CREAT == O_CREAT && CFS_O_EXCL == O_EXCL &&        \
+     CFS_O_NOACCESS == O_NOACCESS &&\
      CFS_O_TRUNC == O_TRUNC && CFS_O_APPEND == O_APPEND &&\
      CFS_O_NONBLOCK == O_NONBLOCK && CFS_O_NDELAY == O_NDELAY &&\
      CFS_O_SYNC == O_SYNC && CFS_O_ASYNC == FASYNC &&\
@@ -96,9 +98,9 @@ cfs_user_write (cfs_file_t *filp, const char *buf, size_t count, loff_t *offset)
 
 int cfs_oflags2univ(int flags)
 {
-       int f; 
-       
-       f = flags & O_ACCMODE;
+       int f;
+
+       f = flags & O_NOACCESS;
        f |= (flags & O_CREAT) ? CFS_O_CREAT: 0;
        f |= (flags & O_EXCL) ? CFS_O_EXCL: 0;
        f |= (flags & O_NOCTTY) ? CFS_O_NOCTTY: 0;