public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Chuck Lever <cel@kernel.org>
To: Daniel Gomez <da.gomez@kernel.org>, kdevops@lists.linux.dev
Cc: Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [PATCH v2 29/37] guestfs: Configure how many extra drives to provision
Date: Tue, 2 Sep 2025 16:23:50 -0400	[thread overview]
Message-ID: <c6f1bc61-b63d-4c97-a126-cb9223c0ee45@kernel.org> (raw)
In-Reply-To: <6fd30a08-3808-4cac-88dc-e879c9f484d9@kernel.org>

On 9/2/25 4:19 PM, Daniel Gomez wrote:
> On 02/09/2025 15.54, Chuck Lever wrote:
>> From: Chuck Lever <chuck.lever@oracle.com>
>>
>> Some workflows create several guests but use only one or two extra
>> storage drives per guest. Enable configurations that reduce the
>> amount of storage allocated per guest to conserve local persistent
>> storage space on the host.
>>
>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> 
> This should allow workflows to specify the nr of drives needed, right?
> 
> Looks great optimization, thanks!
> 
> Reviewed-by: Daniel Gomez <da.gomez@samsung.com>
> 
>> ---
>>  kconfigs/Kconfig.libvirt                      | 45 +++++++++++++++++++
>>  .../roles/gen_nodes/templates/gen_drives.j2   |  8 ++--
>>  .../roles/guestfs/tasks/bringup/main.yml      |  2 +-
>>  3 files changed, 50 insertions(+), 5 deletions(-)
>>
>> diff --git a/kconfigs/Kconfig.libvirt b/kconfigs/Kconfig.libvirt
>> index 7fe231668229..961276ccc1b1 100644
>> --- a/kconfigs/Kconfig.libvirt
>> +++ b/kconfigs/Kconfig.libvirt
>> @@ -556,6 +556,51 @@ config LIBVIRT_HOST_PASSTHROUGH
>>  	      --pre 'make -s mrproper defconfig' \
>>  	    \-- make -s -j$(nproc) bzImage
>>  
>> +choice
>> +	prompt "Libvirt extra storage drive count"
>> +	default LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4
> 
> I see we are defaulting to what we had. So it's up to the user or defconfig to
> leverage this.
> 
>> +	help
>> +	  This option selects the number of extra storage drives to
>> +	  provision for each libvirt guest. Reduce this number to
>> +	  conserve local host storage capacity, if your workflows do
>> +	  not use all the extra drives.
>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_0
>> +	bool "0"
>> +	help
>> +	  Provision no extra storage drives per guest.
> 
> Curious, any reason to have a menu/choice instead of int?

This is the way drive count is handled in the terraform provider menus.
So, the reason is "consistency with existing input methods", no other
reason.


