Whamcloud - gitweb
b=22176 Add .sync_fs super block handler
[fs/lustre-release.git] / lustre / include / obd_class.h
index 0a16ece..7163582 100644 (file)
@@ -26,7 +26,7 @@
  * GPL HEADER END
  */
 /*
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  */
 /*
@@ -156,6 +156,7 @@ struct config_llog_data {
         cfs_atomic_t                cld_refcount;
         struct config_llog_data    *cld_sptlrpc;/* depended sptlrpc log */
         struct obd_export          *cld_mgcexp;
+        cfs_mutex_t                 cld_lock;
         unsigned int                cld_stopping:1, /* we were told to stop
                                                      * watching */
                                     cld_lostlock:1, /* lock not requeued */
@@ -381,6 +382,19 @@ do {                                                            \
 #define EXP_MD_COUNTER_INCREMENT(exp, op)
 #endif
 
+static inline int lprocfs_nid_ldlm_stats_init(struct nid_stat* tmp) {
+        /* Always add in ldlm_stats */
+        tmp->nid_ldlm_stats = lprocfs_alloc_stats(LDLM_LAST_OPC - LDLM_FIRST_OPC
+                                                  ,LPROCFS_STATS_FLAG_NOPERCPU);
+        if (tmp->nid_ldlm_stats == NULL)
+                return -ENOMEM;
+
+        lprocfs_init_ldlm_stats(tmp->nid_ldlm_stats);
+
+        return lprocfs_register_stats(tmp->nid_proc, "ldlm_stats",
+                                      tmp->nid_ldlm_stats);
+}
+
 #define OBD_CHECK_MD_OP(obd, op, err)                           \
 do {                                                            \
         if (!OBT(obd) || !MDP((obd), op)) {                     \
@@ -888,6 +902,11 @@ static inline struct obd_uuid *obd_get_uuid(struct obd_export *exp)
         RETURN(uuid);
 }
 
+/** Create a new /a exp on device /a obd for the uuid /a cluuid
+ * @param exp New export handle
+ * @param d Connect data, supported flags are set, flags also understood
+ *    by obd are returned.
+ */
 static inline int obd_connect(const struct lu_env *env,
                               struct obd_export **exp,struct obd_device *obd,
                               struct obd_uuid *cluuid,
@@ -1240,6 +1259,20 @@ static inline int obd_sync(struct obd_export *exp, struct obdo *oa,
         RETURN(rc);
 }
 
+static inline int obd_sync_fs(struct obd_device *obd, struct obd_info *oinfo,
+                              int wait)
+{
+        int rc;
+        ENTRY;
+
+        OBD_CHECK_DT_OP(obd, sync_fs, -EOPNOTSUPP);
+        OBD_COUNTER_INCREMENT(obd, sync);
+
+        rc = OBP(obd, sync_fs)(obd, oinfo, wait);
+
+        RETURN(rc);
+}
+
 static inline int obd_punch_rqset(struct obd_export *exp,
                                   struct obd_info *oinfo,
                                   struct obd_trans_info *oti)
@@ -1422,6 +1455,20 @@ static inline int obd_change_cbdata(struct obd_export *exp,
         RETURN(rc);
 }
 
+static inline int obd_find_cbdata(struct obd_export *exp,
+                                  struct lov_stripe_md *lsm,
+                                  ldlm_iterator_t it, void *data)
+{
+        int rc;
+        ENTRY;
+
+        EXP_CHECK_DT_OP(exp, find_cbdata);
+        EXP_COUNTER_INCREMENT(exp, find_cbdata);
+
+        rc = OBP(exp->exp_obd, find_cbdata)(exp, lsm, it, data);
+        RETURN(rc);
+}
+
 static inline int obd_cancel(struct obd_export *exp,
                              struct lov_stripe_md *ea, __u32 mode,
                              struct lustre_handle *lockh)
@@ -1438,7 +1485,8 @@ static inline int obd_cancel(struct obd_export *exp,
 
 static inline int obd_cancel_unused(struct obd_export *exp,
                                     struct lov_stripe_md *ea,
-                                    int flags, void *opaque)
+                                    ldlm_cancel_flags_t flags,
+                                    void *opaque)
 {
         int rc;
         ENTRY;
@@ -1592,7 +1640,8 @@ static inline int obd_quotactl(struct obd_export *exp,
 
 static inline int obd_quota_adjust_qunit(struct obd_export *exp,
                                          struct quota_adjust_qunit *oqaq,
-                                         struct lustre_quota_ctxt *qctxt)
+                                         struct lustre_quota_ctxt *qctxt,
+                                         struct ptlrpc_request_set *set)
 {
 #if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
         struct timeval work_start;
@@ -1609,7 +1658,7 @@ static inline int obd_quota_adjust_qunit(struct obd_export *exp,
         EXP_CHECK_DT_OP(exp, quota_adjust_qunit);
         EXP_COUNTER_INCREMENT(exp, quota_adjust_qunit);
 
-        rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt);
+        rc = OBP(exp->exp_obd, quota_adjust_qunit)(exp, oqaq, qctxt, set);
 
 #if defined(LPROCFS) && defined(HAVE_QUOTA_SUPPORT)
         if (qctxt) {
@@ -1775,6 +1824,18 @@ static inline int md_change_cbdata(struct obd_export *exp,
         RETURN(rc);
 }
 
+static inline int md_find_cbdata(struct obd_export *exp,
+                                 const struct lu_fid *fid,
+                                 ldlm_iterator_t it, void *data)
+{
+        int rc;
+        ENTRY;
+        EXP_CHECK_MD_OP(exp, find_cbdata);
+        EXP_MD_COUNTER_INCREMENT(exp, find_cbdata);
+        rc = MDP(exp->exp_obd, find_cbdata)(exp, fid, it, data);
+        RETURN(rc);
+}
+
 static inline int md_close(struct obd_export *exp, struct md_op_data *op_data,
                            struct md_open_data *mod,
                            struct ptlrpc_request **request)
@@ -2028,7 +2089,9 @@ static inline int md_set_lock_data(struct obd_export *exp,
 static inline int md_cancel_unused(struct obd_export *exp,
                                    const struct lu_fid *fid,
                                    ldlm_policy_data_t *policy,
-                                   ldlm_mode_t mode, int flags, void *opaque)
+                                   ldlm_mode_t mode,
+                                   ldlm_cancel_flags_t flags,
+                                   void *opaque)
 {
         int rc;
         ENTRY;
@@ -2115,13 +2178,13 @@ static inline int md_intent_getattr_async(struct obd_export *exp,
 
 static inline int md_revalidate_lock(struct obd_export *exp,
                                      struct lookup_intent *it,
-                                     struct lu_fid *fid)
+                                     struct lu_fid *fid, __u32 *bits)
 {
         int rc;
         ENTRY;
         EXP_CHECK_MD_OP(exp, revalidate_lock);
         EXP_MD_COUNTER_INCREMENT(exp, revalidate_lock);
-        rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid);
+        rc = MDP(exp->exp_obd, revalidate_lock)(exp, it, fid, bits);
         RETURN(rc);
 }
 
@@ -2136,7 +2199,7 @@ extern cfs_mem_cache_t *obdo_cachep;
 
 #define OBDO_ALLOC(ptr)                                                       \
 do {                                                                          \
-        OBD_SLAB_ALLOC_PTR((ptr), obdo_cachep);                               \
+        OBD_SLAB_ALLOC_PTR_GFP((ptr), obdo_cachep, CFS_ALLOC_IO);             \
 } while(0)
 
 #define OBDO_FREE(ptr)                                                        \
@@ -2181,6 +2244,6 @@ int mea_name2idx(struct lmv_stripe_md *mea, const char *name, int namelen);
 int raw_name2idx(int hashtype, int count, const char *name, int namelen);
 
 /* prng.c */
-void ll_generate_random_uuid(class_uuid_t uuid_out);
+#define ll_generate_random_uuid(uuid_out) cfs_get_random_bytes(uuid_out, sizeof(class_uuid_t))
 
 #endif /* __LINUX_OBD_CLASS_H */