HEX
Server: LiteSpeed
System: Linux us-phx-web629.main-hosting.eu 5.14.0-503.23.2.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 12 05:52:18 EST 2025 x86_64
User: u756937133 (756937133)
PHP: 8.2.30
Disabled: passthru,chgrp
Upload Files
File: //lib/python3.9/site-packages/tuned/plugins/__pycache__/plugin_mounts.cpython-39.pyc
a

�Գf��@srddlmZddlmZddlTddlmZmZddlZ	ddl
mZddlZe	j
��Ze�ZGdd�dej�ZdS)	�N�)�base)�*)�Popen�PIPE)�commandsc@steZdZdZedd��Zdd�Zedd��Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
eddd�dd��ZdS)�MountsPluginaP
	`mounts`::
	
	Enables or disables barriers for mounts according to the value of the
	[option]`disable_barriers` option. The [option]`disable_barriers`
	option has an optional value `force` which disables barriers even
	on mountpoints with write back caches. Note that only extended file
	systems (ext) are supported by this plug-in.
	cCs�i}d}tgd�ttddd���\}}dd�|��D�D]�}t|�dkrJq8|dd�\}}}t|�dkrp|dnd}	t|�dkr�|dnd}
|d	kr�|}q8|d
ks8|dvr�q8|
dus8|
dkr�q8|�|
t�||	d
��||
d�|�q8||_dS)z�
		Gets the information about disks, partitions and mountpoints. Stores information about used filesystem and
		creates a list of all underlying devices (in case of LVM) for each mountpoint.
		N)Zlsblkz-rnozTYPE,RM,KNAME,FSTYPE,MOUNTPOINTT)�stdout�stderrZ	close_fdsZuniversal_newlinescSsg|]}|���qS�)�split)�.0�linerr�?/usr/lib/python3.9/site-packages/tuned/plugins/plugin_mounts.py�
<listcomp>$�z>MountsPlugin._generate_mountpoint_topology.<locals>.<listcomp>��Zdisk�1)�partZlvmz[SWAP])�disks�device_name�
filesystemr)	rrZcommunicate�
splitlines�len�
setdefault�set�add�_mountpoint_topology)�clsZmountpoint_topologyZcurrent_diskr	r
�columnsZdevice_typeZdevice_removablerr�
mountpointrrr�_generate_mountpoint_topologys,�z*MountsPlugin._generate_mountpoint_topologycCs*|��d|_t|j���|_t�|_dS)NT)r"Z_devices_supportedrr�keysZ
_free_devicesZ_assigned_devices��selfrrr�
_init_devices;szMountsPlugin._init_devicescCsddiS)N�disable_barriersrr$rrr�_get_config_optionsAs�z MountsPlugin._get_config_optionscCsd|_d|_dS)NFT)Z_has_dynamic_tuningZ_has_static_tuning�r%�instancerrr�_instance_initGszMountsPlugin._instance_initcCsdS)Nrr)rrr�_instance_cleanupKszMountsPlugin._instance_cleanupcCs,t�d|�}|D]}t�|���SdS)zV
		Get device cache type. This will work only for devices on SCSI kernel subsystem.
		z+/sys/block/%s/device/scsi_disk/*/cache_typeN)�glob�cmdZ	read_file�strip)r%�deviceZsource_filenamesZsource_filenamerrr�_get_device_cache_typeNsz#MountsPlugin._get_device_cache_typecCs,|j|dD]}|�|�dkrdSqdS)zr
		Checks if the device has 'write back' cache. If the cache type cannot be determined, asume some other cache.
		rz
write backTF)rr1)r%r!r0rrr�_mountpoint_has_writeback_cacheWsz,MountsPlugin._mountpoint_has_writeback_cachecCs�td��\}|D]6}|��}|dddkr,q|d|kr|d}qVqWd�dSWd�n1sj0Y|�d�}|D]@}|�d�\}}	}
|d	ks�|d
kr�|
dkr�dS|d
kr�d
Sq�d
S)zP
		Checks if a given mountpoint is mounted with barriers enabled or disabled.
		z/proc/mountsr�/rrN�,�=Z	nobarrierZbarrier�0FT)�openr�	partition)r%r!Zmounts_filerr Zoption_list�options�option�name�sep�valuerrr�_mountpoint_has_barriers`s"
.
z%MountsPlugin._mountpoint_has_barrierscCsd|dd|g}t�|�dS)z
		Remounts partition.
		z/usr/bin/mountz-oz
remount,%sN)r.Zexecute)r%r8r9Zremount_commandrrr�_remount_partition}szMountsPlugin._remount_partitionr'T)Z
per_devicec
CsX|jd|d�}t|���dk}|p*|�|�}|�r
|s:dSd}|j|d�d�sXd}nj|sl|�|�rld}nV|�|�}	|	dur�d}n>|	d	kr�|r�t�	t
j|�d
Sd}n|r�t�t
j
|�d	S|dur�t�	d||f�dS|j�||	�t�	d
|�|�|d�nJ|�rdS|j�|�}	|	du�r.dSt�	d|�|�|d�|j�|�dS)Nr')Zcommand_namer�forcer�extzfilesystem not supportedzdevice uses write back cachezunknown current settingFTzbarriers already disabledz#not disabling barriers on '%s' (%s)zdisabling barriers on '%s'z	barrier=0zenabling barriers on '%s'z	barrier=1)Z_storage_key�str�lowerZ_option_boolr�
startswithr2r>�log�info�constsZSTR_VERIFY_PROFILE_OK�errorZSTR_VERIFY_PROFILE_FAILZ_storagerr?�getZunset)
r%�startr=r!ZverifyZignore_missingZstorage_keyr@Z
reject_reason�original_valuerrr�_disable_barriers�sP�

zMountsPlugin._disable_barriersN)�__name__�
__module__�__qualname__�__doc__�classmethodr"r&r(r+r,r1r2r>r?Zcommand_customrLrrrrrs

#
		
r)Ztuned.constsrG�rZ
decorators�
subprocessrrZ
tuned.logsZtunedZtuned.utils.commandsrr-ZlogsrIrEr.ZPluginrrrrr�<module>s