## s390

s390 — plugin for operations with s390

## Functions

gboolean | bd_s390_init ()
void | bd_s390_close ()
GQuark | bd_s390_error_quark ()
gboolean | bd_s390_dasd_format ()
gboolean | bd_s390_dasd_needs_format ()
gchar * | bd_s390_sanitize_dev_input ()
gboolean | bd_s390_dasd_online ()
gboolean | bd_s390_dasd_is_ldl ()
gboolean | bd_s390_dasd_is_fba ()
gchar * | bd_s390_zfcp_sanitize_wwpn_input ()
gchar * | bd_s390_zfcp_sanitize_lun_input ()
gboolean | bd_s390_zfcp_online ()
gboolean | bd_s390_zfcp_scsi_offline ()
gboolean | bd_s390_zfcp_offline ()
gboolean | bd_s390_is_tech_avail ()

## Types and Values

enum | BDS390Error
#define | BD_S390_ERROR
enum | BDS390Tech
enum | BDS390TechMode

## Includes

    #include <s390.h>

## Description

A plugin for operations with s390 devices.

## Functions

### bd_s390_init ()

    gboolean
    bd_s390_init (void);

Initializes the plugin. **This function is called automatically by the library's initialization functions.**

### bd_s390_close ()

    void
    bd_s390_close (void);

Cleans up after the plugin. **This function is called automatically by the library's functions that unload it.**

### bd_s390_error_quark ()

    GQuark
    bd_s390_error_quark (void);

[skip]

### bd_s390_dasd_format ()

    gboolean
    bd_s390_dasd_format (const gchar *dasd,
                         const BDExtraArg **extra,
                         GError **error);

#### Parameters

dasd | dasd to format |
extra | extra options for the formatting (right now passed to the 'dasdfmt' utility). | [nullable][array zero-terminated=1]
error | place to store error (if any). | [out][optional]

#### Returns

whether dasdfmt was successful or not

Tech category: `BD_S390_TECH_DASD`-`BD_S390_TECH_MODE_MODIFY`

### bd_s390_dasd_needs_format ()

    gboolean
    bd_s390_dasd_needs_format (const gchar *dasd,
                               GError **error);

#### Parameters

dasd | dasd to check, given as device number |
error | place to store error (if any). | [out][optional]

#### Returns

whether a dasd needs dasdfmt run against it

Tech category: `BD_S390_TECH_DASD`-`BD_S390_TECH_MODE_QUERY`

### bd_s390_sanitize_dev_input ()

    gchar *
    bd_s390_sanitize_dev_input (const gchar *dev,
                                GError **error);

#### Parameters

dev | a DASD or zFCP device number |
error | place to store error (if any). | [out][optional]

#### Returns

a synthesized dasd or zfcp device number

Tech category: always available.

[transfer full]

### bd_s390_dasd_online ()

    gboolean
    bd_s390_dasd_online (const gchar *dasd,
                         GError **error);

#### Parameters

dasd | dasd to switch online, given as device number |
error | place to store error (if any). | [out][optional]

#### Returns

whether a dasd was successfully switched online

Tech category: `BD_S390_TECH_DASD`-`BD_S390_TECH_MODE_MODIFY`

### bd_s390_dasd_is_ldl ()

    gboolean
    bd_s390_dasd_is_ldl (const gchar *dasd,
                         GError **error);

#### Parameters

dasd | dasd to check, whether it is LDL formatted |
error | place to store error (if any). | [out][optional]

#### Returns

whether a dasd is LDL formatted

Tech category: `BD_S390_TECH_DASD`-`BD_S390_TECH_MODE_QUERY`

### bd_s390_dasd_is_fba ()

    gboolean
    bd_s390_dasd_is_fba (const gchar *dasd,
                         GError **error);

#### Parameters

dasd | dasd to check, whether it is FBA |
error | place to store error (if any). | [out][optional]

#### Returns

whether a dasd is FBA

Tech category: `BD_S390_TECH_DASD`-`BD_S390_TECH_MODE_QUERY`

### bd_s390_zfcp_sanitize_wwpn_input ()

    gchar *
    bd_s390_zfcp_sanitize_wwpn_input (const gchar *wwpn,
                                      GError **error);

#### Parameters

wwpn | a zFCP WWPN identifier |
error | place to store error (if any). | [out][optional]

#### Returns

a synthesized zFCP WWPN

Tech category: always available.

[transfer full]

### bd_s390_zfcp_sanitize_lun_input ()

    gchar *
    bd_s390_zfcp_sanitize_lun_input (const gchar *lun,
                                     GError **error);

#### Parameters

lun | a zFCP LUN identifier |
error | place to store error (if any). | [out][optional]

#### Returns

a synthesized zFCP LUN

Tech category: always available.

[transfer full]

### bd_s390_zfcp_online ()

    gboolean
    bd_s390_zfcp_online (const gchar *devno,
                         const gchar *wwpn,
                         const gchar *lun,
                         GError **error);

#### Parameters

devno | zfcp device number |
wwpn | zfcp WWPN (World Wide Port Number) |
lun | zfcp LUN (Logical Unit Number) |
error | place to store error (if any). | [out][optional]

#### Returns

whether a zFCP device was successfully switched online

Tech category: `BD_S390_TECH_ZFCP`-`BD_S390_TECH_MODE_MODIFY`

### bd_s390_zfcp_scsi_offline ()

    gboolean
    bd_s390_zfcp_scsi_offline (const gchar *devno,
                               const gchar *wwpn,
                               const gchar *lun,
                               GError **error);

#### Parameters

devno | zfcp device number |
wwpn | zfcp WWPN (World Wide Port Number) |
lun | zfcp LUN (Logical Unit Number) |
error | place to store error (if any). | [out][optional]

#### Returns

whether a LUN was successfully removed from its associated WWPN

This function looks through /proc/scsi/scsi and manually removes LUNs from associated WWPNs. zFCP devices are SCSI devices accessible over FCP protocol. In z/OS the IODF (I/O definition file) contains basic information about the I/O config, but WWPN and LUN configuration is done at the OS level, hence this function becomes necessary when switching the device offline. This particular sequence of actions is for some reason unnecessary when switching the device online. Chalk it up to s390x being s390x.

Tech category: `BD_S390_TECH_ZFCP`-`BD_S390_TECH_MODE_MODIFY`

### bd_s390_zfcp_offline ()

    gboolean
    bd_s390_zfcp_offline (const gchar *devno,
                          const gchar *wwpn,
                          const gchar *lun,
                          GError **error);

#### Parameters

devno | zfcp device number |
wwpn | zfcp WWPN (World Wide Port Number) |
lun | zfcp LUN (Logical Unit Number) |
error | place to store error (if any). | [out][optional]

#### Returns

whether a zfcp device was successfully switched offline

Tech category: `BD_S390_TECH_ZFCP`-`BD_S390_TECH_MODE_MODIFY`

### bd_s390_is_tech_avail ()

    gboolean
    bd_s390_is_tech_avail (BDS390Tech tech,
                           guint64 mode,
                           GError **error);

#### Parameters

tech | the queried tech |
mode | a bit mask of queried modes of operation (BDS390TechMode) for `tech` |
error | place to store error (details about why the `tech` -`mode` combination is not available). | [out][optional]

#### Returns

whether the `tech` -`mode` combination is available -- supported by the plugin implementation and having all the runtime dependencies available

## Types and Values

### enum BDS390Error

#### Members

BD_S390_ERROR_TECH_UNAVAIL |  |
BD_S390_ERROR_DEVICE |  |
BD_S390_ERROR_FORMAT_FAILED |  |
BD_S390_ERROR_DASDFMT |  |
BD_S390_ERROR_IO |  |

### BD_S390_ERROR

    #define             BD_S390_ERROR

### enum BDS390Tech

#### Members

BD_S390_TECH_DASD |  |
BD_S390_TECH_ZFCP |  |

### enum BDS390TechMode

#### Members

BD_S390_TECH_MODE_MODIFY |  |
BD_S390_TECH_MODE_QUERY |  |