Commit Diff


commit - ca83f38a8f43554d8ad171144bc8bcc0ac22a3ac
commit + fa47663f7915ef6db546dc4223093aa1e48b902c
blob - fd334547694a1d879535173214ad641849337dbc
blob + a3a80bc2534eca7e88f084768b08d501d56b315c
--- unreliablefs_ops.c
+++ unreliablefs_ops.c
@@ -240,9 +240,25 @@ int unreliable_read(const char *path, char *buf, size_
         return ret;
     }
 
-    ret = pread(fi->fh, buf, size, offset);
+    int fd;
+
+    if (fi == NULL) {
+	fd = open(path, O_RDONLY);
+    } else {
+	fd = fi->fh;
+    }
+
+    if (fd == -1) {
+	return -errno;
+    }
+
+    ret = pread(fd, buf, size, offset);
     if (ret == -1) {
         ret = -errno;
+    }
+
+    if (fi == NULL) {
+	close(fd);
     }
 
     return ret;