Whamcloud - gitweb
LU-2675 build: assume __linux__ and __KERNEL__
[fs/lustre-release.git] / lustre / include / lustre_mdc.h
index 4f69667..85f3f31 100644 (file)
  * @{
  */
 
-#ifdef __KERNEL__
-# include <linux/fs.h>
-# include <linux/dcache.h>
-# ifdef CONFIG_FS_POSIX_ACL
-#  include <linux/posix_acl_xattr.h>
-# endif /* CONFIG_FS_POSIX_ACL */
-# include <linux/lustre_intent.h>
-#endif /* __KERNEL__ */
+#include <linux/fs.h>
+#include <linux/dcache.h>
+#ifdef CONFIG_FS_POSIX_ACL
+# include <linux/posix_acl_xattr.h>
+#endif /* CONFIG_FS_POSIX_ACL */
+#include <linux/lustre_intent.h>
 #include <lustre_handles.h>
 #include <libcfs/libcfs.h>
 #include <obd_class.h>
@@ -107,7 +105,7 @@ static inline void mdc_get_rpc_lock(struct mdc_rpc_lock *lck,
        ENTRY;
 
        if (it != NULL && (it->it_op == IT_GETATTR || it->it_op == IT_LOOKUP ||
-                          it->it_op == IT_LAYOUT))
+                          it->it_op == IT_LAYOUT || it->it_op == IT_READDIR))
                return;
 
        /* This would normally block until the existing request finishes.
@@ -145,7 +143,7 @@ static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck,
                                    struct lookup_intent *it)
 {
        if (it != NULL && (it->it_op == IT_GETATTR || it->it_op == IT_LOOKUP ||
-                          it->it_op == IT_LAYOUT))
+                          it->it_op == IT_LAYOUT || it->it_op == IT_READDIR))
                goto out;
 
        if (lck->rpcl_it == MDC_FAKE_RPCL_IT) { /* OBD_FAIL_MDC_RPCS_SEM */
@@ -167,26 +165,32 @@ static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck,
        EXIT;
 }
 
+/* Update the maximum observed easize and cookiesize.  The default easize
+ * and cookiesize is initialized to the minimum value but allowed to grow
+ * up to a single page in size if required to handle the common case.
+ */
 static inline void mdc_update_max_ea_from_body(struct obd_export *exp,
-                                               struct mdt_body *body)
+                                              struct mdt_body *body)
 {
-        if (body->valid & OBD_MD_FLMODEASIZE) {
-                if (exp->exp_obd->u.cli.cl_max_mds_easize < body->max_mdsize)
-                        exp->exp_obd->u.cli.cl_max_mds_easize =
-                                                body->max_mdsize;
-                if (exp->exp_obd->u.cli.cl_max_mds_cookiesize <
-                                                body->max_cookiesize)
-                        exp->exp_obd->u.cli.cl_max_mds_cookiesize =
-                                                body->max_cookiesize;
-        }
+       if (body->mbo_valid & OBD_MD_FLMODEASIZE) {
+               struct client_obd *cli = &exp->exp_obd->u.cli;
+
+               if (cli->cl_max_mds_easize < body->mbo_max_mdsize) {
+                       cli->cl_max_mds_easize = body->mbo_max_mdsize;
+                       cli->cl_default_mds_easize =
+                               min_t(__u32, body->mbo_max_mdsize,
+                                     PAGE_CACHE_SIZE);
+               }
+               if (cli->cl_max_mds_cookiesize < body->mbo_max_cookiesize) {
+                       cli->cl_max_mds_cookiesize = body->mbo_max_cookiesize;
+                       cli->cl_default_mds_cookiesize =
+                           min_t(__u32, body->mbo_max_cookiesize,
+                                 PAGE_CACHE_SIZE);
+               }
+       }
 }
 
 
-struct mdc_cache_waiter {
-       cfs_list_t              mcw_entry;
-       wait_queue_head_t             mcw_waitq;
-};
-
 /* mdc/mdc_locks.c */
 int it_disposition(const struct lookup_intent *it, int flag);
 void it_clear_disposition(struct lookup_intent *it, int flag);