fs/9p: add 9P2000.L unlinkat operation
[pandora-kernel.git] / include / net / 9p / 9p.h
index d2df55b..342dcf1 100644 (file)
@@ -40,6 +40,7 @@
  * @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.
@@ -57,6 +58,7 @@ enum p9_debug_flags {
        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
@@ -74,10 +76,14 @@ do {  \
        } \
 } 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): " \
@@ -175,6 +181,10 @@ enum p9_msg_t {
        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,
@@ -241,10 +251,10 @@ enum p9_open_mode_t {
 
 /**
  * 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)
@@ -320,21 +330,6 @@ enum p9_qid_t {
 /* 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
@@ -362,7 +357,7 @@ struct p9_qid {
 };
 
 /**
- * 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)
@@ -371,11 +366,11 @@ struct p9_qid {
  * @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)
@@ -512,11 +507,6 @@ struct p9_getlock {
        char *client_id;
 };
 
-/* Structures for Protocol Operations */
-struct p9_tstatfs {
-       u32 fid;
-};
-
 struct p9_rstatfs {
        u32 type;
        u32 bsize;
@@ -529,168 +519,15 @@ struct p9_rstatfs {
        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
@@ -714,7 +551,7 @@ struct p9_fcall {
        size_t pbuf_size;
        void *private;
 
-       uint8_t *sdata;
+       u8 *sdata;
 };
 
 struct p9_idpool;
@@ -728,7 +565,6 @@ void p9_idpool_put(int id, struct p9_idpool *p);
 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 */