[Sheepdog] [PATCH v4 3/6] fix a bug of copies calculation in delete_one()
MORITA Kazutaka
morita.kazutaka at gmail.com
Sun May 6 21:30:03 CEST 2012
At Fri, 4 May 2012 13:31:48 -0400,
Christoph Hellwig wrote:
>
> On Thu, May 03, 2012 at 06:25:46PM +0800, levin li wrote:
> > It tries to compare the nr_copies with inode->nr_copies,
> > but the inode has just been allocated, the nr_copies may
> > be zero or something random
>
> I just saw this one went in. As per the thread in reply to my version
> of that patch I still think we need to do the inode->nr_copies limiting
> after the first read. Did anyone disagree with that rationale?
>
> (Not that it matter in practice as long as inode->nr_copies is
> guaranteed to be the same as sys->nr_copies)
If we allow a different level of copies, I think we should limit the
nr_copies number in get_nr_copies(); get_nr_copies() should be
min(nr_zones, inode->nr_copies) instead of min(nr_zones, sys->nr_copies).
So, limiting the nr_copies outside of get_nr_copies() doesn't look
good to me.
When we don't know the number of inode->nr_copies (e.g. reading inode
for the first time), get_nr_copies() should return 1 because calling
read_object() with larger nr_copies than the actual reduncancy level
is not safe.
Thanks,
Kazutaka
More information about the sheepdog
mailing list