1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * fs/cifs/cifs_fs_sb.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) International Business Machines Corp., 2002,2004 5*4882a593Smuzhiyun * Author(s): Steve French (sfrench@us.ibm.com) 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This library is free software; you can redistribute it and/or modify 8*4882a593Smuzhiyun * it under the terms of the GNU Lesser General Public License as published 9*4882a593Smuzhiyun * by the Free Software Foundation; either version 2.1 of the License, or 10*4882a593Smuzhiyun * (at your option) any later version. 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * This library is distributed in the hope that it will be useful, 13*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15*4882a593Smuzhiyun * the GNU Lesser General Public License for more details. 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun */ 18*4882a593Smuzhiyun #include <linux/rbtree.h> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #ifndef _CIFS_FS_SB_H 21*4882a593Smuzhiyun #define _CIFS_FS_SB_H 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include <linux/backing-dev.h> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define CIFS_MOUNT_NO_PERM 1 /* do not do client vfs_perm check */ 26*4882a593Smuzhiyun #define CIFS_MOUNT_SET_UID 2 /* set current's euid in create etc. */ 27*4882a593Smuzhiyun #define CIFS_MOUNT_SERVER_INUM 4 /* inode numbers from uniqueid from server */ 28*4882a593Smuzhiyun #define CIFS_MOUNT_DIRECT_IO 8 /* do not write nor read through page cache */ 29*4882a593Smuzhiyun #define CIFS_MOUNT_NO_XATTR 0x10 /* if set - disable xattr support */ 30*4882a593Smuzhiyun #define CIFS_MOUNT_MAP_SPECIAL_CHR 0x20 /* remap illegal chars in filenames */ 31*4882a593Smuzhiyun #define CIFS_MOUNT_POSIX_PATHS 0x40 /* Negotiate posix pathnames if possible*/ 32*4882a593Smuzhiyun #define CIFS_MOUNT_UNX_EMUL 0x80 /* Network compat with SFUnix emulation */ 33*4882a593Smuzhiyun #define CIFS_MOUNT_NO_BRL 0x100 /* No sending byte range locks to srv */ 34*4882a593Smuzhiyun #define CIFS_MOUNT_CIFS_ACL 0x200 /* send ACL requests to non-POSIX srv */ 35*4882a593Smuzhiyun #define CIFS_MOUNT_OVERR_UID 0x400 /* override uid returned from server */ 36*4882a593Smuzhiyun #define CIFS_MOUNT_OVERR_GID 0x800 /* override gid returned from server */ 37*4882a593Smuzhiyun #define CIFS_MOUNT_DYNPERM 0x1000 /* allow in-memory only mode setting */ 38*4882a593Smuzhiyun #define CIFS_MOUNT_NOPOSIXBRL 0x2000 /* mandatory not posix byte range lock */ 39*4882a593Smuzhiyun #define CIFS_MOUNT_NOSSYNC 0x4000 /* don't do slow SMBflush on every sync*/ 40*4882a593Smuzhiyun #define CIFS_MOUNT_FSCACHE 0x8000 /* local caching enabled */ 41*4882a593Smuzhiyun #define CIFS_MOUNT_MF_SYMLINKS 0x10000 /* Minshall+French Symlinks enabled */ 42*4882a593Smuzhiyun #define CIFS_MOUNT_MULTIUSER 0x20000 /* multiuser mount */ 43*4882a593Smuzhiyun #define CIFS_MOUNT_STRICT_IO 0x40000 /* strict cache mode */ 44*4882a593Smuzhiyun #define CIFS_MOUNT_RWPIDFORWARD 0x80000 /* use pid forwarding for rw */ 45*4882a593Smuzhiyun #define CIFS_MOUNT_POSIXACL 0x100000 /* mirror of SB_POSIXACL in mnt_cifs_flags */ 46*4882a593Smuzhiyun #define CIFS_MOUNT_CIFS_BACKUPUID 0x200000 /* backup intent bit for a user */ 47*4882a593Smuzhiyun #define CIFS_MOUNT_CIFS_BACKUPGID 0x400000 /* backup intent bit for a group */ 48*4882a593Smuzhiyun #define CIFS_MOUNT_MAP_SFM_CHR 0x800000 /* SFM/MAC mapping for illegal chars */ 49*4882a593Smuzhiyun #define CIFS_MOUNT_USE_PREFIX_PATH 0x1000000 /* make subpath with unaccessible 50*4882a593Smuzhiyun * root mountable 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun #define CIFS_MOUNT_UID_FROM_ACL 0x2000000 /* try to get UID via special SID */ 53*4882a593Smuzhiyun #define CIFS_MOUNT_NO_HANDLE_CACHE 0x4000000 /* disable caching dir handles */ 54*4882a593Smuzhiyun #define CIFS_MOUNT_NO_DFS 0x8000000 /* disable DFS resolving */ 55*4882a593Smuzhiyun #define CIFS_MOUNT_MODE_FROM_SID 0x10000000 /* retrieve mode from special ACE */ 56*4882a593Smuzhiyun #define CIFS_MOUNT_RO_CACHE 0x20000000 /* assumes share will not change */ 57*4882a593Smuzhiyun #define CIFS_MOUNT_RW_CACHE 0x40000000 /* assumes only client accessing */ 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun struct cifs_sb_info { 60*4882a593Smuzhiyun struct rb_root tlink_tree; 61*4882a593Smuzhiyun spinlock_t tlink_tree_lock; 62*4882a593Smuzhiyun struct tcon_link *master_tlink; 63*4882a593Smuzhiyun struct nls_table *local_nls; 64*4882a593Smuzhiyun unsigned int bsize; 65*4882a593Smuzhiyun unsigned int rsize; 66*4882a593Smuzhiyun unsigned int wsize; 67*4882a593Smuzhiyun unsigned long actimeo; /* attribute cache timeout (jiffies) */ 68*4882a593Smuzhiyun atomic_t active; 69*4882a593Smuzhiyun kuid_t mnt_uid; 70*4882a593Smuzhiyun kgid_t mnt_gid; 71*4882a593Smuzhiyun kuid_t mnt_backupuid; 72*4882a593Smuzhiyun kgid_t mnt_backupgid; 73*4882a593Smuzhiyun umode_t mnt_file_mode; 74*4882a593Smuzhiyun umode_t mnt_dir_mode; 75*4882a593Smuzhiyun unsigned int mnt_cifs_flags; 76*4882a593Smuzhiyun char *mountdata; /* options received at mount time or via DFS refs */ 77*4882a593Smuzhiyun struct delayed_work prune_tlinks; 78*4882a593Smuzhiyun struct rcu_head rcu; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun /* only used when CIFS_MOUNT_USE_PREFIX_PATH is set */ 81*4882a593Smuzhiyun char *prepath; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* 84*4882a593Smuzhiyun * Path initially provided by the mount call. We might connect 85*4882a593Smuzhiyun * to something different via DFS but we want to keep it to do 86*4882a593Smuzhiyun * failover properly. 87*4882a593Smuzhiyun */ 88*4882a593Smuzhiyun char *origin_fullpath; /* \\HOST\SHARE\[OPTIONAL PATH] */ 89*4882a593Smuzhiyun /* 90*4882a593Smuzhiyun * Indicate whether serverino option was turned off later 91*4882a593Smuzhiyun * (cifs_autodisable_serverino) in order to match new mounts. 92*4882a593Smuzhiyun */ 93*4882a593Smuzhiyun bool mnt_cifs_serverino_autodisabled; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun #endif /* _CIFS_FS_SB_H */ 96