From: Mark R. <mru...@gm...> - 2008-06-24 14:43:02
|
I recently started testing fuse with big_writes support because of the performance benefits for the data deduplication filesystem that I am working on. Strangely enough 'dedupfs' exited with the warning that I was trying to read a block of data beyond the end of a file. I am able to replicate this behavior with fusexmp. After adding some logging to fusexmp I got this output: Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5234688, size 8192 Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5226496, size 8192 Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5242880, size 4096 Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : read returns 0 The file that I am reading here has a size of 5242880 bytes. Before big_writes xmp_read would read offset 5226496 + size 8192 = 5242880 and then stop. With big_writes the extra read for offset 5242880, size 4096 is introduced. I mounted fusexmp with the arguments: ./fusexmp /fuse -o use_ino,readdir_ino,default_permissions,allow_other,big_writes,max_read=8192,max_write=8192 Kernel: 2.6.26-rc7-smp libfuse from pulled from cvs (yesterday). Should I change my code so that it allows reads beyond the end of a file or is this a fuse bug? Thanks in advance, Mark Ruijter |
Re: [fuse-devel] Bug or feature : fusexmp gets read requests beyond
the end of file with big_writes.
From: Miklos S. <mi...@sz...> - 2008-06-24 17:18:13
|
> I recently started testing fuse with big_writes support because of the > performance benefits for the data deduplication filesystem that I am working > on. > Strangely enough 'dedupfs' exited with the warning that I was trying to read > a block of data beyond the end of a file. > > I am able to replicate this behavior with fusexmp. > After adding some logging to fusexmp I got this output: > Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5234688, size 8192 > Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5226496, size 8192 > Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : offset 5242880, size 4096 > Jun 24 16:11:47 snapper lt-fusexmp: xmp_read : read returns 0 > > The file that I am reading here has a size of 5242880 bytes. > Before big_writes xmp_read would read offset 5226496 + size 8192 = 5242880 and > then stop. > With big_writes the extra read for offset 5242880, size 4096 is introduced. I can reproduce this on 2.6.25 without big writes. So while it's strange, this is not something that got introduced recently. > I mounted fusexmp with the arguments: > ./fusexmp /fuse -o > use_ino,readdir_ino,default_permissions,allow_other,big_writes,max_read=8192,max_write=8192 > Kernel: 2.6.26-rc7-smp > libfuse from pulled from cvs (yesterday). > > Should I change my code so that it allows reads beyond the end of a file or > is this a fuse bug? You should handle read beyon EOF, and return zero in that case. I'll have a look at the kernel code, why it is doing this. It's superfluous at best. Thanks, Miklos |
Re: [fuse-devel] Bug or feature : fusexmp gets read requests beyond
the end of file with big_writes.
From: Szabolcs S. <sz...@nt...> - 2008-06-24 17:48:56
|
On Tue, 24 Jun 2008, Miklos Szeredi wrote: > You should handle read beyon EOF, and return zero in that case. I'll > have a look at the kernel code, why it is doing this. It's superfluous > at best. Wasn't it this one? https://bugzilla.redhat.com/show_bug.cgi?id=325141#c63 Szaka -- NTFS-3G: http://ntfs-3g.org |
Re: [fuse-devel] Bug or feature : fusexmp gets read requests beyond
the end of file with big_writes.
From: Miklos S. <mi...@sz...> - 2008-06-24 18:04:28
|
> > You should handle read beyon EOF, and return zero in that case. I'll > > have a look at the kernel code, why it is doing this. It's superfluous > > at best. > > Wasn't it this one? > > https://bugzilla.redhat.com/show_bug.cgi?id=325141#c63 Ah, yes. Indeed, I had a feeling that I've already seen this problem, but couldn't quite remember when. But my conclusion was right: the filesystem should be fixed to handle this situation. Miklos |