On 06/28/2010 08:49 PM, Ryota Ozaki wrote: >>> grpdir = opendir(grppath); >>> if (grpdir == NULL) { >>> + if (errno == ENOENT) >>> + return 0; >> >> Shouldn't this be continue instead of return 0, so as to go on to the >> next readdir() in case there is anything else in the directory? > > The next readdir() and mkdir() following to it are for the directory (e.g., > /a/b/c) and its inclusions (e.g., /a/b/c/d). We cannot go on if the directory > (a/b/c) does not present. Other sibling directories of the directory (e.g, > /a/b/d) will be handled in the caller function. > > Well, am I missing your question? No, I was misreading the code - I thought this was an early return inside the readdir loop, but re-reading it, I see it is an early exit because the opendir() failed. So, ACK, and applied your patch. > If we follow the same workaround as doing for virCgroupForDriver, > it'll be like this: > > #if defined _DIRENT_HAVE_D_TYPE > static int virCgroupRemoveRecursively(char *grppath) > { > ... > } > #else > static int virCgroupRemoveRecursively(char *grppath ATTRIBUTE_UNUSED) > { > /* Claim no support */ > return -ENXIO; > } > #endif > > I'm not sure it's sane though, it'll work... Looks clean enough to me. Let's apply that as a separate patch; would you care to do the honors of writing it? -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list