>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_1
>> +	bool "1"
>> +	help
>> +	  Provision one extra storage drive per guest.
>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_2
>> +	bool "2"
>> +	help
>> +	  Provision two extra storage drives per guest.
>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_3
>> +	bool "3"
>> +	help
>> +	  Provision three extra storage drives per guest.
>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4
>> +	bool "4"
>> +	help
>> +	  Provision four extra storages drive per guest.
>> +
>> +endchoice
>> +
>> +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT
>> +	int
>> +	output yaml
>> +	default 0 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_0
>> +	default 1 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_1
>> +	default 2 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_2
>> +	default 3 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_3
>> +	default 4 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4
>> +
>>  choice
>>  	prompt "Libvirt extra storage driver to use"
>>  	default LIBVIRT_EXTRA_STORAGE_DRIVE_VIRTIO
>> diff --git a/playbooks/roles/gen_nodes/templates/gen_drives.j2 b/playbooks/roles/gen_nodes/templates/gen_drives.j2
>> index 2de13da4ab8e..1040c0e19d84 100644
>> --- a/playbooks/roles/gen_nodes/templates/gen_drives.j2
>> +++ b/playbooks/roles/gen_nodes/templates/gen_drives.j2
>> @@ -1,6 +1,6 @@
>>  {% import './templates/drives.j2' as drives %}
>>  {% if libvirt_extra_storage_drive_ide %}
>> -{{ drives.gen_drive_ide(4,
>> +{{ drives.gen_drive_ide(libvirt_extra_storage_drive_count,
>>  			kdevops_storage_pool_path,
>>  			hostname,
>>  			libvirt_extra_drive_format,
>> @@ -18,7 +18,7 @@
>>  				    libvirt_extra_storage_aio_cache_mode,
>>  				    kdevops_storage_pool_path) }}
>>  {% else %}
>> -{{ drives.gen_drive_virtio(4,
>> +{{ drives.gen_drive_virtio(libvirt_extra_storage_drive_count,
>>                             kdevops_storage_pool_path,
>>                             hostname,
>>                             libvirt_extra_drive_format,
>> @@ -28,7 +28,7 @@
>>                             libvirt_extra_storage_virtio_physical_block_size) }}
>>  {% endif %}
>>  {% elif libvirt_extra_storage_drive_scsi %}
>> -{{ drives.gen_drive_scsi(4,
>> +{{ drives.gen_drive_scsi(libvirt_extra_storage_drive_count,
>>                           kdevops_storage_pool_path,
>>                           hostname,
>>                           libvirt_extra_drive_format,
>> @@ -46,7 +46,7 @@
>>  				  libvirt_extra_storage_aio_cache_mode,
>>  				  kdevops_storage_pool_path) }}
>>  {% else %}
>> -{{ drives.gen_drive_nvme(4,
>> +{{ drives.gen_drive_nvme(libvirt_extra_storage_drive_count,
>>  			 kdevops_storage_pool_path,
>>  			 hostname,
>>  			 libvirt_extra_drive_format,
>> diff --git a/playbooks/roles/guestfs/tasks/bringup/main.yml b/playbooks/roles/guestfs/tasks/bringup/main.yml
>> index bd9f52603a3b..3fd677ff4659 100644
>> --- a/playbooks/roles/guestfs/tasks/bringup/main.yml
>> +++ b/playbooks/roles/guestfs/tasks/bringup/main.yml
>> @@ -102,7 +102,7 @@
>>          path: "{{ storagedir }}/{{ inventory_hostname }}/extra{{ item }}.{{ libvirt_extra_drive_format }}"
>>        ansible.builtin.include_tasks:
>>          file: "{{ role_path }}/tasks/bringup/extra-disks.yml"
>> -      loop: "{{ range(0, 4) | list }}"
>> +      loop: "{{ range(0, libvirt_extra_storage_drive_count) | list }}"
>>        when:
>>          - not libvirt_enable_largeio|bool
>>  


-- 
Chuck Lever

  reply	other threads:[~2025-09-02 20:23 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-02 13:53 [PATCH v2 00/37] Various fixes Chuck Lever
2025-09-02 13:53 ` [PATCH v2 01/37] scripts: Update gen_ssh_key.sh Chuck Lever
2025-09-02 13:53 ` [PATCH v2 02/37] terraform/azure: Fix count of managed disks Chuck Lever
2025-09-02 13:53 ` [PATCH v2 03/37] terraform/azure: Remove tags from terraform configuration Chuck Lever
2025-09-02 13:53 ` [PATCH v2 04/37] terraform/azure: Enable network acceleration Chuck Lever
2025-09-02 13:53 ` [PATCH v2 05/37] terraform/azure: Make the resource group name a variable Chuck Lever
2025-09-02 13:53 ` [PATCH v2 06/37] terraform/azure: Remove the provider version constraint Chuck Lever
2025-09-02 13:53 ` [PATCH v2 07/37] terraform/azure: Update the RHEL publishers Chuck Lever
2025-09-02 13:53 ` [PATCH v2 08/37] terraform/oci: Work around oracle/oci provider bug Chuck Lever
2025-09-02 13:53 ` [PATCH v2 09/37] terraform/oci: Add Kconfig choices for disk performance provisioning Chuck Lever
2025-09-02 13:53 ` [PATCH v2 10/37] terraform/oci: Enable preemptible compute instances Chuck Lever
2025-09-02 13:53 ` [PATCH v2 11/37] terraform/aws: Fix zone selection for us_west1 Chuck Lever
2025-09-02 13:53 ` [PATCH v2 12/37] Revert "terraform/aws: Add Oracle Linux AMI selections" Chuck Lever
2025-09-02 13:54 ` [PATCH v2 13/37] terraform/aws: Remove unused terraform tags Chuck Lever
2025-09-02 13:54 ` [PATCH v2 14/37] terraform/GCE: Fix the default disk throughput values Chuck Lever
2025-09-02 13:54 ` [PATCH v2 15/37] terraform/gce: Remove unused tags Chuck Lever
2025-09-02 13:54 ` [PATCH v2 16/37] terraform/gce: Remove support for Fedora Chuck Lever
2025-09-02 13:54 ` [PATCH v2 17/37] terraform/gce: Update existing machine types and introduce new ones Chuck Lever
2025-09-02 13:54 ` [PATCH v2 18/37] terraform: Create the user's .ssh/config if it does not already exist Chuck Lever
2025-09-02 13:54 ` [PATCH v2 19/37] pynfs: Don't install xdrlib3 on older RHEL Chuck Lever
2025-09-02 13:54 ` [PATCH v2 20/37] guestfs: Update the guestfs playbook description Chuck Lever
2025-09-02 19:36   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 21/37] gen_hosts: Add 'localhost' to the [all] group Chuck Lever
2025-09-02 19:39   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 22/37] gen_hosts: Add [service] group to the builder host template Chuck Lever
2025-09-02 19:43   ` Daniel Gomez
2025-09-02 19:47     ` Chuck Lever
2025-09-02 20:38       ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 23/37] guestfs: Don't run the 'destroy' tags on the controller Chuck Lever
2025-09-02 19:54   ` Daniel Gomez
2025-09-02 19:59     ` Chuck Lever
2025-09-02 20:40       ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 24/37] base_image: Skip "locales-all" package on Fedora Chuck Lever
2025-09-02 19:57   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 25/37] update_etc_hosts: ipaddr Chuck Lever
2025-09-02 19:59   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 26/37] Add an Ansible requirements.yml file Chuck Lever
2025-09-02 20:06   ` Daniel Gomez
2025-09-02 20:13     ` Chuck Lever
2025-09-02 13:54 ` [PATCH v2 27/37] terraform/oci: Clean up white space in route table resource Chuck Lever
2025-09-02 20:10   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 28/37] guestfs: Correct the spelling of "drives" Chuck Lever
2025-09-02 20:14   ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 29/37] guestfs: Configure how many extra drives to provision Chuck Lever
2025-09-02 20:19   ` Daniel Gomez
2025-09-02 20:23     ` Chuck Lever [this message]
2025-09-02 13:54 ` [PATCH v2 30/37] ltp: Replace /opt with a symlink to data partition Chuck Lever
2025-09-02 13:54 ` [PATCH v2 31/37] terraform: Squelch Ansible complaints about missing inventory file Chuck Lever
2025-09-02 13:54 ` [PATCH v2 32/37] terraform: Skip localhost when waiting for targets to reboot Chuck Lever
2025-09-02 13:54 ` [PATCH v2 33/37] devconfig: include the "service" group in the playbooks hosts list Chuck Lever
2025-09-02 20:27   ` Daniel Gomez
2025-09-02 20:30     ` Chuck Lever
2025-09-02 20:45       ` Daniel Gomez
2025-09-02 13:54 ` [PATCH v2 34/37] Makefile: Remove CONFIG_TOPDIR_PATH_HAS_SHA256SUM Chuck Lever
2025-09-02 13:54 ` [PATCH v2 35/37] Makefile: Set TOPDIR_PATH and generate its sha256sum at run time Chuck Lever
2025-09-02 13:54 ` [PATCH v2 36/37] ansible.cfg: generate an ansible.cfg file in TOPDIR Chuck Lever
2025-09-02 13:54 ` [PATCH v2 37/37] inventory: generate the inventory pathname dynamically Chuck Lever
2025-09-02 15:24 ` [PATCH v2 00/37] Various fixes Luis Chamberlain
2025-09-02 20:34 ` Daniel Gomez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c6f1bc61-b63d-4c97-a126-cb9223c0ee45@kernel.org \
    --to=cel@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=da.gomez@kernel.org \
    --cc=kdevops@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox