MINI MINI MANI MO
ó
©=[c @ sœ d d l j Z d d l m Z d d l Td d l m Z m Z d d l Z d d l
m Z d d l Z e j
j ƒ Z e ƒ Z d e j f d „ ƒ YZ d S( iÿÿÿÿNi ( t base( t *( t Popent PIPE( t commandst MountsPluginc B s† e Z d Z e d „ ƒ Z d „ Z e d „ ƒ Z d „ Z d „ Z d „ Z d „ Z
d „ Z d „ Z e
d
d e ƒd „ ƒ Z RS(
s.
Plugin for tuning options of mount-points.
c
C s‚ i } d } t d d d g d t d t d t d t ƒj ƒ \ } } x-g | j ƒ D] } | j ƒ ^ qU D]} t | ƒ d k r‰ qk n | d \ } } } t | ƒ d k r¸ | d n d }
t | ƒ d k rÚ | d n d } | d
k rø | } qk n | d k sk | d k rqk n | d k sk | d k r4qk n | j | i t ƒ d 6| d 6|
d 6ƒ | | d j
| ƒ qk W| | _ d S( sÁ
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.
t lsblks -rnos TYPE,RM,KNAME,FSTYPE,MOUNTPOINTt stdoutt stderrt close_fdst universal_newlinesi i t diskt 1t partt lvms [SWAP]t diskst device_namet
filesystemN( R
R ( t NoneR R t Truet communicatet
splitlinest splitt lent
setdefaultt sett addt _mountpoint_topology( t clst mountpoint_topologyt current_diskR R t linet columnst device_typet device_removableR R t
mountpoint( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _generate_mountpoint_topology s, ,""(c C s; | j ƒ t | _ t | j j ƒ ƒ | _ t ƒ | _ d S( N( R$ R t _devices_supportedR R t keyst
_free_devicest _assigned_devices( t self( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt
_init_devices5 s
c C s i d d 6S( Nt disable_barriers( R ( R) ( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _get_config_options; s c C s t | _ t | _ d S( N( t Falset _has_dynamic_tuningR t _has_static_tuning( R) t instance( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _instance_initA s c C s d S( N( ( R) R0 ( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _instance_cleanupE s c C s8 t j d | ƒ } x | D] } t j | ƒ j ƒ SWd S( sV
Get device cache type. This will work only for devices on SCSI kernel subsystem.
s+ /sys/block/%s/device/scsi_disk/*/cache_typeN( t globt cmdt read_filet stripR ( R) t devicet source_filenamest source_filename( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _get_device_cache_typeH s
c C s9 x2 | j | d D] } | j | ƒ d k r t Sq Wt S( sr
Checks if the device has 'write back' cache. If the cache type cannot be determined, asume some other cache.
R s
write back( R R: R R- ( R) R# R7 ( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _mountpoint_has_writeback_cacheQ s c C sæ t d ƒ ` } xV | D]J } | j ƒ } | d d d k rB q n | d | k r | d } Pq q Wd SWd QX| j d ƒ } xb | D]V } | j d ƒ \ } } }
| d k sÆ | d
k rÊ |
d k rÊ t S| d
k r„ t Sq„ Wt Sd S( sP
Checks if a given mountpoint is mounted with barriers enabled or disabled.
s /proc/mountsi t /i i Nt ,t =t nobarriert barriert 0( t openR R t partitionR- R ( R) R# t mounts_fileR R t option_listt optionst optiont namet sept value( ( s? /usr/lib/python2.7/site-packages/tuned/plugins/plugin_mounts.pyt _mountpoint_has_barriersZ s"