Sanjay, Sanjay Nadkarni wrote: > > auto_install.c > 423: Please don't do complex assignments in a function args. I see > that this is not specifically your change but could you assign > slice_number and the pass it in. Do you mean that you don't want to see ternary operators selecting function arguments? Is this a readability issue? > > > disk_slices.c: > > om_set_vtoc_attrs > 775: Please change B_FALSE to 0 since the caller checks for 0 and > not B_FALSE. It also matches the comments at the top of function. > > Can you elaborate why you are returning 0 and not marking > this as an error and jumping to line 905 since the caller in each case > does mark that as an error. You correctly point out that the code should be consistent and jump to the error tag as it does nearby. I have changed this. > > > perform_slim_install_install.c > Please revert line 2922 to the original form. Though both are > correct. The original line is > explicit and easier to understand. > I don't understand the logic here. The function definition explicitly indicates a boolean is to be returned, and it is clearly returning a boolean - it seems easier to return a simple boolean expression instead of a ternary operation. Following the same logic, doesn't this mean that each time the returned value is to be checked, it should be evaluated against B_TRUE or B_FALSE, too?
William > > > > On 04/15/09 07:09, William Schumann wrote: >> Alok, >> Responses below. >> Alok, Sanjay, >> Generated new webrev: >> http://cr.opensolaris.org/~wmsch/bug-7758/ >> Previous webrev for reference: >> http://cr.opensolaris.org/~wmsch/bug-7758-prior/ >> >> Alok Aggarwal wrote: >>> >>> On Tue, 14 Apr 2009, William Schumann wrote: >>> >>>> Alok, >>>> >>>> Alok Aggarwal wrote: >>>>> Hi William, >>>>> >>>>> On Thu, 9 Apr 2009, William Schumann wrote: >>>>> >>>>>> There are two problems addressed by this bug. >>>>>> >>>>>> 1) After initial AI installation, the swap slice is regarded as >>>>>> user data in subsequent AI installations instead of scratch >>>>>> 2) The swap slice space allocation in TI is not done with any >>>>>> awareness of AI customization >>>>>> >>>>>> The fix involving making AI aware of 1 and for AI to perform 2 >>>>>> instead of leaving everything to TI, which allocates the swap >>>>>> space for GUI. >>>>> >>>>> So, from a high level, is it fair to say that the policy with >>>>> respect to preserving slices by default isn't being >>>>> changed? >>>> Yes, the policy for preserving slices by default does not change. >>>>> And, the change you're making here is to create >>>>> a swap slice if either s1 doesn't exist or s1 exists with >>>>> a V_SWAP tag. Correct? >>>> The decision of whether a swap slice is created depends upon the >>>> memory size of the machine. >>>>> >>>>> Also now that 7718 has been reversed in the source code >>>>> only machines with less than 700MB memory will see this >>>>> problem on every other AI install after the *first* install. >>>> I think it would fail *all* AI installs after the first one (that >>>> didn't explicitly delete slice 1 per the workaround); otherwise, >>>> what you said is true. Also, without the fix, problem 2) above >>>> still exists - if a swap slice is called for, any slice >>>> customization or any existing slices which should be preserved will >>>> be destroyed instead. >>> >>> Okay, thanks for clarifying. Here are my comments - >>> >>> auto_install.c: Why is OM_ROOT being set for installs on >>> slices other than slice zero? >> OM_ROOT indicates that the VTOC partition tag for the install slice >> will be set to "root" - slices 0,1,3,4,5,6, or 7 could be the install >> slice. >>> >>> perform_slim_install.c: line 754: Nit - Sentence seems incomplete. >>> " .. if swap slice needs to be created" >> changed >>> >>> perform_slim_install.c: line 2919: This function no longer >>> returns a boolean_t >> It returns the boolean_t values (0 or 1), which are evaluated in >> logical expressions as either zero or non-zero, so I don't see a >> problem. In principle, the definition of boolean_t could conceivably >> be changed, but much code would break. Also, I think of the >> boolean_t type as helpful in simplifying logical expressions making >> them more readable. >>> >>> ti_dm.c: lines 1503 - 1515: It seems that this comment should >>> be made clearer to indicate under which conditions a swap slice >>> would be created - a) If it is explicitly specified or, b) if >>> the code figured out if the installation was being done on a low >>> memory machine >> added comments here >>> >>> disk_slices.c: line 50: Why this change? >> I tried to explain this in the code review request - I was just >> changing the name from "install", which is obviously not a unique >> token, to "s_install", which would be more easily found in a text >> editor - that's the only reason. Vim has a nice feature - if you >> type '*' on a token, it grabs the token as the search string and >> jumps to the next occurrence. >>> >>> disk_slices.c: line 365: How about check_slices_in_use() as >>> the name instead? >> I thought that "if (are_any_slices_in_table())" would be simple and >> readable for a function that asks the question "are there any slices >> already defined in the table?". Was this unclear? Too casual? >>> >>> disk_slices.c: line 376: What is an exempt slice? >> A slice that is reserved for a special purpose and cannot be used for >> user data. Changed "exempt" to "reserved". >>> >>> disk_slices.c: line 398: What tag will be returned if none >>> was set in the first place? Have you verified it is V_UNASSIGNED? >> Yes, "unassigned" is partition tag == V_UNASSIGNED (zero). >>> >>> disk_slices.c: line 406: Nit - I don't think the comment needs to >>> include the type of this variable >> removed >>> >>> disk_slices.c: lines 430-432: Could you please expound on this? >>> There seems to be implicit ordering here that the callers must >>> maintain. >> Actually, the purpose of the code here is to avoid implicit ordering >> by the caller. If a swap slice is needed, it is easier to create it >> before creating any other slices - otherwise you have to decide which >> slice to take the space from. This create_swap_slice_if_necessary() >> call insures that the swap slice will be allocated before any other >> new slices are created. Also, create_swap_slice_if_necessary() is >> called during finalization for TI. >> >> Perhaps I should mention here that the creation of a swap slice >> cannot be specified in a manifest - it is automatic. >>> >>> In other words, this seems to be true only for AI installs and if >>> auto-install were to be changed to reorder how it executes >>> manifest actions, that could lead to problems here. >> I can't think of any slice action ordering that will break this >> code. Do you have an example in mind? >>> >>> disk_slices.c: line 607: Again this comment is not clear. >>> Suggest rewording as "If default slice action is specified (i.e. no >>> customizations), create a swap slice if deemed neccesary for the >>> install to proceed (typically true only >>> for low memory systems)" >> Took suggested wording. >>> >>> disk_slices.c: line 658: The thought of possible recursion >>> in this function makes me queasy. This seems like a perfect >>> candidate for some code refactoring in the future. >> Perhaps you understand this already, but I'll add the following just >> in case. There is no explicit initialization call in the >> Orchestrator for AI where the swap slice might be allocated. So, the >> first call from AI concerning slice customization could be >> om_create_slice(). Within om_create_slice() is a check to see if the >> swap slice is necessary. If it is, om_create_slice will be called >> recursively once, before it does any other work, so make sure that >> the swap slice is allocated. Furthermore, there is a guard so that >> it is not run more than once for the same purpose. Does this help? >>> >>> disk_slices.c: The thing I'm still not clear about is whether >>> AI installs done prior to this bug fix will have V_SWAP set >>> for the swap slice. Will they? >> Yes, I checked this - the partition tag was (and is) being set to >> V_SWAP in /a/etc/vfstab. >> William >