Whamcloud - gitweb
LU-498 pass oap instead of cookie to osc_teardown_async_page/osc_queue_async_io
[fs/lustre-release.git] / lustre / osc / osc_internal.h
index 545b5c1..f598fce 100644 (file)
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
@@ -63,9 +63,9 @@ struct osc_async_page {
         unsigned short          oap_cmd;
         unsigned short          oap_interrupted:1;
 
-        struct list_head        oap_pending_item;
-        struct list_head        oap_urgent_item;
-        struct list_head        oap_rpc_item;
+        cfs_list_t              oap_pending_item;
+        cfs_list_t              oap_urgent_item;
+        cfs_list_t              oap_rpc_item;
 
         obd_off                 oap_obj_off;
         unsigned                oap_page_off;
@@ -79,9 +79,9 @@ struct osc_async_page {
 
         const struct obd_async_page_ops *oap_caller_ops;
         void                    *oap_caller_data;
-        struct list_head         oap_page_list;
+        cfs_list_t               oap_page_list;
         struct ldlm_lock        *oap_ldlm_lock;
-        spinlock_t               oap_lock;
+        cfs_spinlock_t           oap_lock;
 };
 
 #define oap_page        oap_brw_page.pg
@@ -89,9 +89,9 @@ struct osc_async_page {
 #define oap_brw_flags   oap_brw_page.flag
 
 struct osc_cache_waiter {
-        struct list_head        ocw_entry;
+        cfs_list_t              ocw_entry;
         cfs_waitq_t             ocw_waitq;
-        struct osc_async_page   *ocw_oap;
+        struct osc_async_page  *ocw_oap;
         int                     ocw_rc;
 };
 
@@ -101,14 +101,19 @@ struct osc_cache_waiter {
 #define OSCC_FLAG_SYNC_IN_PROGRESS   0x08 /* only allow one thread to sync */
 #define OSCC_FLAG_LOW                0x10
 #define OSCC_FLAG_EXITING            0x20
+#define OSCC_FLAG_DEGRADED           0x40
+#define OSCC_FLAG_RDONLY             0x80
 
 int osc_precreate(struct obd_export *exp);
 int osc_create(struct obd_export *exp, struct obdo *oa,
-              struct lov_stripe_md **ea, struct obd_trans_info *oti);
+               struct lov_stripe_md **ea, struct obd_trans_info *oti);
+int osc_create_async(struct obd_export *exp, struct obd_info *oinfo,
+                     struct lov_stripe_md **ea, struct obd_trans_info *oti);
 int osc_real_create(struct obd_export *exp, struct obdo *oa,
-              struct lov_stripe_md **ea, struct obd_trans_info *oti);
+                    struct lov_stripe_md **ea, struct obd_trans_info *oti);
 void oscc_init(struct obd_device *obd);
 void osc_wake_cache_waiters(struct client_obd *cli);
+int osc_shrink_grant_to_target(struct client_obd *cli, long target);
 
 /*
  * cl integration.
@@ -131,8 +136,11 @@ int osc_match_base(struct obd_export *exp, struct ldlm_res_id *res_id,
                    int *flags, void *data, struct lustre_handle *lockh,
                    int unref);
 
-int osc_punch_base(struct obd_export *exp, struct obdo *oa,
-                   struct obd_capa *capa,
+int osc_setattr_async_base(struct obd_export *exp, struct obd_info *oinfo,
+                           struct obd_trans_info *oti,
+                           obd_enqueue_update_f upcall, void *cookie,
+                           struct ptlrpc_request_set *rqset);
+int osc_punch_base(struct obd_export *exp, struct obd_info *oinfo,
                    obd_enqueue_update_f upcall, void *cookie,
                    struct ptlrpc_request_set *rqset);
 
@@ -146,14 +154,13 @@ int  osc_oap_interrupted(const struct lu_env *env, struct osc_async_page *oap);
 void loi_list_maint(struct client_obd *cli, struct lov_oinfo *loi);
 void osc_check_rpcs(const struct lu_env *env, struct client_obd *cli);
 
-int osc_queue_async_io(const struct lu_env *env,
-                       struct obd_export *exp, struct lov_stripe_md *lsm,
-                       struct lov_oinfo *loi, void *cookie,
-                       int cmd, obd_off off, int count,
-                       obd_flag brw_flags, enum async_flags async_flags);
-int osc_teardown_async_page(struct obd_export *exp,
-                            struct lov_stripe_md *lsm,
-                            struct lov_oinfo *loi, void *cookie);
+int osc_queue_async_io(const struct lu_env *env, struct obd_export *exp,
+                       struct lov_stripe_md *lsm, struct lov_oinfo *loi,
+                       struct osc_async_page *oap, int cmd, obd_off off,
+                       int count, obd_flag brw_flags,
+                       enum async_flags async_flags);
+int osc_teardown_async_page(struct obd_export *exp, struct lov_stripe_md *lsm,
+                            struct lov_oinfo *loi, struct osc_async_page *oap);
 int osc_process_config_base(struct obd_device *obd, struct lustre_cfg *cfg);
 int osc_set_async_flags_base(struct client_obd *cli,
                              struct lov_oinfo *loi, struct osc_async_page *oap,
@@ -163,7 +170,7 @@ int osc_enter_cache_try(const struct lu_env *env,
                         struct osc_async_page *oap, int transient);
 
 struct cl_page *osc_oap2cl_page(struct osc_async_page *oap);
-extern spinlock_t osc_ast_guard;
+extern cfs_spinlock_t osc_ast_guard;
 
 int osc_cleanup(struct obd_device *obd);
 int osc_setup(struct obd_device *obd, struct lustre_cfg *lcfg);
@@ -189,8 +196,8 @@ static inline int osc_recoverable_error(int rc)
 /* return 1 if osc should be resend request */
 static inline int osc_should_resend(int resend, struct client_obd *cli)
 {
-        return atomic_read(&cli->cl_resends) ?
-               atomic_read(&cli->cl_resends) > resend : 1;
+        return cfs_atomic_read(&cli->cl_resends) ?
+               cfs_atomic_read(&cli->cl_resends) > resend : 1;
 }
 
 #ifndef min_t
@@ -219,5 +226,6 @@ static inline struct osc_device *obd2osc_dev(const struct obd_device *d)
         return container_of0(d->obd_lu_dev, struct osc_device, od_cl.cd_lu_dev);
 }
 
+int osc_dlm_lock_pageref(struct ldlm_lock *dlm);
 
 #endif /* OSC_INTERNAL_H */