change Tcreate message in 9P2000.u
diff --git a/include/fcall.h b/include/fcall.h
index dc46cb5..58323b6 100644
--- a/include/fcall.h
+++ b/include/fcall.h
@@ -44,6 +44,7 @@
 	
 	/* 9P2000.u extensions */
 	int	errornum;	/* Rerror */
+	char	*extension;	/* Tcreate */
 } Fcall;
 
 
diff --git a/src/cmd/9pserve.c b/src/cmd/9pserve.c
index 01a9f86..06c95f5 100644
--- a/src/cmd/9pserve.c
+++ b/src/cmd/9pserve.c
@@ -449,6 +449,12 @@
 			}
 			m->afid->ref++;
 			break;
+		case Tcreate:
+			if(dotu && !c->dotu && (m->tx.perm&(DMSYMLINK|DMDEVICE|DMNAMEDPIPE|DMSOCKET))){
+				err(m, "unsupported file type");
+				continue;
+			}
+			goto caseTopen;
 		case Topenfd:
 			if(m->tx.mode&~(OTRUNC|3)){
 				err(m, "bad openfd mode");
@@ -458,7 +464,7 @@
 			m->tx.type = Topen;
 			m->tpkt[4] = Topen;
 			/* fall through */
-		case Tcreate:
+		caseTopen:
 		case Topen:
 		case Tclunk:
 		case Tread:
diff --git a/src/lib9/convM2S.c b/src/lib9/convM2S.c
index 23b688a..3df83da 100644
--- a/src/lib9/convM2S.c
+++ b/src/lib9/convM2S.c
@@ -161,6 +161,8 @@
 		p += BIT32SZ;
 		f->mode = GBIT8(p);
 		p += BIT8SZ;
+		if(dotu)
+			p = gstring(p, ep, &f->extension);
 		break;
 
 	case Tread:
diff --git a/src/lib9/convS2M.c b/src/lib9/convS2M.c
index b59d95b..b01a022 100644
--- a/src/lib9/convS2M.c
+++ b/src/lib9/convS2M.c
@@ -102,6 +102,8 @@
 		n += stringsz(f->name);
 		n += BIT32SZ;
 		n += BIT8SZ;
+		if(dotu)
+			n += stringsz(f->extension);
 		break;
 
 	case Tread:
@@ -287,6 +289,8 @@
 		p += BIT32SZ;
 		PBIT8(p, f->mode);
 		p += BIT8SZ;
+		if(dotu)
+			p = pstring(p, f->extension);
 		break;
 
 	case Tread: