lkml.org 
[lkml]   [2008]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2008-02-01 12:11    [W:0.040 / U:0.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site