* [RFC][exofs] locking for sbi->s_nextid?
@ 2015-12-05 23:56 Al Viro
2015-12-06 16:07 ` Boaz Harrosh
0 siblings, 1 reply; 2+ messages in thread
From: Al Viro @ 2015-12-05 23:56 UTC (permalink / raw)
To: Boaz Harrosh; +Cc: osd-dev, linux-fsdevel
Looks like exofs_new_inode() does this
inode->i_ino = sbi->s_nextid++;
without any locking; sure, the parent directory is locked, but that's not
worth much on a filesystem that supports mkdir()... Am I missing something
subtle here? Another question in the code nearby:
ret = ore_get_io_state(&sbi->layout, &oi->oc, &ios);
if (unlikely(ret)) {
EXOFS_ERR("exofs_new_inode: ore_get_io_state failed\n");
return ERR_PTR(ret);
}
aren't we leaking a struct inode here? Path around ore_create() is
also interesting - looks like its failure causes a leak (at least if
it happens early on)...
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [RFC][exofs] locking for sbi->s_nextid?
2015-12-05 23:56 [RFC][exofs] locking for sbi->s_nextid? Al Viro
@ 2015-12-06 16:07 ` Boaz Harrosh
0 siblings, 0 replies; 2+ messages in thread
From: Boaz Harrosh @ 2015-12-06 16:07 UTC (permalink / raw)
To: Al Viro; +Cc: osd-dev, linux-fsdevel
On 12/06/2015 01:56 AM, Al Viro wrote:
> Looks like exofs_new_inode() does this
>
> inode->i_ino = sbi->s_nextid++;
>
> without any locking; sure, the parent directory is locked, but that's not
> worth much on a filesystem that supports mkdir()... Am I missing something
> subtle here?
Yes I guess you are right. What bugs me is why this never failed. I mean
on a 64 bit system, why I never get a duplicate ino?
But I guess I should change this to an atomic.
> Another question in the code nearby:
>
> ret = ore_get_io_state(&sbi->layout, &oi->oc, &ios);
> if (unlikely(ret)) {
> EXOFS_ERR("exofs_new_inode: ore_get_io_state failed\n");
> return ERR_PTR(ret);
> }
>
> aren't we leaking a struct inode here? Path around ore_create() is
> also interesting - looks like its failure causes a leak (at least if
> it happens early on)...
>
Yes I'm afraid you are absolutely right. Just to show how much attention
this toy lab FS ever got. All ore_get_io_state needs to to fail is an OOM.
So this was never heavily tested right?
I'll see if I have some time to fix both. Just for the fun
Thanks Al
Boaz
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-12-06 16:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-05 23:56 [RFC][exofs] locking for sbi->s_nextid? Al Viro
2015-12-06 16:07 ` Boaz Harrosh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.