unsigned long ll_read_ahead_pages;
unsigned long ll_max_read_ahead_pages;
+ /* list of GNS mounts; protected by the dcache_lock */
+ struct list_head ll_mnt_list;
+
+ struct semaphore ll_gns_sem;
+ wait_queue_head_t ll_gns_waitq;
+ struct completion ll_gns_completion;
+ int ll_gns_state;
+ struct timer_list ll_gns_timer;
+ struct list_head ll_gns_sbi_head;
};
+#define LL_GNS_STATE_IDLE 1100
+#define LL_GNS_STATE_MOUNTING 1101
+#define LL_GNS_STATE_FINISHED 1102
+
struct ll_readahead_state {
spinlock_t ras_lock;
unsigned long ras_last_readpage, ras_consecutive;
void ll_frob_intent(struct lookup_intent **itp, struct lookup_intent *deft);
void ll_lookup_finish_locks(struct lookup_intent *it, struct dentry *dentry);
-/* llite/llite_lib.c */
+/* llite/llite_gns.c */
+int ll_finish_gns(struct ll_sb_info *sbi);
+int fill_page_with_path(struct dentry *, struct vfsmount *, char **pagep);
+int ll_dir_process_mount_object(struct dentry *, struct vfsmount *);
+int ll_gns_umount_all(struct ll_sb_info *sbi, int timeout);
+void ll_gns_timer_callback(unsigned long data);
+void ll_gns_add_timer(struct ll_sb_info *sbi);
+void ll_gns_del_timer(struct ll_sb_info *sbi);
+int ll_gns_start_thread(void);
+void ll_gns_stop_thread(void);
+/* llite/llite_lib.c */
extern struct super_operations lustre_super_operations;
char *ll_read_opt(const char *opt, char *data);