linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Good place to drop preallocation on directories
@ 2008-11-19 20:32 Jan Kara
  2008-11-20 11:05 ` Jörn Engel
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Kara @ 2008-11-19 20:32 UTC (permalink / raw)
  To: linux-fsdevel

  Hi!

  I have a problem in UDF so I thought I'll post it here if someone has a
good idea how to solve it.
  UDF does preallocation on directories (on files a well, but that is not a
problem). Now this helps against directory fragmentation but there is an
issue with it: When to drop this preallocation? Currently it is done in
udf_clear_inode() which has two problems:
  1) udf_clear_inode() is really called to late to do anything like freeing
     space from inode and UDF has to play some nasty tricks (like
     explicitely syncing inode, calling invalidate_inode_buffers() once
     more) to make everything work. Using udf_drop_inode() would be much
     better but that is called under i_lock so it's not really usable
    (unless I'd drop i_lock in it but then it would even nastier).
  2) When you create lots of directories, they use quite some additional
     space for preallocation and there's not really a got way how to get rid
     of preallocated blocks than dropping dcache or umount + mount the
     filesystem.

  So after all I'm thinking whether directory preallocation is really worth
the trouble. But before I go and rip it I'd like to check whether someone
does not have some clever idea :).

									Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Good place to drop preallocation on directories
  2008-11-19 20:32 Good place to drop preallocation on directories Jan Kara
@ 2008-11-20 11:05 ` Jörn Engel
  2008-11-20 13:10   ` Jan Kara
  0 siblings, 1 reply; 3+ messages in thread
From: Jörn Engel @ 2008-11-20 11:05 UTC (permalink / raw)
  To: Jan Kara; +Cc: linux-fsdevel

On Wed, 19 November 2008 21:32:42 +0100, Jan Kara wrote:
> 
>   I have a problem in UDF so I thought I'll post it here if someone has a
> good idea how to solve it.
>   UDF does preallocation on directories (on files a well, but that is not a
> problem). Now this helps against directory fragmentation but there is an
> issue with it: When to drop this preallocation? Currently it is done in
> udf_clear_inode() which has two problems:
>   1) udf_clear_inode() is really called to late to do anything like freeing
>      space from inode and UDF has to play some nasty tricks (like
>      explicitely syncing inode, calling invalidate_inode_buffers() once
>      more) to make everything work. Using udf_drop_inode() would be much
>      better but that is called under i_lock so it's not really usable
>     (unless I'd drop i_lock in it but then it would even nastier).
>   2) When you create lots of directories, they use quite some additional
>      space for preallocation and there's not really a got way how to get rid
>      of preallocated blocks than dropping dcache or umount + mount the
>      filesystem.
> 
>   So after all I'm thinking whether directory preallocation is really worth
> the trouble. But before I go and rip it I'd like to check whether someone
> does not have some clever idea :).

Problem 2 has lru written all over, don't you think?  Problem 1 is
similar to something I'm debugging this very moment.  With some luck my
solution might work for you as well.

However, I don't see a big difference between files and directories yet.
Maybe because there shouldn't be, or maybe because I've been missing
something critical.  Could you elaborate on that?

Jörn

-- 
It's just what we asked for, but not what we want!
-- anonymous
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Good place to drop preallocation on directories
  2008-11-20 11:05 ` Jörn Engel
@ 2008-11-20 13:10   ` Jan Kara
  0 siblings, 0 replies; 3+ messages in thread
From: Jan Kara @ 2008-11-20 13:10 UTC (permalink / raw)
  To: Jörn Engel; +Cc: linux-fsdevel

On Thu 20-11-08 12:05:55, Jörn Engel wrote:
> On Wed, 19 November 2008 21:32:42 +0100, Jan Kara wrote:
> > 
> >   I have a problem in UDF so I thought I'll post it here if someone has a
> > good idea how to solve it.
> >   UDF does preallocation on directories (on files a well, but that is not a
> > problem). Now this helps against directory fragmentation but there is an
> > issue with it: When to drop this preallocation? Currently it is done in
> > udf_clear_inode() which has two problems:
> >   1) udf_clear_inode() is really called to late to do anything like freeing
> >      space from inode and UDF has to play some nasty tricks (like
> >      explicitely syncing inode, calling invalidate_inode_buffers() once
> >      more) to make everything work. Using udf_drop_inode() would be much
> >      better but that is called under i_lock so it's not really usable
> >     (unless I'd drop i_lock in it but then it would even nastier).
> >   2) When you create lots of directories, they use quite some additional
> >      space for preallocation and there's not really a got way how to get rid
> >      of preallocated blocks than dropping dcache or umount + mount the
> >      filesystem.
> > 
> >   So after all I'm thinking whether directory preallocation is really worth
> > the trouble. But before I go and rip it I'd like to check whether someone
> > does not have some clever idea :).
> 
> Problem 2 has lru written all over, don't you think?  Problem 1 is
> similar to something I'm debugging this very moment.  With some luck my
> solution might work for you as well.
  Hmm, yes, I was thinking of implementing something like LRU. I just
thought it might be a bit overkill. But maybe not...

> However, I don't see a big difference between files and directories yet.
> Maybe because there shouldn't be, or maybe because I've been missing
> something critical.  Could you elaborate on that?
  For files I use ->release() callback to drop preallocation. So
preallocation is dropped on last close of a file which is not completely
optimal but generally good enough.
  Thanks for your ideas.

									Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-11-20 13:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-19 20:32 Good place to drop preallocation on directories Jan Kara
2008-11-20 11:05 ` Jörn Engel
2008-11-20 13:10   ` Jan Kara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).