diff mbox

[V9fs-developer,-V2,2/5] net/9p: Implement TXATTRCREATE 9p call

Message ID 1275384378-28192-2-git-send-email-aneesh.kumar@linux.vnet.ibm.com (mailing list archive)
State Rejected, archived
Delegated to: Eric Van Hensbergen
Headers show

Commit Message

Aneesh Kumar K.V June 1, 2010, 9:26 a.m. UTC
None
diff mbox

Patch

diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h
index a2956ff..98b5290 100644
--- a/include/net/9p/9p.h
+++ b/include/net/9p/9p.h
@@ -141,6 +141,8 @@  enum p9_msg_t {
 	P9_RGETATTR,
 	P9_TXATTRWALK = 30,
 	P9_RXATTRWALK,
+	P9_TXATTRCREATE = 32,
+	P9_RXATTRCREATE,
 	P9_TREADDIR = 40,
 	P9_RREADDIR,
 	P9_TLINK = 70,
diff --git a/include/net/9p/client.h b/include/net/9p/client.h
index 3c10ef0..ec3e778 100644
--- a/include/net/9p/client.h
+++ b/include/net/9p/client.h
@@ -242,6 +242,8 @@  struct p9_wstat *p9_client_stat(struct p9_fid *fid);
 int p9_client_wstat(struct p9_fid *fid, struct p9_wstat *wst);
 struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid);
 extern struct p9_fid *p9_client_xattrwalk(struct p9_fid *, const char *, u64 *);
+extern int p9_client_xattrcreate(struct p9_fid *, const char *, u64, int);
+
 struct p9_req_t *p9_tag_lookup(struct p9_client *, u16);
 void p9_client_cb(struct p9_client *c, struct p9_req_t *req);
 
diff --git a/net/9p/client.c b/net/9p/client.c
index 64ad877..8687621 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -1588,6 +1588,31 @@  error:
 }
 EXPORT_SYMBOL_GPL(p9_client_xattrwalk);
 
+int p9_client_xattrcreate(struct p9_fid *fid, const char *name,
+			u64 attr_size, int flags)
+{
+	int err;
+	struct p9_req_t *req;
+	struct p9_client *clnt;
+
+	P9_DPRINTK(P9_DEBUG_9P,
+		">>> TXATTRCREATE fid %d name  %s size %lld flag %d\n",
+		fid->fid, name, (long long)attr_size, flags);
+	err = 0;
+	clnt = fid->clnt;
+	req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd",
+			fid->fid, name, attr_size, flags);
+	if (IS_ERR(req)) {
+		err = PTR_ERR(req);
+		goto error;
+	}
+	P9_DPRINTK(P9_DEBUG_9P, "<<< RXATTRCREATE fid %d\n", fid->fid);
+	p9_free_req(clnt, req);
+error:
+	return err;
+}
+EXPORT_SYMBOL_GPL(p9_client_xattrcreate);
+
 int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)
 {
 	int err, rsize, total;