Messages in this thread | | | Date | Fri, 01 Feb 2008 12:08:10 +0100 | From | Eric Dumazet <> | Subject | Re: How does ext2 implement sparse files? |
| |
Shuduo Sang a écrit : > On Feb 1, 2008 2:14 AM, Andi Kleen <andi@firstfloor.org> wrote: > >> Lars Noschinski <lklml@ml.noschinski.de> writes: >> >> >>> For an university project, we had to write a toy filesystem (ext2-like), >>> for which I would like to implement sparse file support. For this, I >>> digged through the ext2 source code; but I could not find the point, >>> where ext2 detects holes. >>> >>> As far as I can see from fs/buffer.c, an hole is a buffer_head which is >>> not mapped, but uptodate. But I cannot find a relevant source line, >>> where ext2 makes usage of this information. >>> >> It does not explicitely detect holes; holey data is just never written >> so no space for it is allocated. >> >> > > does anybody know how to make a hole in a large file which already has > real content from user space application? > In my project I need this function to delete a piece of content from > an exist large effectively. > thanks. > > Some OSes use fcntl() F_FREESP/F_FREESP64 to be able to free allocated space in files (ie make holes if supported by underlying fs)
AFAIK, linux can generically do this only at the end of a file (ftruncate()) , not at random points.
XFS has special support for FREESP (it comes from IRIX), implemented as an ioctl()
Check for XFS_IOC_FREESP and XFS_IOC_UNRESVSP in fs/xfs/xfs_fs.h
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |