* @P9_DEBUG_FID: fid allocation/deallocation tracking
* @P9_DEBUG_PKT: packet marshalling/unmarshalling
* @P9_DEBUG_FSC: FS-cache tracing
+ * @P9_DEBUG_VPKT: Verbose packet debugging (full packet dump)
*
* These flags are passed at mount time to turn on various levels of
* verbosity and tracing which will be output to the system logs.
P9_DEBUG_FID = (1<<9),
P9_DEBUG_PKT = (1<<10),
P9_DEBUG_FSC = (1<<11),
+ P9_DEBUG_VPKT = (1<<12),
};
#ifdef CONFIG_NET_9P_DEBUG
} \
} while (0)
+#define P9_DUMP_PKT(way, pdu) p9pdu_dump(way, pdu)
+
#else
#define P9_DPRINTK(level, format, arg...) do { } while (0)
+#define P9_DUMP_PKT(way, pdu) do { } while (0)
#endif
+
#define P9_EPRINTK(level, format, arg...) \
do { \
printk(level "9p: %s (%d): " \
P9_RLINK,
P9_TMKDIR = 72,
P9_RMKDIR,
+ P9_TRENAMEAT = 74,
+ P9_RRENAMEAT,
+ P9_TUNLINKAT = 76,
+ P9_RUNLINKAT,
P9_TVERSION = 100,
P9_RVERSION,
P9_TAUTH = 102,
/**
* enum p9_perm_t - 9P permissions
- * @P9_DMDIR: mode bite for directories
+ * @P9_DMDIR: mode bit for directories
* @P9_DMAPPEND: mode bit for is append-only
* @P9_DMEXCL: mode bit for excluse use (only one open handle allowed)
- * @P9_DMMOUNT: mode bite for mount points
+ * @P9_DMMOUNT: mode bit for mount points
* @P9_DMAUTH: mode bit for authentication file
* @P9_DMTMP: mode bit for non-backed-up files
* @P9_DMSYMLINK: mode bit for symbolic links (9P2000.u)
/* Room for readdir header */
#define P9_READDIRHDRSZ 24
-/**
- * struct p9_str - length prefixed string type
- * @len: length of the string
- * @str: the string
- *
- * The protocol uses length prefixed strings for all
- * string data, so we replicate that for our internal
- * string members.
- */
-
-struct p9_str {
- u16 len;
- char *str;
-};
-
/**
* struct p9_qid - file system entity information
* @type: 8-bit type &p9_qid_t
};
/**
- * struct p9_stat - file system metadata information
+ * struct p9_wstat - file system metadata information
* @size: length prefix for this stat structure instance
* @type: the type of the server (equivalent to a major number)
* @dev: the sub-type of the server (equivalent to a minor number)
* @atime: Last access/read time
* @mtime: Last modify/write time
* @length: file length
- * @name: last element of path (aka filename) in type &p9_str
- * @uid: owner name in type &p9_str
- * @gid: group owner in type &p9_str
- * @muid: last modifier in type &p9_str
- * @extension: area used to encode extended UNIX support in type &p9_str
+ * @name: last element of path (aka filename)
+ * @uid: owner name
+ * @gid: group owner
+ * @muid: last modifier
+ * @extension: area used to encode extended UNIX support
* @n_uid: numeric user id of owner (part of 9p2000.u extension)
* @n_gid: numeric group id (part of 9p2000.u extension)
* @n_muid: numeric user id of laster modifier (part of 9p2000.u extension)
char *client_id;
};
-/* Structures for Protocol Operations */
-struct p9_tstatfs {
- u32 fid;
-};
-
struct p9_rstatfs {
u32 type;
u32 bsize;
u32 namelen;
};
-struct p9_trename {
- u32 fid;
- u32 newdirfid;
- struct p9_str name;
-};
-
-struct p9_rrename {
-};
-
-struct p9_tversion {
- u32 msize;
- struct p9_str version;
-};
-
-struct p9_rversion {
- u32 msize;
- struct p9_str version;
-};
-
-struct p9_tauth {
- u32 afid;
- struct p9_str uname;
- struct p9_str aname;
- u32 n_uname; /* 9P2000.u extensions */
-};
-
-struct p9_rauth {
- struct p9_qid qid;
-};
-
-struct p9_rerror {
- struct p9_str error;
- u32 errno; /* 9p2000.u extension */
-};
-
-struct p9_tflush {
- u16 oldtag;
-};
-
-struct p9_rflush {
-};
-
-struct p9_tattach {
- u32 fid;
- u32 afid;
- struct p9_str uname;
- struct p9_str aname;
- u32 n_uname; /* 9P2000.u extensions */
-};
-
-struct p9_rattach {
- struct p9_qid qid;
-};
-
-struct p9_twalk {
- u32 fid;
- u32 newfid;
- u16 nwname;
- struct p9_str wnames[16];
-};
-
-struct p9_rwalk {
- u16 nwqid;
- struct p9_qid wqids[16];
-};
-
-struct p9_topen {
- u32 fid;
- u8 mode;
-};
-
-struct p9_ropen {
- struct p9_qid qid;
- u32 iounit;
-};
-
-struct p9_tcreate {
- u32 fid;
- struct p9_str name;
- u32 perm;
- u8 mode;
- struct p9_str extension;
-};
-
-struct p9_rcreate {
- struct p9_qid qid;
- u32 iounit;
-};
-
-struct p9_tread {
- u32 fid;
- u64 offset;
- u32 count;
-};
-
-struct p9_rread {
- u32 count;
- u8 *data;
-};
-
-struct p9_twrite {
- u32 fid;
- u64 offset;
- u32 count;
- u8 *data;
-};
-
-struct p9_rwrite {
- u32 count;
-};
-
-struct p9_treaddir {
- u32 fid;
- u64 offset;
- u32 count;
-};
-
-struct p9_rreaddir {
- u32 count;
- u8 *data;
-};
-
-
-struct p9_tclunk {
- u32 fid;
-};
-
-struct p9_rclunk {
-};
-
-struct p9_tremove {
- u32 fid;
-};
-
-struct p9_rremove {
-};
-
-struct p9_tstat {
- u32 fid;
-};
-
-struct p9_rstat {
- struct p9_wstat stat;
-};
-
-struct p9_twstat {
- u32 fid;
- struct p9_wstat stat;
-};
-
-struct p9_rwstat {
-};
-
/**
* struct p9_fcall - primary packet structure
* @size: prefixed length of the structure
* @id: protocol operating identifier of type &p9_msg_t
* @tag: transaction id of the request
- * @offset: used by marshalling routines to track currentposition in buffer
+ * @offset: used by marshalling routines to track current position in buffer
* @capacity: used by marshalling routines to track total malloc'd capacity
* @pubuf: Payload user buffer given by the caller
- * @pubuf: Payload kernel buffer given by the caller
+ * @pkbuf: Payload kernel buffer given by the caller
* @pbuf_size: pubuf/pkbuf(only one will be !NULL) size to be read/write.
* @private: For transport layer's use.
* @sdata: payload
size_t pbuf_size;
void *private;
- uint8_t *sdata;
+ u8 *sdata;
};
struct p9_idpool;
int p9_idpool_check(int id, struct p9_idpool *p);
int p9_error_init(void);
-int p9_errstr2errno(char *, int);
int p9_trans_fd_init(void);
void p9_trans_fd_exit(void);
#endif /* NET_9P_H */