David, Responses inline.
Thanks Steve David Bustos wrote: > Quoth Steve Peng on Mon, Jan 28, 2008 at 04:02:45PM -0700: > >> well. I have posted the new incremental webrev under >> >> http://cr.opensolaris.org/~stevep/6351623-2 >> > > - In the future, could you please also produce a full webrev? > Will do. > cmd/svc/configd/client.c > 1780: _BAD_REQUEST can also happen if the src or dst buffers are > unterminated. Please note this in the comment. > Will be removed once the ability of specifying src and dst are turned off. > 1781 (_TRUNCATED): Shouldn't this description say that rpr->rpr_dst is > too long? > Ditto. > 1785: backend_switch() can also fail with _BACKEND_ACCESS and > _NO_RESOURCES. Please document them here. > Done. > cmd/svc/configd/backend.c > 768,783,795: You need to free(buf) before you return. > Had been changed right after I sent out the code review request. Considered done. > 850: Can this be wrapped onto the previous line? > Done. > 861: I would add a comment explaining that the format string is broken > up to prevent expansion by SCCS, but you don't have to. > Ok. > 1113: Since backend_create_backup_locked() can now fail with > _NO_RESOURCES, you have to add it to backend_create_backup()'s > comment, and to backup_repository()'s comment in client.c. And you > should add a case to _scf_request_backup()'s switch in svcadm.c, but > that's not strictly necessary. > Sounds good. Comments were added. > 1267: backend_lock()'s comment says it can fail with _BACKEND_READONLY > if writing is nonzero. How do you know that won't happen here? > Yes, it can return _BACKEND_READONLY error if writing flag is set. The assertion here is from the previous recommendation. Changed so it now can fail with this error. > 1272: What will happen if src is different from be->be_path? > I suppose src will probably be differently sized, so > backend_switch_copy() will fail. If they happen to be the same > size, but with different contents, then any data we have cached in > memory could be wrong. I don't know what would happen, but I don't > think I can rule out it being very bad. I think it would be better > to just use be->be_path and stop allowing src to be specified by the > client. > I won't hesitate to take this approach. :-) Actually I think both src and dst should be backend private (client shouldn't know about) and dst is determined by client provided switch flag (direction). > 1275: Let me see if I understand correctly the case where result != > REP_PROTOCOL_SUCCESS but sw_back is nonzero. We were operating on > one repository, which we probably modified, but we were unable to > copy it to the destination, and you want to switch to the > destination repository anyway? If we modified the source > repository, then couldn't we have some of that data cached in > memory? If so, then won't that data be incorrect when we switch to > the different destination repository? If you want to do this, > I think you need to flush the cache. I suspect it will be > sufficiently rare that we can do that later, and for now you can > just fail into maintenance mode. > Good point. I will look into this more. > 1343: "integrity check" means something different in SQLite, so please > change this to something like "sanity check". > Done. > lib/libscf/common/lowlevel.c > 6863: proto_error() translates _BAD_REQUEST into _INVALID_ARGUMENT, so > shouldn't you also say that _INVALID_ARGUMENT can happen if "backend > path does not match"? > May no longer be an issue. See the previous response wrt be_path. > 6866: proto_error() translates _TRUNCATED and _UNKNOWN into _INTERNAL, > so shouldn't you say that _INTERNAL can happen if > repository_switch() encounters a strlcpy error or a file operation > error? > Changed. > 6867: Can't this also fail with the errors that repository_switch() in > client.c can fail with? Namely _PERMISSION_DENIED, > _BACKEND_READONLY, > Changed. > 6872: struct rep_protocol_switch_request is pretty big. Can you > malloc() it so we won't segfault if we're out of memory? > My not be an issue once we reject client's ability of specifying src and dst. > cmd/svc/svcadm/svcadm.c > 2405,16: If these happen, the exit(1) will make them difficult to > debug. I think you should print an explanation. I suppose you > could file a bug for that, though. > Sounds good. I will file a bug later. > 2447: I think you should abort() if we receive an unknown error, since > we should be able to know what errors the function can produce. But > if you're not going to do that, I recommend somehow working > scf_error() or scf_strerror() in, so we can tell which error code > was returned. > abort works with me. > cmd/svc/milestone/manifest-import > 470: Please indent this by half a tab. > Done. > David >