Browse Source

[fuse] Direct I/O should not use fuse_reset_request

It's cleaner to allocate a new request, otherwise the uid/gid/pid
fields of the request won't be filled in.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Miklos Szeredi 19 years ago
parent
commit
56cf34ff07
1 changed files with 7 additions and 3 deletions
  1. 7 3
      fs/fuse/file.c

+ 7 - 3
fs/fuse/file.c

@@ -1,6 +1,6 @@
 /*
 /*
   FUSE: Filesystem in Userspace
   FUSE: Filesystem in Userspace
-  Copyright (C) 2001-2005  Miklos Szeredi <miklos@szeredi.hu>
+  Copyright (C) 2001-2006  Miklos Szeredi <miklos@szeredi.hu>
 
 
   This program can be distributed under the terms of the GNU GPL.
   This program can be distributed under the terms of the GNU GPL.
   See the file COPYING.
   See the file COPYING.
@@ -565,8 +565,12 @@ static ssize_t fuse_direct_io(struct file *file, const char __user *buf,
 		buf += nres;
 		buf += nres;
 		if (nres != nbytes)
 		if (nres != nbytes)
 			break;
 			break;
-		if (count)
-			fuse_reset_request(req);
+		if (count) {
+			fuse_put_request(fc, req);
+			req = fuse_get_req(fc);
+			if (IS_ERR(req))
+				break;
+		}
 	}
 	}
 	fuse_put_request(fc, req);
 	fuse_put_request(fc, req);
 	if (res > 0) {
 	if (res > 0) {