diff --git a/src/lib9/create.c b/src/lib9/create.c
index 6bfb0c1..a9e796a 100644
--- a/src/lib9/create.c
+++ b/src/lib9/create.c
@@ -1,6 +1,7 @@
 #define _GNU_SOURCE	/* for Linux O_DIRECT */
 #include <u.h>
 #define NOPLAN9DEFINES
+#include <sys/file.h>
 #include <libc.h>
 #include <sys/stat.h>
 #ifndef O_DIRECT
@@ -10,11 +11,12 @@
 int
 p9create(char *path, int mode, ulong perm)
 {
-	int fd, cexec, umode, rclose;
+	int fd, cexec, umode, rclose, lock;
 
+	lock = mode&OLOCK;
 	cexec = mode&OCEXEC;
 	rclose = mode&ORCLOSE;
-	mode &= ~(ORCLOSE|OCEXEC);
+	mode &= ~(ORCLOSE|OCEXEC|OLOCK);
 
 	/* XXX should get mode mask right? */
 	fd = -1;
@@ -45,6 +47,12 @@
 	}
 out:
 	if(fd >= 0){
+		if(lock){
+			if(flock(fd, (mode==OREAD) ? LOCK_SH : LOCK_EX) < 0){
+				close(fd);
+				return -1;
+			}
+		}
 		if(cexec)
 			fcntl(fd, F_SETFL, FD_CLOEXEC);
 		if(rclose)
diff --git a/src/lib9/open.c b/src/lib9/open.c
index 9d9ba31..5b4935c 100644
--- a/src/lib9/open.c
+++ b/src/lib9/open.c
@@ -1,6 +1,7 @@
 #define _GNU_SOURCE	/* for Linux O_DIRECT */
 #include <u.h>
 #define NOPLAN9DEFINES
+#include <sys/file.h>
 #include <libc.h>
 #ifndef O_DIRECT
 #define O_DIRECT 0
@@ -10,12 +11,13 @@
 p9open(char *name, int mode)
 {
 	int cexec, rclose;
-	int fd, umode;
+	int fd, umode, lock;
 
 	umode = mode&3;
 	cexec = mode&OCEXEC;
 	rclose = mode&ORCLOSE;
-	mode &= ~(3|OCEXEC|ORCLOSE);
+	lock = mode&OLOCK;
+	mode &= ~(3|OCEXEC|ORCLOSE|OLOCK);
 	if(mode&OTRUNC){
 		umode |= O_TRUNC;
 		mode ^= OTRUNC;
@@ -30,6 +32,12 @@
 	}
 	fd = open(name, umode);
 	if(fd >= 0){
+		if(lock){
+			if(flock(fd, (mode==OREAD) ? LOCK_SH : LOCK_EX) < 0){
+				close(fd);
+				return -1;
+			}
+		}
 		if(cexec)
 			fcntl(fd, F_SETFL, FD_CLOEXEC);
 		if(rclose)
