First, we have a device personality that can be "attached" to any (SCSI-) device.
If the user does not select/attach a personality, some standard or 'default' personality would be used (probably the one
with the name default
)
struct device_personality {
char *name; /* the name for the personality, to display in the UI */
/* other required properties, like is this for a SCSI HDD, or SCSI CD ROM? or ATA HDD/CDROM? etc. */
struct device_personality *parent; /* a simple inheritance model, device personalities can inherit
from others and only override those modepages that they care