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(¤t->sighand->siglock); 491da177e4SLinus Torvalds dequeue_signal(current,¤t->blocked, &sinfo); 501da177e4SLinus Torvalds spin_unlock_irq(¤t->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