* about XFS_IOC_RESVSP
@ 2009-05-22 14:16 Joe Hsu
2009-05-22 15:49 ` Eric Sandeen
2009-05-24 7:08 ` Joe Hsu
0 siblings, 2 replies; 5+ messages in thread
From: Joe Hsu @ 2009-05-22 14:16 UTC (permalink / raw)
To: xfs
I pre-allocate blocks for a file. Then I use "open" and "write" system
calls to generate the content for that file. After the file is really
written to the disk,
I want to set all the extent(s) of that file unwritten. Then I will
write new content to
the same file. Is that possible? That means:
I want to dis-care the content just written and use the same allocated blocks.
In another words, I want to restore the state of the file to the state
when it was
first pre-allocated.
Why am I doing this? Why not just over-write it? When doing
partial over-writing,
some blocks may be read for partial update before they are written
out. This hurts
some IO performance and If I can, I would prefer to dis-care old
content of the file and
use same (pre)allocated blocks. (In my case, I am doing intensive IO.)
Any one can give me some hints? Thanks.
--
The sun is shinny but the ice is slippery.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: about XFS_IOC_RESVSP
2009-05-22 14:16 about XFS_IOC_RESVSP Joe Hsu
@ 2009-05-22 15:49 ` Eric Sandeen
2009-05-22 17:36 ` Joe Hsu
2009-05-24 7:08 ` Joe Hsu
1 sibling, 1 reply; 5+ messages in thread
From: Eric Sandeen @ 2009-05-22 15:49 UTC (permalink / raw)
To: Joe Hsu; +Cc: xfs
Joe Hsu wrote:
> I pre-allocate blocks for a file. Then I use "open" and "write" system
> calls to generate the content for that file. After the file is really
> written to the disk,
> I want to set all the extent(s) of that file unwritten. Then I will
> write new content to
> the same file. Is that possible? That means:
> I want to dis-care the content just written and use the same allocated blocks.
> In another words, I want to restore the state of the file to the state
> when it was
> first pre-allocated.
>
> Why am I doing this? Why not just over-write it? When doing
> partial over-writing,
> some blocks may be read for partial update before they are written
> out. This hurts
> some IO performance and If I can, I would prefer to dis-care old
> content of the file and
> use same (pre)allocated blocks. (In my case, I am doing intensive IO.)
>
> Any one can give me some hints? Thanks.
>
Do you really need the exact same blocks? What if you just truncate to
0 & re-allocate?
-Eric
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about XFS_IOC_RESVSP
2009-05-22 15:49 ` Eric Sandeen
@ 2009-05-22 17:36 ` Joe Hsu
2009-05-24 13:29 ` Eric Sandeen
0 siblings, 1 reply; 5+ messages in thread
From: Joe Hsu @ 2009-05-22 17:36 UTC (permalink / raw)
To: Eric Sandeen; +Cc: xfs
Well, I have multiple processes running concurrently, and each writes
on its own files( the sort of files I mentioned), while at the same
time, I have other programs doing normal but light I/O to other files
on the same xfs partition.
Once I thought maybe I can pre-allocate these special files within a
directory, which has fixed allocation groups(I guess that means fixed
sets of blocks), and then I can try to make 'truncate to 0 and
pre-allocate' requests sequential for the running processes. But, XFS
seems to have this feature, I cannot find how to do that.
2009/5/22 Eric Sandeen <sandeen@sandeen.net>:
> Joe Hsu wrote:
> Do you really need the exact same blocks? What if you just truncate to
> 0 & re-allocate?
>
> -Eric
>
--
The sun is shinny but the ice is slippery.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about XFS_IOC_RESVSP
2009-05-22 17:36 ` Joe Hsu
@ 2009-05-24 13:29 ` Eric Sandeen
0 siblings, 0 replies; 5+ messages in thread
From: Eric Sandeen @ 2009-05-24 13:29 UTC (permalink / raw)
To: Joe Hsu; +Cc: xfs
Joe Hsu wrote:
> Well, I have multiple processes running concurrently, and each writes
> on its own files( the sort of files I mentioned), while at the same
> time, I have other programs doing normal but light I/O to other files
> on the same xfs partition.
>
> Once I thought maybe I can pre-allocate these special files within a
> directory, which has fixed allocation groups(I guess that means fixed
> sets of blocks), and then I can try to make 'truncate to 0 and
> pre-allocate' requests sequential for the running processes. But, XFS
> seems to have this feature, I cannot find how to do that.
There is no interface to re-mark existing blocks as unwritten, I'm
afraid. It sounds like an interesting interface, but it's not there
today AFAIK.
You said:
> Why am I doing this? Why not just over-write it? When doing partial
> over-writing, some blocks may be read for partial update before they
> are written out. This hurts some IO performance
I guess it's not possible for you to do whole-block IO instead? Or even
pad out the writes to block boundaries if needed?
and:
> After days of testing(I only ftruncate to 0 and re-preallocate files
> if needed), fragmentation become much more serious, sigh
It's interesting that it's so bad, I'd have hoped that if you free a
contiguous chunk of blocks and then immediately reallocate them on the
same inode, that they'd get preallocated nicely.... How bad is it?
-Eric
> 2009/5/22 Eric Sandeen <sandeen@sandeen.net>:
>> Joe Hsu wrote: Do you really need the exact same blocks? What if
>> you just truncate to 0 & re-allocate?
>>
>> -Eric
>>
>
>
>
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: about XFS_IOC_RESVSP
2009-05-22 14:16 about XFS_IOC_RESVSP Joe Hsu
2009-05-22 15:49 ` Eric Sandeen
@ 2009-05-24 7:08 ` Joe Hsu
1 sibling, 0 replies; 5+ messages in thread
From: Joe Hsu @ 2009-05-24 7:08 UTC (permalink / raw)
To: xfs
After days of testing(I only ftruncate to 0 and re-preallocate
files if needed),
fragmentation become much more serious, sigh
2009/5/22 Joe Hsu <nagual.hsu@gmail.com>:
> I pre-allocate blocks for a file. Then I use "open" and "write" system
> calls to generate the content for that file. After the file is really
> written to the disk,
> I want to set all the extent(s) of that file unwritten. Then I will
> write new content to
> the same file. Is that possible? That means:
> I want to dis-care the content just written and use the same allocated blocks.
> In another words, I want to restore the state of the file to the state
> when it was
> first pre-allocated.
>
> Why am I doing this? Why not just over-write it? When doing
> partial over-writing,
> some blocks may be read for partial update before they are written
> out. This hurts
> some IO performance and If I can, I would prefer to dis-care old
> content of the file and
> use same (pre)allocated blocks. (In my case, I am doing intensive IO.)
>
> Any one can give me some hints? Thanks.
>
> --
> The sun is shinny but the ice is slippery.
>
--
The sun is shinny but the ice is slippery.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-05-24 13:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-22 14:16 about XFS_IOC_RESVSP Joe Hsu
2009-05-22 15:49 ` Eric Sandeen
2009-05-22 17:36 ` Joe Hsu
2009-05-24 13:29 ` Eric Sandeen
2009-05-24 7:08 ` Joe Hsu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox