smb_fs_sb.h 2.2 KB

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