HEX
Server: Apache
System: Linux nc-ph-4101.simplemoneygoals.com 5.14.0-503.21.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Jan 12 09:45:05 EST 2025 x86_64
User: dailygoldindex (1004)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/tuned/plugins/__pycache__/plugin_mounts.cpython-39.pyc
a

,�g��@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)�MountsPlugina=
	Enables or disables barriers for mounts according to the value of the
	boolean option [option]`disable_barriers`. The option additionally allows
	the special value `force`, which disables barriers even on mountpoints with
	write back caches.

	NOTE: 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_options@s�z MountsPlugin._get_config_optionscCsd|_d|_dS)NFT)Z_has_dynamic_tuningZ_has_static_tuning�r%�instancerrr�_instance_initFszMountsPlugin._instance_initcCsdS)Nrr)rrr�_instance_cleanupJszMountsPlugin._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_typeMsz#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_cacheVsz,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_devicecCsX|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_missingr*Zstorage_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