Gluster is currently not supporting SEEK_HOLE support which will boost performance when working with sparse VM images. I did a local sparse image copy benchmark copying from a gluster mount (of a local gluster-server) vs copying directly from the gluster-brick to test SEEK_HOLE support and performance. Motivation : VM's image files are sparse. Benchmark: cp /mnt/gluster-mount/image to /tmp/ => takes 1m31.586s cp /mnt/ext4/gluster-brick/image to /tmp/ => takes 0m29.215s (3 times faster!) Target: sparse qcow2 image file logic size: 30G physic size: 1.9G Commands like 'cp' call lseek(NEXT_HOLE) and lssek(SEEK_DATA) to skip useless zeros on modern filesystems [1]. See also [2]. Setting to low prio, since it's an optimization. Please feel free to change the prio according to the current project goals. [1] lseek & SEEK_HOLE: http://linux.die.net/man/2/lseek [2] http://thread.gmane.org/gmane.comp.file-systems.gluster.devel/10884
Besides not using SEEK_HOLE/SEEK_DATA to optimize disk IO, I also discovered that GB of zeros are send through the network. That hurts. To reproduce: - mount a remote gluster volume - cp a sparse image from the mounted volume to /tmp - check transfer rates with iptraf Results: - holes (GB full of zeros) are transfered via network as raw data Expected results: - holes should not be transmited as raw data ("000000000000000...") - gluster's protocol should send a message like "repeeat 2000 GB of zeros" Please note that one thing is that gluster client is not supporting SEEK_HOLE, and other thing is that holes are sent as raw. Benefits: - With this optimization, you could copy normal sparse images in seconds instead of hours! Moving prio to high, becuase of the big possitive impact for GlusterFS.
which version is this referring to? 3.7.0betaX?
NFS 4.2(?) will include READ_PLUS, we could use a similar procedure in GlusterFS
(In reply to Kaleb KEITHLEY from comment #2) > which version is this referring to? 3.7.0betaX? Looks like an RFE, it will be done for mainline :-)
SEEK description for NFSv4.2: https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-15.11 READ_PLUS which returns a list of data-regions: https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-38#section-15.10 Implementing SEEK is surely easier than READ_PLUS, and may be sufficient for improving performance for files with sparse regions.
Hi, Any planning or progress with this one? I wonder if classifying as "Enhancement" is fair enough, because not supporting sparse image files is a blocker for using GlusterFS for virtualization since people would (and probably *should*) move to other VM storage solutions that support sparse image data (Ceph?), so copying VM storage takes only minutes instead of hours or days. As a workarround, we are copying files directly from the bricks instead of the gluster mounts for logically very big / physically small sparse files, but all glusterfs related storage operations implemented in oVirt turn useless in this situation because of task timeouts, unacceptable VM downtimes and resources overhead.
It seems that FUSE in the Linux kernel does not pass llseek() on to the userspace filesystem daemon: http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/tree/fs/fuse/file.c#n2234 We can add the seek() operation to Gluster, but this is not sufficient yet. If the Gluster processes do not get the operation passed on, there will be no way for the application to do a SEEK_HOLE/SEEK_DATA. Extending libgfapi with the functionality could be made available quicker. Applications (like qemu-img) using libgfapi to access VM-images on Gluster would be able to call glfs_seek() and benefit from it.
I'll probably see if I can add the Gluster side of things soon. Lets see if the Linux FUSE people have any objections for adding seek() to FUSE: http://thread.gmane.org/gmane.comp.file-systems.fuse.devel/14741
Niels & Ravi, this are great news! oVirt is using qemu-img with FUSE. Please let me know once we can start testing.
REVIEW: http://review.gluster.org/11474 (fuse: add support for lseek) posted (#1) for review on master by Ravishankar N (ravishankar)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#1) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for lseek) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#4) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#4) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#2) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#4) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#4) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#3) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#3) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#3) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#3) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#3) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#5) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#5) for review on master by Xavier Hernandez (xhernandez)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#5) for review on master by Xavier Hernandez (xhernandez)
(In reply to Christopher Pereira from comment #1) > Besides not using SEEK_HOLE/SEEK_DATA to optimize disk IO, I also discovered > that GB of zeros are send through the network. That hurts. > > To reproduce: > > - mount a remote gluster volume > - cp a sparse image from the mounted volume to /tmp cp doesn't understand qcow2 format, but if we use qemu-nbd to create a local block device (say /dev/nbdX) thats backed by .qcow2 file, then dd (with or without conv=sparse) might work ? I m curious to know. Have you tried this already ? thanx, deepak
shouldn't the use of qemu-img solve this (at least for the ovirt use case with gluster)?
(In reply to Deepak C Shetty from comment #42) > (In reply to Christopher Pereira from comment #1) > > Besides not using SEEK_HOLE/SEEK_DATA to optimize disk IO, I also discovered > > that GB of zeros are send through the network. That hurts. > > > > To reproduce: > > > > - mount a remote gluster volume > > - cp a sparse image from the mounted volume to /tmp > > cp doesn't understand qcow2 format, but if we use qemu-nbd to create a > local block device (say /dev/nbdX) thats backed by .qcow2 file, then > dd (with or without conv=sparse) might work ? I m curious to know. Have you > tried this already ? > > thanx, > deepak Hi Deepack, Sparse files (or "holes") filesystem support [1] and qcow's on-demand space allocation are two different implementations for solving the same problem. Yes, qcow files shouldn't have this performance problem. I wonder where I got this raw image file from. I guess it was generated by virt-v2v while importing a vmdk image into ovirt. I wouldn't mind if all images were in qcow2 format. I also wonder if there is any way to convert images from raw to qcow2 in oVirt. [1] : https://en.wikipedia.org/wiki/Sparse_file
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
Hi, Any chance to get this in 3.7? May I help with QA on CentOS 7? Best regards, Christopher
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
Great Ravi! Your patch for Linux FUSE is merged in Linus' tree and will be included in v4.5: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/fuse?id=0b5da8db145bfd44266ac964a2636a0cf8d7c286
(In reply to Niels de Vos from comment #84) > Great Ravi! Your patch for Linux FUSE is merged in Linus' tree and will be > included in v4.5: > > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/ > fuse?id=0b5da8db145bfd44266ac964a2636a0cf8d7c286 Finally! I'm happy Niels, time to get the gluster patches in. :)
Congratulations Ravi and Niels!
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13290 (shard: add seek() FOP as not supported) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13290 (shard: add seek() FOP as not supported) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13290 (shard: add seek() FOP as not supported) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#9) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13290 (shard: add seek() FOP as not supported) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#3) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#15) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#15) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#15) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11480 (core: add seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11481 (syncop: add seek() FOP) posted (#10) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#4) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#15) for review on master by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/13290 committed in master by Pranith Kumar Karampuri (pkarampu) ------ commit 2ce3daa94066dcc77cdc6b54a31747b6c7c0c2fc Author: Niels de Vos <ndevos> Date: Fri Dec 18 21:41:04 2015 +0100 shard: add seek() FOP as not supported For getting basic support for SEEK_DATA/SEEK_HOLE, sharding has not been implemented. Bug 1301647 has been filed to get this new feature in sharding as well. BUG: 1220173 Change-Id: I5c272855a21501ac31e1a5f4b68ed7245582c17c Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/13290 Smoke: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Krutika Dhananjay <kdhananj>
REVIEW: http://review.gluster.org/13294 (stripe: add seek() FOP as not supported) posted (#2) for review on master by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/11480 committed in master by Kaleb KEITHLEY (kkeithle) ------ commit 0b6aba5ef63882e6a798a23de6f8efbb6bea0ea7 Author: Niels de Vos <ndevos> Date: Sun Jun 21 15:51:00 2015 +0200 core: add seek() FOP Minimal infrastructure changes for the seek() FOP. This will provide SEEK_HOLE and SEEK_DATA functionalities. BUG: 1220173 Change-Id: I4b74fce8b0bad2f45291fd2c2b9e243c4f4a1aa9 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11480 Smoke: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle>
COMMIT: http://review.gluster.org/11481 committed in master by Kaleb KEITHLEY (kkeithle) ------ commit b8a7b648d8f16999b00768d56f029b955c390eb7 Author: Niels de Vos <ndevos> Date: Sun Jun 21 17:51:24 2015 +0200 syncop: add seek() FOP Add the new seek() FOP to the syncop framework. gfapi will use this in the future. Change-Id: I0c15153beb27de73d5844b6f692175750fc28f60 BUG: 1220173 Singed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11481 Smoke: Gluster Build System <jenkins.com> Tested-by: Niels de Vos <ndevos> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle>
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#16) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#16) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#16) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#11) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#5) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#16) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#7) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#14) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#17) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#17) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#17) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#12) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13347 (shard: add seek() FOP as not supported) posted (#1) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13291 (tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE) posted (#6) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11494 (cluster/ec: add seek() FOP) posted (#15) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11474 (fuse: add support for SEEK_HOLE and SEEK_DATA through lseek()) posted (#17) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13005 (upcall: add seek() FOP) posted (#8) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11537 (fuse: update fuse_kernel.h to version 23) posted (#15) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11486 (gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE) posted (#18) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/13347 (shard: add seek() FOP as not supported) posted (#2) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#18) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11485 (gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek()) posted (#18) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11482 (protocol: implement seek() FOP) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11483 (afr: add seek() FOP) posted (#13) for review on master by Niels de Vos (ndevos)
REVIEW: http://review.gluster.org/11484 (posix: implement seek() FOP) posted (#19) for review on master by Niels de Vos (ndevos)
COMMIT: http://review.gluster.org/11485 committed in master by Jeff Darcy (jdarcy) ------ commit 5c39f43c13aa652b0db28ca7afea65982bd568cc Author: Niels de Vos <ndevos> Date: Sun Jun 21 18:32:40 2015 +0200 gfapi: add support for SEEK_HOLE and SEEK_DATA in glfs_lseek() Change-Id: I142dde11923244809b03fcca8cd4c2f7d5ff3929 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11485 Smoke: Gluster Build System <jenkins.com> Reviewed-by: jiffin tony Thottan <jthottan> Reviewed-by: Kaleb KEITHLEY <kkeithle> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org>
COMMIT: http://review.gluster.org/13005 committed in master by Jeff Darcy (jdarcy) ------ commit c58f9ce4eefa62ab0ae78d318e443486c4f80a54 Author: Niels de Vos <ndevos> Date: Fri Dec 18 20:35:02 2015 +0100 upcall: add seek() FOP Change-Id: Ic86919d28cf639b561114dc1440c6ea4bc6f7307 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/13005 Smoke: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/13347 committed in master by Jeff Darcy (jdarcy) ------ commit 41beab5444969f235c665042965a650b5a2866e6 Author: Niels de Vos <ndevos> Date: Wed Feb 3 17:15:03 2016 +0100 shard: add seek() FOP as not supported For getting basic support for SEEK_DATA/SEEK_HOLE, sharding has not been implemented. Bug 1301647 has been filed to get this new feature in sharding as well. Because of a premature merge (and revert), this change is re-applying everything from commit 2ce3daa94066dcc77cdc6b54a31747b6c7c0c2fc again. BUG: 1220173 Change-Id: I0fb2d36c65af5cb2d0a064104b74f7a863ec4ed3 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/13347 Smoke: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11482 committed in master by Jeff Darcy (jdarcy) ------ commit 9b71092f3d6cea1cca4804b0588152c79bd34e1d Author: Niels de Vos <ndevos> Date: Sun Jun 21 17:04:29 2015 +0200 protocol: implement seek() FOP Network protocol extensions for the seek() FOP. The format is based on the SEEK procedure in NFSv4.2. Change-Id: I060768a8a4b9b1c80f4a24c0f17d630f7f028690 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11482 Smoke: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11486 committed in master by Jeff Darcy (jdarcy) ------ commit cdcd3dc96b412967ba68a56aa2607d86365fbfe6 Author: Niels de Vos <ndevos> Date: Sun Jun 21 23:36:12 2015 +0200 gfapi: add test for glfs_lseek() SEEK_DATA/SEEK_HOLE Change-Id: I8d0573ed8b2ea5ce976ad140a24be7974dbad0e3 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11486 Smoke: Gluster Build System <jenkins.com> Reviewed-by: jiffin tony Thottan <jthottan> Reviewed-by: Kaleb KEITHLEY <kkeithle> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11494 committed in master by Jeff Darcy (jdarcy) ------ commit 10da9812d83425cb3f2cc8385f94b2a4537d348f Author: Xavier Hernandez <xhernandez> Date: Wed Jul 1 18:52:42 2015 +0200 cluster/ec: add seek() FOP BUG: 1220173 Change-Id: Iaa23ba81df4ee78ddaab1f96b3d926a563b4bb3d Signed-off-by: Xavier Hernandez <xhernandez> Reviewed-on: http://review.gluster.org/11494 Smoke: Gluster Build System <jenkins.com> Tested-by: Niels de Vos <ndevos> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11483 committed in master by Jeff Darcy (jdarcy) ------ commit c8bbc24a8f3db253d9514210f8505e927bbbe7b0 Author: Niels de Vos <ndevos> Date: Sun Jun 21 20:29:07 2015 +0200 afr: add seek() FOP seek() is like a read(), copied the same semantics. Change-Id: I100b741d9bfacb799df318bb081f2497c0664927 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11483 Smoke: Gluster Build System <jenkins.com> Reviewed-by: Pranith Kumar Karampuri <pkarampu> Tested-by: Pranith Kumar Karampuri <pkarampu> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com>
COMMIT: http://review.gluster.org/13291 committed in master by Jeff Darcy (jdarcy) ------ commit 4bde0b3db0e1f8fcbc782e29be2f2eb9e6d4c2fd Author: Niels de Vos <ndevos> Date: Mon Jan 25 16:56:05 2016 +0100 tests: add seek program for testing SEEK_DATA/SEEK_HOLE over FUSE Note that this only works on Linux kernel 4.5 and newer. The program is not run by a test-case because of this. BUG: 1220173 Change-Id: Ifdee3c793e33f9d763940130e8d01a61eae5498a Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/13291 Smoke: Gluster Build System <jenkins.com> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11537 committed in master by Kaleb KEITHLEY (kkeithle) ------ commit ff12c4a83bb897501f6e10c1bfe3a69f3dc6cdb9 Author: Ravishankar N <ravishankar> Date: Wed Jul 1 08:28:07 2015 +0530 fuse: update fuse_kernel.h to version 23 The following changes were made upstream: - add FUSE_WRITEBACK_CACHE - add time_gran to fuse_init_out - add reserved space to fuse_init_out - add FATTR_CTIME - add ctime and ctimensec to fuse_setattr_in - add FUSE_RENAME2 request - add FUSE_NO_OPEN_SUPPORT flag Including these changes will make it easier to backport support for lseek(). Because the fuse_init_out structure changed its size, older versions of FUSE would fail initializing. When an older version of FUSE is detected, the fuse_init_out structure is reduced to the previous size. This is harmless, as the attributes that are not passed, are not used for earlier versions anyway. BUG: 1220173 Change-Id: I58c74e161638b2d4ce12fc91a206fdc1b96de14d Signed-off-by: Ravishankar N <ravishankar> [ndevos: splitted from http://review.gluster.org/11474 old version fuse_init_out size correction] Reviewed-on: http://review.gluster.org/11537 Smoke: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org>
COMMIT: http://review.gluster.org/11484 committed in master by Jeff Darcy (jdarcy) ------ commit 4b725f2576b06a739e159981c6124118e26ccfbd Author: Niels de Vos <ndevos> Date: Sun Jun 21 16:59:15 2015 +0200 posix: implement seek() FOP The only lseek() options we need are SEEK_HOLE and SEEK_DATA. Change-Id: I5d15533c53fd710497f97c3cb4a8ea29fba47271 BUG: 1220173 Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11484 Smoke: Gluster Build System <jenkins.com> Reviewed-by: Kaleb KEITHLEY <kkeithle> NetBSD-regression: NetBSD Build System <jenkins.org> CentOS-regression: Gluster Build System <jenkins.com> Reviewed-by: Jeff Darcy <jdarcy>
COMMIT: http://review.gluster.org/11474 committed in master by Raghavendra G (rgowdapp) ------ commit e501a7da4c50e2a2049a71119c25ed43b43f3395 Author: Niels de Vos <ndevos> Date: Mon Jul 6 00:01:44 2015 +0200 fuse: add support for SEEK_HOLE and SEEK_DATA through lseek() The Linux FUSE kernel module has gained support for passing SEEK_HOLE and SEEK_DATA on through lseek(). This can greatly improve performance when working with sparse files. Linux FUSE introduced support for lseek() with version 4.5. The commit in mainline Linux is 0b5da8db145bfd44266ac964a2636a0cf8d7c286. URL: http://thread.gmane.org/gmane.comp.file-systems.fuse.devel/14752 Change-Id: I12496d788e59461a3023ddd30e0ea3179007f77e BUG: 1220173 Signed-off-by: Ravishankar N <ravishankar> Signed-off-by: Niels de Vos <ndevos> Reviewed-on: http://review.gluster.org/11474 Smoke: Gluster Build System <jenkins.com> CentOS-regression: Gluster Build System <jenkins.com> NetBSD-regression: NetBSD Build System <jenkins.org> Reviewed-by: Raghavendra G <rgowdapp>
All posted changes have been merged in the Gluster base. Steps that still need some work: - backport kernel/FUSE changes to EL7 (EL6 does not have SEEK_DATA/HOLE at all?) - add glfs_seek() in QEMU block/gluster.c - add glfs_seek() in NFS-Ganesha FSAL_GLUSTER - coreutils (cp binary) could use lseek() as fallback in extent_scan_read() - ... other tools that do not know how to use SEEK_DATA/SEEK_HOLE?
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.8.0, please open a new bug report. glusterfs-3.8.0 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution. [1] http://blog.gluster.org/2016/06/glusterfs-3-8-released/ [2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user