xref: /openbmc/linux/fs/afs/internal.h (revision 754661f1)
11da177e4SLinus Torvalds /* internal.h: internal AFS stuff
21da177e4SLinus Torvalds  *
31da177e4SLinus Torvalds  * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved.
41da177e4SLinus Torvalds  * Written by David Howells (dhowells@redhat.com)
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  * This program is free software; you can redistribute it and/or
71da177e4SLinus Torvalds  * modify it under the terms of the GNU General Public License
81da177e4SLinus Torvalds  * as published by the Free Software Foundation; either version
91da177e4SLinus Torvalds  * 2 of the License, or (at your option) any later version.
101da177e4SLinus Torvalds  */
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #ifndef AFS_INTERNAL_H
131da177e4SLinus Torvalds #define AFS_INTERNAL_H
141da177e4SLinus Torvalds 
151da177e4SLinus Torvalds #include <linux/compiler.h>
161da177e4SLinus Torvalds #include <linux/kernel.h>
171da177e4SLinus Torvalds #include <linux/fs.h>
181da177e4SLinus Torvalds #include <linux/pagemap.h>
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds /*
211da177e4SLinus Torvalds  * debug tracing
221da177e4SLinus Torvalds  */
231da177e4SLinus Torvalds #define kenter(FMT, a...)	printk("==> %s("FMT")\n",__FUNCTION__ , ## a)
241da177e4SLinus Torvalds #define kleave(FMT, a...)	printk("<== %s()"FMT"\n",__FUNCTION__ , ## a)
251da177e4SLinus Torvalds #define kdebug(FMT, a...)	printk(FMT"\n" , ## a)
261da177e4SLinus Torvalds #define kproto(FMT, a...)	printk("### "FMT"\n" , ## a)
271da177e4SLinus Torvalds #define knet(FMT, a...)		printk(FMT"\n" , ## a)
281da177e4SLinus Torvalds 
291da177e4SLinus Torvalds #ifdef __KDEBUG
301da177e4SLinus Torvalds #define _enter(FMT, a...)	kenter(FMT , ## a)
311da177e4SLinus Torvalds #define _leave(FMT, a...)	kleave(FMT , ## a)
321da177e4SLinus Torvalds #define _debug(FMT, a...)	kdebug(FMT , ## a)
331da177e4SLinus Torvalds #define _proto(FMT, a...)	kproto(FMT , ## a)
341da177e4SLinus Torvalds #define _net(FMT, a...)		knet(FMT , ## a)
351da177e4SLinus Torvalds #else
361da177e4SLinus Torvalds #define _enter(FMT, a...)	do { } while(0)
371da177e4SLinus Torvalds #define _leave(FMT, a...)	do { } while(0)
381da177e4SLinus Torvalds #define _debug(FMT, a...)	do { } while(0)
391da177e4SLinus Torvalds #define _proto(FMT, a...)	do { } while(0)
401da177e4SLinus Torvalds #define _net(FMT, a...)		do { } while(0)
411da177e4SLinus Torvalds #endif
421da177e4SLinus Torvalds 
431da177e4SLinus Torvalds static inline void afs_discard_my_signals(void)
441da177e4SLinus Torvalds {
451da177e4SLinus Torvalds 	while (signal_pending(current)) {
461da177e4SLinus Torvalds 		siginfo_t sinfo;
471da177e4SLinus Torvalds 
481da177e4SLinus Torvalds 		spin_lock_irq(&current->sighand->siglock);
491da177e4SLinus Torvalds 		dequeue_signal(current,&current->blocked, &sinfo);
501da177e4SLinus Torvalds 		spin_unlock_irq(&current->sighand->siglock);
511da177e4SLinus Torvalds 	}
521da177e4SLinus Torvalds }
531da177e4SLinus Torvalds 
541da177e4SLinus Torvalds /*
551da177e4SLinus Torvalds  * cell.c
561da177e4SLinus Torvalds  */
571da177e4SLinus Torvalds extern struct rw_semaphore afs_proc_cells_sem;
581da177e4SLinus Torvalds extern struct list_head afs_proc_cells;
591da177e4SLinus Torvalds #ifdef AFS_CACHING_SUPPORT
601da177e4SLinus Torvalds extern struct cachefs_index_def afs_cache_cell_index_def;
611da177e4SLinus Torvalds #endif
621da177e4SLinus Torvalds 
631da177e4SLinus Torvalds /*
641da177e4SLinus Torvalds  * dir.c
651da177e4SLinus Torvalds  */
66754661f1SArjan van de Ven extern const struct inode_operations afs_dir_inode_operations;
674b6f5d20SArjan van de Ven extern const struct file_operations afs_dir_file_operations;
681da177e4SLinus Torvalds 
691da177e4SLinus Torvalds /*
701da177e4SLinus Torvalds  * file.c
711da177e4SLinus Torvalds  */
72f5e54d6eSChristoph Hellwig extern const struct address_space_operations afs_fs_aops;
73754661f1SArjan van de Ven extern const struct inode_operations afs_file_inode_operations;
741da177e4SLinus Torvalds 
751da177e4SLinus Torvalds #ifdef AFS_CACHING_SUPPORT
761da177e4SLinus Torvalds extern int afs_cache_get_page_cookie(struct page *page,
771da177e4SLinus Torvalds 				     struct cachefs_page **_page_cookie);
781da177e4SLinus Torvalds #endif
791da177e4SLinus Torvalds 
801da177e4SLinus Torvalds /*
811da177e4SLinus Torvalds  * inode.c
821da177e4SLinus Torvalds  */
831da177e4SLinus Torvalds extern int afs_iget(struct super_block *sb, struct afs_fid *fid,
841da177e4SLinus Torvalds 		    struct inode **_inode);
851da177e4SLinus Torvalds extern int afs_inode_getattr(struct vfsmount *mnt, struct dentry *dentry,
861da177e4SLinus Torvalds 			     struct kstat *stat);
871da177e4SLinus Torvalds extern void afs_clear_inode(struct inode *inode);
881da177e4SLinus Torvalds 
891da177e4SLinus Torvalds /*
901da177e4SLinus Torvalds  * key_afs.c
911da177e4SLinus Torvalds  */
921da177e4SLinus Torvalds #ifdef CONFIG_KEYS
931da177e4SLinus Torvalds extern int afs_key_register(void);
941da177e4SLinus Torvalds extern void afs_key_unregister(void);
951da177e4SLinus Torvalds #endif
961da177e4SLinus Torvalds 
971da177e4SLinus Torvalds /*
981da177e4SLinus Torvalds  * main.c
991da177e4SLinus Torvalds  */
1001da177e4SLinus Torvalds #ifdef AFS_CACHING_SUPPORT
1011da177e4SLinus Torvalds extern struct cachefs_netfs afs_cache_netfs;
1021da177e4SLinus Torvalds #endif
1031da177e4SLinus Torvalds 
1041da177e4SLinus Torvalds /*
1051da177e4SLinus Torvalds  * mntpt.c
1061da177e4SLinus Torvalds  */
107754661f1SArjan van de Ven extern const struct inode_operations afs_mntpt_inode_operations;
1084b6f5d20SArjan van de Ven extern const struct file_operations afs_mntpt_file_operations;
1091da177e4SLinus Torvalds extern struct afs_timer afs_mntpt_expiry_timer;
1101da177e4SLinus Torvalds extern struct afs_timer_ops afs_mntpt_expiry_timer_ops;
1111da177e4SLinus Torvalds extern unsigned long afs_mntpt_expiry_timeout;
1121da177e4SLinus Torvalds 
1131da177e4SLinus Torvalds extern int afs_mntpt_check_symlink(struct afs_vnode *vnode);
1141da177e4SLinus Torvalds 
1151da177e4SLinus Torvalds /*
1161da177e4SLinus Torvalds  * super.c
1171da177e4SLinus Torvalds  */
1181da177e4SLinus Torvalds extern int afs_fs_init(void);
1191da177e4SLinus Torvalds extern void afs_fs_exit(void);
1201da177e4SLinus Torvalds 
1211da177e4SLinus Torvalds #define AFS_CB_HASH_COUNT (PAGE_SIZE / sizeof(struct list_head))
1221da177e4SLinus Torvalds 
1231da177e4SLinus Torvalds extern struct list_head afs_cb_hash_tbl[];
1241da177e4SLinus Torvalds extern spinlock_t afs_cb_hash_lock;
1251da177e4SLinus Torvalds 
1261da177e4SLinus Torvalds #define afs_cb_hash(SRV,FID) \
1271da177e4SLinus Torvalds 	afs_cb_hash_tbl[((unsigned long)(SRV) + \
1281da177e4SLinus Torvalds 			(FID)->vid + (FID)->vnode + (FID)->unique) % \
1291da177e4SLinus Torvalds 			AFS_CB_HASH_COUNT]
1301da177e4SLinus Torvalds 
1311da177e4SLinus Torvalds /*
1321da177e4SLinus Torvalds  * proc.c
1331da177e4SLinus Torvalds  */
1341da177e4SLinus Torvalds extern int afs_proc_init(void);
1351da177e4SLinus Torvalds extern void afs_proc_cleanup(void);
1361da177e4SLinus Torvalds extern int afs_proc_cell_setup(struct afs_cell *cell);
1371da177e4SLinus Torvalds extern void afs_proc_cell_remove(struct afs_cell *cell);
1381da177e4SLinus Torvalds 
1391da177e4SLinus Torvalds #endif /* AFS_INTERNAL_H */
140