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