On 04/28/2012 09:50 PM, Christoph Hellwig wrote: > On Sat, Apr 28, 2012 at 11:48:46AM +0800, Liu Yuan wrote: >> I think the problem is caused by your patch: >> >> inode = malloc(sizeof(*inode)); >> if (!inode) { >> eprintf("failed to allocate memory\n"); >> goto out; >> } >> >> nr_copies = get_nr_copies(dw->vnodes); >> if (nr_copies> inode->nr_copies) >> nr_copies = inode->nr_copies;<--inode->nr_copies will >> get a random value > That code defintively is wrong, and was introduced by a mismerge, sorry. > I'll send a patch to fix it. > > But it's unrelated to the issue I report, which is reproducible with > git tree revision dabb5200202f2225e69002c055afba97ee5cf73a, and is fine > with the revision before, 453072667ce08c6613d627b8ed0ac4f33e6e8dbe. > What you saw in the output of my code is not a bug, I did it to make the vdi size as zero to mark it as delete failed, I think it's better not to and a field to the sheepdog_inode struct, if fail to delete some of its data objects, the vdi should be marked as delete failed, so we can try to delete it again. |