public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* 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 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

* 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

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