Whamcloud - gitweb
file upcall_cache.c was initially added on branch b1_4_bug3389.
[fs/lustre-release.git] / lustre / llite / llite_internal.h
index 8b6102d..bb7ea25 100644 (file)
@@ -72,7 +72,9 @@ struct ll_sb_info {
         struct list_head          ll_pglist;
 
         struct ll_ra_info         ll_ra_info;
-                                                                                                                                                                                                     
+
+        unsigned int              ll_remote;    /* remote client? */
+
         /* times spent waiting for locks in each call site.  These are
          * all protected by the ll_lock */
         struct obd_service_time   ll_read_stime;
@@ -91,13 +93,15 @@ struct ll_sb_info {
         struct semaphore          ll_gns_sem;
         spinlock_t                ll_gns_lock;
         wait_queue_head_t         ll_gns_waitq;
+        atomic_t                  ll_gns_enabled;
         int                       ll_gns_state;
         struct timer_list         ll_gns_timer;
         struct list_head          ll_gns_sbi_head;
+        struct completion         ll_gns_mount_finished;
+       struct dentry            *ll_gns_pending_dentry;
 
         unsigned long             ll_gns_tick;
         unsigned long             ll_gns_timeout;
-        struct completion         ll_gns_mount_finished;
 
         /* path to upcall */
         char                      ll_gns_upcall[PATH_MAX];
@@ -131,6 +135,7 @@ struct ll_readahead_state {
 extern kmem_cache_t *ll_file_data_slab;
 extern kmem_cache_t *ll_intent_slab;
 struct lustre_handle;
+
 struct ll_file_data {
         struct ll_readahead_state fd_ras;
         __u32 fd_flags;
@@ -486,4 +491,33 @@ ll_prepare_mdc_data(struct mdc_op_data *data, struct inode *i1,
         data->mod_time = LTIME_S(CURRENT_TIME);
 }
 
+#if 0
+/* 
+ * this was needed for catching correct calling place of ll_intent_alloc() with
+ * missed ll_intent_free() causing memory leak. --umka
+ */
+#define ll_intent_alloc(it)                                             \
+        ({                                                              \
+                int err;                                                \
+                OBD_SLAB_ALLOC((it)->d.fs_data, ll_intent_slab, SLAB_KERNEL, \
+                               sizeof(struct lustre_intent_data));      \
+                if (!(it)->d.fs_data) {                                 \
+                        err = -ENOMEM;                                  \
+                } else {                                                \
+                        err = 0;                                        \
+                }                                                       \
+                (it)->it_op_release = ll_intent_release;                \
+                err;                                                    \
+        })
+
+#define ll_intent_free(it)                                      \
+        do {                                                    \
+                if ((it)->d.fs_data) {                                  \
+                        OBD_SLAB_FREE((it)->d.fs_data, ll_intent_slab,  \
+                                      sizeof(struct lustre_intent_data)); \
+                        (it)->d.fs_data = NULL;                         \
+                }                                                       \
+        } while (0)
+#endif
+
 #endif /* LLITE_INTERNAL_H */