• Waiman Long's avatar
    ipc: allow boot time extension of IPCMNI from 32k to 16M · 5ac893b8
    Waiman Long authored
    The maximum number of unique System V IPC identifiers was limited to
    32k.  That limit should be big enough for most use cases.
    
    However, there are some users out there requesting for more, especially
    those that are migrating from Solaris which uses 24 bits for unique
    identifiers.  To satisfy the need of those users, a new boot time kernel
    option "ipcmni_extend" is added to extend the IPCMNI value to 16M.  This
    is a 512X increase which should be big enough for users out there that
    need a large number of unique IPC identifier.
    
    The use of this new option will change the pattern of the IPC
    identifiers returned by functions like shmget(2).  An application that
    depends on such pattern may not work properly.  So it should only be
    used if the users really need more than 32k of unique IPC numbers.
    
    This new option does have the side effect of reducing the maximum number
    of unique sequence numbers from 64k down to 128.  So it is a trade-off.
    
    The computation of a new IPC id is not done in the performance critical
    path.  So a little bit of additional overhead shouldn't have any real
    performance impact.
    
    Link: http://lkml.kernel.org/r/20190329204930.21620-1-longman@redhat.comSigned-off-by: default avatarWaiman Long <longman@redhat.com>
    Acked-by: default avatarManfred Spraul <manfred@colorfullife.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Davidlohr Bueso <dbueso@suse.de>
    Cc: "Eric W . Biederman" <ebiederm@xmission.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5ac893b8
util.c 22.1 KB