Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | #ifndef __CODA_PSDEV_H |
2 | #define __CODA_PSDEV_H |
||
3 | |||
4 | #define CODA_PSDEV_MAJOR 67 |
||
5 | #define MAX_CODADEVS 5 /* how many do we allow */ |
||
6 | |||
7 | #define CODA_SUPER_MAGIC 0x73757245 |
||
8 | |||
9 | struct kstatfs; |
||
10 | |||
11 | struct coda_sb_info |
||
12 | { |
||
13 | struct venus_comm *sbi_vcomm; |
||
14 | }; |
||
15 | |||
16 | /* communication pending/processing queues */ |
||
17 | struct venus_comm { |
||
18 | u_long vc_seq; |
||
19 | wait_queue_head_t vc_waitq; /* Venus wait queue */ |
||
20 | struct list_head vc_pending; |
||
21 | struct list_head vc_processing; |
||
22 | int vc_inuse; |
||
23 | struct super_block *vc_sb; |
||
24 | }; |
||
25 | |||
26 | |||
27 | static inline struct coda_sb_info *coda_sbp(struct super_block *sb) |
||
28 | { |
||
29 | return ((struct coda_sb_info *)((sb)->s_fs_info)); |
||
30 | } |
||
31 | |||
32 | |||
33 | /* upcalls */ |
||
34 | int venus_rootfid(struct super_block *sb, struct CodaFid *fidp); |
||
35 | int venus_getattr(struct super_block *sb, struct CodaFid *fid, |
||
36 | struct coda_vattr *attr); |
||
37 | int venus_setattr(struct super_block *, struct CodaFid *, struct coda_vattr *); |
||
38 | int venus_lookup(struct super_block *sb, struct CodaFid *fid, |
||
39 | const char *name, int length, int *type, |
||
40 | struct CodaFid *resfid); |
||
41 | int venus_store(struct super_block *sb, struct CodaFid *fid, int flags, |
||
42 | vuid_t uid); |
||
43 | int venus_release(struct super_block *sb, struct CodaFid *fid, int flags); |
||
44 | int venus_close(struct super_block *sb, struct CodaFid *fid, int flags, |
||
45 | vuid_t uid); |
||
46 | int venus_open(struct super_block *sb, struct CodaFid *fid, int flags, |
||
47 | struct file **f); |
||
48 | int venus_mkdir(struct super_block *sb, struct CodaFid *dirfid, |
||
49 | const char *name, int length, |
||
50 | struct CodaFid *newfid, struct coda_vattr *attrs); |
||
51 | int venus_create(struct super_block *sb, struct CodaFid *dirfid, |
||
52 | const char *name, int length, int excl, int mode, dev_t rdev, |
||
53 | struct CodaFid *newfid, struct coda_vattr *attrs) ; |
||
54 | int venus_rmdir(struct super_block *sb, struct CodaFid *dirfid, |
||
55 | const char *name, int length); |
||
56 | int venus_remove(struct super_block *sb, struct CodaFid *dirfid, |
||
57 | const char *name, int length); |
||
58 | int venus_readlink(struct super_block *sb, struct CodaFid *fid, |
||
59 | char *buffer, int *length); |
||
60 | int venus_rename(struct super_block *, struct CodaFid *new_fid, |
||
61 | struct CodaFid *old_fid, size_t old_length, |
||
62 | size_t new_length, const char *old_name, |
||
63 | const char *new_name); |
||
64 | int venus_link(struct super_block *sb, struct CodaFid *fid, |
||
65 | struct CodaFid *dirfid, const char *name, int len ); |
||
66 | int venus_symlink(struct super_block *sb, struct CodaFid *fid, |
||
67 | const char *name, int len, const char *symname, int symlen); |
||
68 | int venus_access(struct super_block *sb, struct CodaFid *fid, int mask); |
||
69 | int venus_pioctl(struct super_block *sb, struct CodaFid *fid, |
||
70 | unsigned int cmd, struct PioctlData *data); |
||
71 | int coda_downcall(int opcode, union outputArgs *out, struct super_block *sb); |
||
72 | int venus_fsync(struct super_block *sb, struct CodaFid *fid); |
||
73 | int venus_statfs(struct super_block *sb, struct kstatfs *sfs); |
||
74 | |||
75 | |||
76 | /* messages between coda filesystem in kernel and Venus */ |
||
77 | extern int coda_hard; |
||
78 | extern unsigned long coda_timeout; |
||
79 | struct upc_req { |
||
80 | struct list_head uc_chain; |
||
81 | caddr_t uc_data; |
||
82 | u_short uc_flags; |
||
83 | u_short uc_inSize; /* Size is at most 5000 bytes */ |
||
84 | u_short uc_outSize; |
||
85 | u_short uc_opcode; /* copied from data to save lookup */ |
||
86 | int uc_unique; |
||
87 | wait_queue_head_t uc_sleep; /* process' wait queue */ |
||
88 | unsigned long uc_posttime; |
||
89 | }; |
||
90 | |||
91 | #define REQ_ASYNC 0x1 |
||
92 | #define REQ_READ 0x2 |
||
93 | #define REQ_WRITE 0x4 |
||
94 | #define REQ_ABORT 0x8 |
||
95 | |||
96 | |||
97 | /* |
||
98 | * Statistics |
||
99 | */ |
||
100 | |||
101 | extern struct venus_comm coda_comms[]; |
||
102 | |||
103 | #endif |