Whamcloud - gitweb
LU-148 ll_readpage has to unlock vmpage by any means
[fs/lustre-release.git] / lustre / liblustre / llite_cl.c
index 98ae334..ed8c988 100644 (file)
 # include <sys/statfs.h>
 #endif
 
-#include <sysio.h>
-#ifdef HAVE_XTIO_H
-#include <xtio.h>
-#endif
-#include <fs.h>
-#include <mount.h>
-#include <inode.h>
-#ifdef HAVE_FILE_H
-#include <file.h>
-#endif
 #include <liblustre.h>
 
 #include <obd.h>
@@ -451,14 +441,14 @@ static int slp_io_rw_lock(const struct lu_env *env,
 
 }
 
-static int slp_io_trunc_iter_init(const struct lu_env *env,
-                                  const struct cl_io_slice *ios)
+static int slp_io_setattr_iter_init(const struct lu_env *env,
+                                    const struct cl_io_slice *ios)
 {
         return 0;
 }
 
-static int slp_io_trunc_start(const struct lu_env *env,
-                              const struct cl_io_slice *ios)
+static int slp_io_setattr_start(const struct lu_env *env,
+                                const struct cl_io_slice *ios)
 {
         return 0;
 }
@@ -487,6 +477,7 @@ static void llu_free_user_page(struct page *page)
         OBD_FREE_PTR(page);
 }
 
+
 static int llu_queue_pio(const struct lu_env *env, struct cl_io *io,
                          struct llu_io_group *group,
                          char *buf, size_t count, loff_t pos)
@@ -609,15 +600,23 @@ void put_io_group(struct llu_io_group *group)
         OBD_FREE_PTR(group);
 }
 
+/**
+ * True, if \a io is a normal io, False for sendfile() / splice_{read|write}
+ */
+int cl_is_normalio(const struct lu_env *env, const struct cl_io *io)
+{
+        return 1;
+}
+
 static int slp_io_start(const struct lu_env *env, const struct cl_io_slice *ios)
 {
         struct ccc_io     *cio   = cl2ccc_io(env, ios);
         struct cl_io      *io    = ios->cis_io;
         struct cl_object  *obj   = io->ci_obj;
         struct inode      *inode = ccc_object_inode(obj);
-        int     err, ret;
-        loff_t  pos;
-        size_t  cnt;
+        int    err, ret;
+        loff_t pos;
+        long   cnt;
         struct llu_io_group *iogroup;
         struct lustre_rw_params p = {0};
         int iovidx;
@@ -652,8 +651,8 @@ static int slp_io_start(const struct lu_env *env, const struct cl_io_slice *ios)
                 GOTO(out, err);
 
         CDEBUG(D_INODE,
-               "%s ino %lu, "LPSZ" bytes, offset %lld, i_size %llu\n",
-               write?"Write":"Read", (unsigned long)st->st_ino,
+               "%s ino %lu, %lu bytes, offset "LPU64", i_size "LPU64"\n",
+               write ? "Write" : "Read", (unsigned long)st->st_ino,
                cnt, (__u64)pos, (__u64)st->st_size);
 
         if (write && io->u.ci_wr.wr_append)
@@ -662,7 +661,7 @@ static int slp_io_start(const struct lu_env *env, const struct cl_io_slice *ios)
 
         for (iovidx = 0; iovidx < cio->cui_nrsegs; iovidx++) {
                 char *buf = (char *) cio->cui_iov[iovidx].iov_base;
-                size_t count = cio->cui_iov[iovidx].iov_len;
+                long count = cio->cui_iov[iovidx].iov_len;
 
                 if (!count)
                         continue;
@@ -730,10 +729,10 @@ static const struct cl_io_operations ccc_io_ops = {
                         .cio_end       = ccc_io_end,
                         .cio_advance   = ccc_io_advance
                 },
-                [CIT_TRUNC] = {
+                [CIT_SETATTR] = {
                         .cio_fini       = ccc_io_fini,
-                        .cio_iter_init  = slp_io_trunc_iter_init,
-                        .cio_start      = slp_io_trunc_start
+                        .cio_iter_init  = slp_io_setattr_iter_init,
+                        .cio_start      = slp_io_setattr_start
                 },
                 [CIT_MISC] = {
                         .cio_fini   = ccc_io_fini