]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 LT |
2 | #ifndef __CODA_PSDEV_H |
3 | #define __CODA_PSDEV_H | |
4 | ||
33f60e96 | 5 | #include <linux/backing-dev.h> |
6dc280eb | 6 | #include <linux/magic.h> |
da47c19e | 7 | #include <linux/mutex.h> |
6dc280eb JH |
8 | |
9 | #define CODA_PSDEV_MAJOR 67 | |
10 | #define MAX_CODADEVS 5 /* how many do we allow */ | |
33f60e96 | 11 | |
1da177e4 LT |
12 | struct kstatfs; |
13 | ||
f90fb3c7 MR |
14 | /* messages between coda filesystem in kernel and Venus */ |
15 | struct upc_req { | |
16 | struct list_head uc_chain; | |
17 | caddr_t uc_data; | |
18 | u_short uc_flags; | |
19 | u_short uc_inSize; /* Size is at most 5000 bytes */ | |
20 | u_short uc_outSize; | |
21 | u_short uc_opcode; /* copied from data to save lookup */ | |
22 | int uc_unique; | |
23 | wait_queue_head_t uc_sleep; /* process' wait queue */ | |
24 | }; | |
1da177e4 | 25 | |
2fe7491d JH |
26 | #define CODA_REQ_ASYNC 0x1 |
27 | #define CODA_REQ_READ 0x2 | |
28 | #define CODA_REQ_WRITE 0x4 | |
29 | #define CODA_REQ_ABORT 0x8 | |
30 | ||
8fc8b9df DH |
31 | /* communication pending/processing queues */ |
32 | struct venus_comm { | |
33 | u_long vc_seq; | |
34 | wait_queue_head_t vc_waitq; /* Venus wait queue */ | |
35 | struct list_head vc_pending; | |
36 | struct list_head vc_processing; | |
37 | int vc_inuse; | |
38 | struct super_block *vc_sb; | |
39 | struct mutex vc_mutex; | |
40 | }; | |
41 | ||
a1b0aa87 | 42 | static inline struct venus_comm *coda_vcp(struct super_block *sb) |
1da177e4 | 43 | { |
a1b0aa87 | 44 | return (struct venus_comm *)((sb)->s_fs_info); |
1da177e4 LT |
45 | } |
46 | ||
1da177e4 LT |
47 | /* upcalls */ |
48 | int venus_rootfid(struct super_block *sb, struct CodaFid *fidp); | |
49 | int venus_getattr(struct super_block *sb, struct CodaFid *fid, | |
50 | struct coda_vattr *attr); | |
51 | int venus_setattr(struct super_block *, struct CodaFid *, struct coda_vattr *); | |
8fc8b9df DH |
52 | int venus_lookup(struct super_block *sb, struct CodaFid *fid, |
53 | const char *name, int length, int *type, | |
1da177e4 | 54 | struct CodaFid *resfid); |
1da177e4 | 55 | int venus_close(struct super_block *sb, struct CodaFid *fid, int flags, |
d83f5901 | 56 | kuid_t uid); |
1da177e4 LT |
57 | int venus_open(struct super_block *sb, struct CodaFid *fid, int flags, |
58 | struct file **f); | |
8fc8b9df DH |
59 | int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid, |
60 | const char *name, int length, | |
1da177e4 | 61 | struct CodaFid *newfid, struct coda_vattr *attrs); |
8fc8b9df | 62 | int venus_create(struct super_block *sb, struct CodaFid *dirfid, |
1da177e4 | 63 | const char *name, int length, int excl, int mode, |
8fc8b9df DH |
64 | struct CodaFid *newfid, struct coda_vattr *attrs); |
65 | int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid, | |
1da177e4 | 66 | const char *name, int length); |
8fc8b9df | 67 | int venus_remove(struct super_block *sb, struct CodaFid *dirfid, |
1da177e4 | 68 | const char *name, int length); |
8fc8b9df | 69 | int venus_readlink(struct super_block *sb, struct CodaFid *fid, |
1da177e4 | 70 | char *buffer, int *length); |
8fc8b9df DH |
71 | int venus_rename(struct super_block *sb, struct CodaFid *new_fid, |
72 | struct CodaFid *old_fid, size_t old_length, | |
73 | size_t new_length, const char *old_name, | |
1da177e4 | 74 | const char *new_name); |
8fc8b9df | 75 | int venus_link(struct super_block *sb, struct CodaFid *fid, |
1da177e4 LT |
76 | struct CodaFid *dirfid, const char *name, int len ); |
77 | int venus_symlink(struct super_block *sb, struct CodaFid *fid, | |
78 | const char *name, int len, const char *symname, int symlen); | |
79 | int venus_access(struct super_block *sb, struct CodaFid *fid, int mask); | |
80 | int venus_pioctl(struct super_block *sb, struct CodaFid *fid, | |
81 | unsigned int cmd, struct PioctlData *data); | |
6e51f8aa JH |
82 | int coda_downcall(struct venus_comm *vcp, int opcode, union outputArgs *out, |
83 | size_t nbytes); | |
1da177e4 | 84 | int venus_fsync(struct super_block *sb, struct CodaFid *fid); |
726c3342 | 85 | int venus_statfs(struct dentry *dentry, struct kstatfs *sfs); |
a9fba24c PC |
86 | int venus_access_intent(struct super_block *sb, struct CodaFid *fid, |
87 | bool *access_intent_supported, | |
88 | size_t count, loff_t ppos, int type); | |
1da177e4 | 89 | |
7e7f4eae JSR |
90 | /* |
91 | * Statistics | |
92 | */ | |
93 | ||
94 | extern struct venus_comm coda_comms[]; | |
1da177e4 | 95 | #endif |