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.
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. 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. 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