Whamcloud - gitweb
LU-14550 libcfs: fix setting of debug_path
[fs/lustre-release.git] / lustre / include / lustre_osc.h
index 4072fbd..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),
 };
 
 /*
@@ -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,