JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/tuned/plugins/__pycache__/plugin_mounts.cpython-39.opt-1.pyc

a

���h��@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

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg