Whamcloud - gitweb
LU-14550 libcfs: fix setting of debug_path
[fs/lustre-release.git] / lustre / include / lustre_osc.h
index ae7b06e..9bcb313 100644 (file)
@@ -27,7 +27,6 @@
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  */
 /*
  * lustre/include/lustre_osc.h
@@ -129,7 +128,9 @@ struct osc_io {
        /** true if this io is counted as active IO */
                           oi_is_active:1,
        /** true if this io has CAP_SYS_RESOURCE */
-                          oi_cap_sys_resource:1;
+                          oi_cap_sys_resource:1,
+       /** true if this io issued by readahead */
+                          oi_is_readahead:1;
        /** how many LRU pages are reserved for this IO */
        unsigned long      oi_lru_reserved;
 
@@ -169,6 +170,7 @@ struct osc_thread_info {
         */
        pgoff_t                 oti_next_index;
        pgoff_t                 oti_fn_index; /* first non-overlapped index */
+       pgoff_t                 oti_ng_index; /* negative lock caching */
        struct cl_sync_io       oti_anchor;
        struct cl_req_attr      oti_req_attr;
        struct lu_buf           oti_ladvise_buf;
@@ -185,7 +187,7 @@ static inline __u64 osc_enq2ldlm_flags(__u32 enqflags)
        if (enqflags & CEF_NONBLOCK)
                result |= LDLM_FL_BLOCK_NOWAIT;
        if (enqflags & CEF_GLIMPSE)
-               result |= LDLM_FL_HAS_INTENT;
+               result |= LDLM_FL_HAS_INTENT|LDLM_FL_CBPENDING;
        if (enqflags & CEF_DISCARD_DATA)
                result |= LDLM_FL_AST_DISCARD_DATA;
        if (enqflags & CEF_PEEK)
@@ -227,6 +229,14 @@ enum osc_dap_flags {
         * Return the lock even if it is being canceled.
         */
        OSC_DAP_FL_CANCELING = BIT(1),
+       /**
+        * check ast data is present, requested to cancel cb
+        */
+       OSC_DAP_FL_AST       = BIT(2),
+       /**
+        * look at right region for the desired lock
+        */
+       OSC_DAP_FL_RIGHT     = BIT(3),
 };
 
 /*
@@ -496,17 +506,17 @@ struct osc_page {
         * An offset within page from which next transfer starts. This is used
         * by cl_page_clip() to submit partial page transfers.
         */
-       int                   ops_from;
+       unsigned int            ops_from:PAGE_SHIFT,
        /**
-        * An offset within page at which next transfer ends.
+        * An offset within page at which next transfer ends(inclusive).
         *
         * \see osc_page::ops_from.
         */
-       int                   ops_to;
+                               ops_to:PAGE_SHIFT,
        /**
         * Boolean, true iff page is under transfer. Used for sanity checking.
         */
-       unsigned              ops_transfer_pinned:1,
+                               ops_transfer_pinned:1,
        /**
         * in LRU?
         */
@@ -670,11 +680,11 @@ int osc_io_commit_async(const struct lu_env *env,
                        const struct cl_io_slice *ios,
                        struct cl_page_list *qin, int from, int to,
                        cl_commit_cbt cb);
+void osc_io_extent_release(const struct lu_env *env,
+                          const struct cl_io_slice *ios);
 int osc_io_iter_init(const struct lu_env *env, const struct cl_io_slice *ios);
 void osc_io_iter_fini(const struct lu_env *env,
                      const struct cl_io_slice *ios);
-int osc_io_rw_iter_init(const struct lu_env *env,
-                       const struct cl_io_slice *ios);
 void osc_io_rw_iter_fini(const struct lu_env *env,
                            const struct cl_io_slice *ios);
 int osc_io_fault_start(const struct lu_env *env, const struct cl_io_slice *ios);
@@ -689,7 +699,13 @@ int osc_fsync_ost(const struct lu_env *env, struct osc_object *obj,
                  struct cl_fsync_io *fio);
 void osc_io_fsync_end(const struct lu_env *env,
                      const struct cl_io_slice *slice);
-void osc_read_ahead_release(const struct lu_env *env, void *cbdata);
+void osc_read_ahead_release(const struct lu_env *env, struct cl_read_ahead *ra);
+int osc_io_lseek_start(const struct lu_env *env,
+                      const struct cl_io_slice *slice);
+void osc_io_lseek_end(const struct lu_env *env,
+                     const struct cl_io_slice *slice);
+int osc_io_lru_reserve(const struct lu_env *env, const struct cl_io_slice *ios,
+                      loff_t pos, size_t count);
 
 /* osc_lock.c */
 void osc_lock_to_lockless(const struct lu_env *env, struct osc_lock *ols,