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