Updated spec below. Darren
This project seeks micro/patch binding. Problem ======= The /etc/project file has been delivered (PSARC/1999/119) but its delivery did not define how we would add and name new projects, only that the numbers less than 100 were reserved. In addition, it did not offer full support of the features found in the project utilities such as prctl(1). Namespace ========= Now that the file has been shipped for a number of years, we need to make reasonable guesses about what customers may have done since its delivery. One such guess is that they may have created projects with names similar or the same as SMF FMRIs or executables with which they are associated. Thus in creating a new project to be shipped by default, using a name such as "login" or "init" or "inetd" cannot be considered to be without risk. To provide us with the required flexibility for future enginering, this case proposes that all project names starting with "SUNW" be reserved and that they are not to be used by customers to define their own projects. This limitation needs to be documented in updates to project(4) and projadd(1M). Removing Limits =============== Using prctl(1), it is possible (depending on your privileges) to add, change or remove resource limits associated with projects. When using projadd(1M), it is only possible to define projects in terms of new limits they will have: it is not possible to remove an inherited resource limit using a project definition in /etc/project. Thus this case would like to propose that the /etc/project file be extended to allow resource limits to be removed. The suggested syntax is to simply be '<resource_name>=removed'. As an example, it would be possible to use "project.max-contracts=removed". Implementation ============== This cases proposes to implement the above suggestions and to deliver the following changes to the existing platform. New Project ~~~~~~~~~~~ | This case will deliver a new project called "svc.inetd" that will be added to /etc/project. The line to be added is: | svc.inetd:5::::project.max-contracts=remove | The project name "svc.inetd" is a Project Private interface. svc:/network/inetd:default ~~~~~~~~~~~~~~~~~~~~~~~~~~ The manifest for svc:/network/inetd:default will be updated to define | the default inetd SMF service as a member of the svc.inetd project. Discussion ========== It is reasonable to ask the question if one daemon has a resource control problem, isn't it likely others will and thus isn't the inetd problem being solved more generic? To answer that question, it behooves us to recognise that inetd is a rather special daemon and in SMF parlance, it is also in a special cateogry - "restarter". The problem being investigated here (6271923) is particular to inetd in specific workload testing. Whilst we shouldn't be engineering the system to require tuning, removing limits for all processes removes the protection the limits offer, see PSARC/2004/460. In this regard, the best course of action is for project teams to analyse and understand the execution profiles that their daemons are likely to have and deliver special project defintions as required.