diff --git a/fuse/loopback_test.go b/fuse/loopback_test.go
index 12ea9b56675812dcf5bf590e0c047c1d928da00a..4cbd24366349b37b10f2b24fe25d93580370b24f 100644
--- a/fuse/loopback_test.go
+++ b/fuse/loopback_test.go
@@ -2,6 +2,7 @@ package fuse
 
 import (
 	"bytes"
+	"exec"
 	"fmt"
 	"io/ioutil"
 	"log"
@@ -728,3 +729,24 @@ func TestDoubleOpen(t *testing.T) {
 	CheckSuccess(err)
 	defer rwFile.Close()
 }
+
+func TestUmask(t *testing.T) {
+	ts := NewTestCase(t)
+	defer ts.Cleanup()
+
+	// Make sure system setting does not affect test.
+	fn := ts.mnt+"/file"
+	mask := 020
+	cmd := exec.Command("/bin/sh", "-c", 
+		fmt.Sprintf("umask %o && mkdir %s", mask, fn))
+	cmd.Run()
+		
+	fi, err := os.Lstat(fn)
+	CheckSuccess(err)
+
+	expect := mask ^ 0777
+	got := int(fi.Mode & 0777)
+	if got != expect {
+		t.Errorf("got %o, expect mode %o for file %s", got, expect, fn)
+	}
+}