* 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).