| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  *  smb_fs_sb.h | 
 | 3 |  * | 
 | 4 |  *  Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke | 
 | 5 |  *  Copyright (C) 1997 by Volker Lendecke | 
 | 6 |  * | 
 | 7 |  */ | 
 | 8 |  | 
 | 9 | #ifndef _SMB_FS_SB | 
 | 10 | #define _SMB_FS_SB | 
 | 11 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 12 | #include <linux/types.h> | 
| Jens Axboe | 424264b | 2010-04-22 12:37:07 +0200 | [diff] [blame] | 13 | #include <linux/backing-dev.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | #include <linux/smb.h> | 
 | 15 |  | 
 | 16 | /* | 
 | 17 |  * Upper limit on the total number of active smb_request structs. | 
 | 18 |  */ | 
 | 19 | #define MAX_REQUEST_HARD       256 | 
 | 20 |  | 
 | 21 | enum smb_receive_state { | 
 | 22 | 	SMB_RECV_START,		/* No data read, looking for length + sig */ | 
 | 23 | 	SMB_RECV_HEADER,	/* Reading the header data */ | 
 | 24 | 	SMB_RECV_HCOMPLETE,	/* Done with the header */ | 
 | 25 | 	SMB_RECV_PARAM,		/* Reading parameter words */ | 
 | 26 | 	SMB_RECV_DATA,		/* Reading data bytes */ | 
 | 27 | 	SMB_RECV_END,		/* End of request */ | 
 | 28 | 	SMB_RECV_DROP,		/* Dropping this SMB */ | 
 | 29 | 	SMB_RECV_REQUEST,	/* Received a request and not a reply */ | 
 | 30 | }; | 
 | 31 |  | 
 | 32 | /* structure access macros */ | 
 | 33 | #define server_from_inode(inode) SMB_SB((inode)->i_sb) | 
 | 34 | #define server_from_dentry(dentry) SMB_SB((dentry)->d_sb) | 
 | 35 | #define SB_of(server) ((server)->super_block) | 
 | 36 |  | 
 | 37 | struct smb_sb_info { | 
 | 38 | 	/* List of all smbfs superblocks */ | 
 | 39 | 	struct list_head entry; | 
 | 40 |  | 
 | 41 |         enum smb_conn_state state; | 
 | 42 | 	struct file * sock_file; | 
 | 43 | 	int conn_error; | 
 | 44 | 	enum smb_receive_state rstate; | 
 | 45 |  | 
 | 46 | 	atomic_t nr_requests; | 
 | 47 | 	struct list_head xmitq; | 
 | 48 | 	struct list_head recvq; | 
 | 49 | 	u16 mid; | 
 | 50 |  | 
 | 51 |         struct smb_mount_data_kernel *mnt; | 
 | 52 |  | 
 | 53 | 	/* Connections are counted. Each time a new socket arrives, | 
 | 54 | 	 * generation is incremented. | 
 | 55 | 	 */ | 
 | 56 | 	unsigned int generation; | 
| Eric W. Biederman | a71113d | 2006-12-13 00:35:10 -0800 | [diff] [blame] | 57 | 	struct pid *conn_pid; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 58 | 	struct smb_conn_opt opt; | 
 | 59 | 	wait_queue_head_t conn_wq; | 
 | 60 | 	int conn_complete; | 
 | 61 | 	struct semaphore sem; | 
 | 62 |  | 
 | 63 | 	unsigned char      header[SMB_HEADER_LEN + 20*2 + 2]; | 
 | 64 | 	u32                header_len; | 
 | 65 | 	u32                smb_len; | 
 | 66 | 	u32                smb_read; | 
 | 67 |  | 
 | 68 |         /* We use our own data_ready callback, but need the original one */ | 
 | 69 |         void *data_ready; | 
 | 70 |  | 
 | 71 | 	/* nls pointers for codepage conversions */ | 
 | 72 | 	struct nls_table *remote_nls; | 
 | 73 | 	struct nls_table *local_nls; | 
 | 74 |  | 
 | 75 | 	struct smb_ops *ops; | 
 | 76 |  | 
 | 77 | 	struct super_block *super_block; | 
| Jens Axboe | 424264b | 2010-04-22 12:37:07 +0200 | [diff] [blame] | 78 |  | 
 | 79 | 	struct backing_dev_info bdi; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 80 | }; | 
 | 81 |  | 
 | 82 | static inline int | 
 | 83 | smb_lock_server_interruptible(struct smb_sb_info *server) | 
 | 84 | { | 
 | 85 | 	return down_interruptible(&(server->sem)); | 
 | 86 | } | 
 | 87 |  | 
 | 88 | static inline void | 
 | 89 | smb_lock_server(struct smb_sb_info *server) | 
 | 90 | { | 
 | 91 | 	down(&(server->sem)); | 
 | 92 | } | 
 | 93 |  | 
 | 94 | static inline void | 
 | 95 | smb_unlock_server(struct smb_sb_info *server) | 
 | 96 | { | 
 | 97 | 	up(&(server->sem)); | 
 | 98 | } | 
 | 99 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 100 | #endif |