Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/fs/cifs/cifsfs.h
15109 views
1
/*
2
* fs/cifs/cifsfs.h
3
*
4
* Copyright (c) International Business Machines Corp., 2002, 2007
5
* Author(s): Steve French ([email protected])
6
*
7
* This library is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU Lesser General Public License as published
9
* by the Free Software Foundation; either version 2.1 of the License, or
10
* (at your option) any later version.
11
*
12
* This library is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
15
* the GNU Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public License
18
* along with this library; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*/
21
22
#ifndef _CIFSFS_H
23
#define _CIFSFS_H
24
25
#define ROOT_I 2
26
27
/*
28
* ino_t is 32-bits on 32-bit arch. We have to squash the 64-bit value down
29
* so that it will fit.
30
*/
31
static inline ino_t
32
cifs_uniqueid_to_ino_t(u64 fileid)
33
{
34
ino_t ino = (ino_t) fileid;
35
if (sizeof(ino_t) < sizeof(u64))
36
ino ^= fileid >> (sizeof(u64)-sizeof(ino_t)) * 8;
37
return ino;
38
}
39
40
extern struct file_system_type cifs_fs_type;
41
extern const struct address_space_operations cifs_addr_ops;
42
extern const struct address_space_operations cifs_addr_ops_smallbuf;
43
44
/* Functions related to super block operations */
45
extern void cifs_sb_active(struct super_block *sb);
46
extern void cifs_sb_deactive(struct super_block *sb);
47
48
/* Functions related to inodes */
49
extern const struct inode_operations cifs_dir_inode_ops;
50
extern struct inode *cifs_root_iget(struct super_block *);
51
extern int cifs_create(struct inode *, struct dentry *, int,
52
struct nameidata *);
53
extern struct dentry *cifs_lookup(struct inode *, struct dentry *,
54
struct nameidata *);
55
extern int cifs_unlink(struct inode *dir, struct dentry *dentry);
56
extern int cifs_hardlink(struct dentry *, struct inode *, struct dentry *);
57
extern int cifs_mknod(struct inode *, struct dentry *, int, dev_t);
58
extern int cifs_mkdir(struct inode *, struct dentry *, int);
59
extern int cifs_rmdir(struct inode *, struct dentry *);
60
extern int cifs_rename(struct inode *, struct dentry *, struct inode *,
61
struct dentry *);
62
extern int cifs_revalidate_file_attr(struct file *filp);
63
extern int cifs_revalidate_dentry_attr(struct dentry *);
64
extern int cifs_revalidate_file(struct file *filp);
65
extern int cifs_revalidate_dentry(struct dentry *);
66
extern int cifs_invalidate_mapping(struct inode *inode);
67
extern int cifs_getattr(struct vfsmount *, struct dentry *, struct kstat *);
68
extern int cifs_setattr(struct dentry *, struct iattr *);
69
70
extern const struct inode_operations cifs_file_inode_ops;
71
extern const struct inode_operations cifs_symlink_inode_ops;
72
extern const struct inode_operations cifs_dfs_referral_inode_operations;
73
74
75
/* Functions related to files and directories */
76
extern const struct file_operations cifs_file_ops;
77
extern const struct file_operations cifs_file_direct_ops; /* if directio mnt */
78
extern const struct file_operations cifs_file_strict_ops; /* if strictio mnt */
79
extern const struct file_operations cifs_file_nobrl_ops; /* no brlocks */
80
extern const struct file_operations cifs_file_direct_nobrl_ops;
81
extern const struct file_operations cifs_file_strict_nobrl_ops;
82
extern int cifs_open(struct inode *inode, struct file *file);
83
extern int cifs_close(struct inode *inode, struct file *file);
84
extern int cifs_closedir(struct inode *inode, struct file *file);
85
extern ssize_t cifs_user_readv(struct kiocb *iocb, const struct iovec *iov,
86
unsigned long nr_segs, loff_t pos);
87
extern ssize_t cifs_strict_readv(struct kiocb *iocb, const struct iovec *iov,
88
unsigned long nr_segs, loff_t pos);
89
extern ssize_t cifs_user_writev(struct kiocb *iocb, const struct iovec *iov,
90
unsigned long nr_segs, loff_t pos);
91
extern ssize_t cifs_strict_writev(struct kiocb *iocb, const struct iovec *iov,
92
unsigned long nr_segs, loff_t pos);
93
extern int cifs_lock(struct file *, int, struct file_lock *);
94
extern int cifs_fsync(struct file *, int);
95
extern int cifs_strict_fsync(struct file *, int);
96
extern int cifs_flush(struct file *, fl_owner_t id);
97
extern int cifs_file_mmap(struct file * , struct vm_area_struct *);
98
extern int cifs_file_strict_mmap(struct file * , struct vm_area_struct *);
99
extern const struct file_operations cifs_dir_ops;
100
extern int cifs_dir_open(struct inode *inode, struct file *file);
101
extern int cifs_readdir(struct file *file, void *direntry, filldir_t filldir);
102
103
/* Functions related to dir entries */
104
extern const struct dentry_operations cifs_dentry_ops;
105
extern const struct dentry_operations cifs_ci_dentry_ops;
106
107
#ifdef CONFIG_CIFS_DFS_UPCALL
108
extern struct vfsmount *cifs_dfs_d_automount(struct path *path);
109
#else
110
#define cifs_dfs_d_automount NULL
111
#endif
112
113
/* Functions related to symlinks */
114
extern void *cifs_follow_link(struct dentry *direntry, struct nameidata *nd);
115
extern void cifs_put_link(struct dentry *direntry,
116
struct nameidata *nd, void *);
117
extern int cifs_readlink(struct dentry *direntry, char __user *buffer,
118
int buflen);
119
extern int cifs_symlink(struct inode *inode, struct dentry *direntry,
120
const char *symname);
121
extern int cifs_removexattr(struct dentry *, const char *);
122
extern int cifs_setxattr(struct dentry *, const char *, const void *,
123
size_t, int);
124
extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t);
125
extern ssize_t cifs_listxattr(struct dentry *, char *, size_t);
126
extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
127
128
#ifdef CIFS_NFSD_EXPORT
129
extern const struct export_operations cifs_export_ops;
130
#endif /* CIFS_NFSD_EXPORT */
131
132
#define CIFS_VERSION "1.74"
133
#endif /* _CIFSFS_H */
134
135