Loop: libblockdev Reference Manual

## Loop Loop — plugin for operations with loop devices |

## Functions

gboolean | bd_loop_check_deps ()
gboolean | bd_loop_init ()
void | bd_loop_close ()
GQuark | bd_loop_error_quark ()
gchar * | bd_loop_get_backing_file ()
gchar * | bd_loop_get_loop_name ()
gboolean | bd_loop_setup ()
gboolean | bd_loop_setup_from_fd ()
gboolean | bd_loop_teardown ()
gboolean | bd_loop_get_autoclear ()
gboolean | bd_loop_set_autoclear ()
gboolean | bd_loop_is_tech_avail ()

## Types and Values

#define | BD_LOOP_ERROR
enum | BDLoopError
enum | BDLoopTech
enum | BDLoopTechMode

## Includes

    #include <loop.h>

## Description

A plugin for operations with loop devices. All sizes passed in/out to/from the functions are in bytes.

## Functions

### bd_loop_check_deps ()

    gboolean
    bd_loop_check_deps (void);

#### Returns

whether the plugin's runtime dependencies are satisfied or not

Function checking plugin's runtime dependencies.

### bd_loop_init ()

    gboolean
    bd_loop_init (void);

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

### bd_loop_close ()

    void
    bd_loop_close (void);

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

### bd_loop_error_quark ()

    GQuark
    bd_loop_error_quark (void);

[skip]

### bd_loop_get_backing_file ()

    gchar *
    bd_loop_get_backing_file (const gchar *dev_name,
                              GError **error);

#### Parameters

dev_name | name of the loop device to get backing file for (e.g. "loop0") |
error | place to store error (if any). | [out]

#### Returns

path of the device's backing file or `NULL` if none is found

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_QUERY`.

[transfer full]

### bd_loop_get_loop_name ()

    gchar *
    bd_loop_get_loop_name (const gchar *file,
                           GError **error);

#### Parameters

file | path of the backing file to get loop name for |
error | place to store error (if any). | [out]

#### Returns

name of the loop device associated with the given `file`

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_QUERY`.

[transfer full]

### bd_loop_setup ()

    gboolean
    bd_loop_setup (const gchar *file,
                   guint64 offset,
                   guint64 size,
                   gboolean read_only,
                   gboolean part_scan,
                   const gchar **loop_name,
                   GError **error);

#### Parameters

file | file to setup as a loop device |
offset | offset of the start of the device (in `file` ) |
size | maximum size of the device (or 0 to leave unspecified) |
read_only | whether to setup as read-only (`TRUE`) or read-write (`FALSE`) |
part_scan | whether to enforce partition scan on the newly created device or not |
loop_name | if not `NULL`, it is used to store the name of the loop device. | [allow-none][out]
error | place to store error (if any). | [out]

#### Returns

whether the `file` was successfully setup as a loop device or not

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_CREATE`

### bd_loop_setup_from_fd ()

    gboolean
    bd_loop_setup_from_fd (gint fd,
                           guint64 offset,
                           guint64 size,
                           gboolean read_only,
                           gboolean part_scan,
                           const gchar **loop_name,
                           GError **error);

#### Parameters

fd | file descriptor for a file to setup as a new loop device |
offset | offset of the start of the device (in file given by `fd` ) |
size | maximum size of the device (or 0 to leave unspecified) |
read_only | whether to setup as read-only (`TRUE`) or read-write (`FALSE`) |
part_scan | whether to enforce partition scan on the newly created device or not |
loop_name | if not `NULL`, it is used to store the name of the loop device. | [allow-none][out]
error | place to store error (if any). | [out]

#### Returns

whether an new loop device was successfully setup for `fd` or not

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_CREATE`

### bd_loop_teardown ()

    gboolean
    bd_loop_teardown (const gchar *loop,
                      GError **error);

#### Parameters

loop | path or name of the loop device to tear down |
error | place to store error (if any). | [out]

#### Returns

whether the `loop` device was successfully torn down or not

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_DESTROY`

### bd_loop_get_autoclear ()

    gboolean
    bd_loop_get_autoclear (const gchar *loop,
                           GError **error);

#### Parameters

loop | path or name of the loop device |
error | place to store error (if any). | [out]

#### Returns

whether the autoclear flag is set on the `loop` device or not (if `FALSE`, `error` may be set)

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_QUERY`

### bd_loop_set_autoclear ()

    gboolean
    bd_loop_set_autoclear (const gchar *loop,
                           gboolean autoclear,
                           GError **error);

#### Parameters

loop | path or name of the loop device |
autoclear | whether to set or unset the autoclear flag |
error | place to store error (if any). | [out]

#### Returns

whether the autoclear flag was successfully set on the `loop` device or not

Tech category: `BD_LOOP_TECH_LOOP`-`BD_LOOP_TECH_MODE_MODIFY`

### bd_loop_is_tech_avail ()

    gboolean
    bd_loop_is_tech_avail (BDLoopTech tech,
                           guint64 mode,
                           GError **error);

#### Parameters

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

#### Returns

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

## Types and Values

### BD_LOOP_ERROR

    #define             BD_LOOP_ERROR

### enum BDLoopError

#### Members

BD_LOOP_ERROR_DEVICE |  |
BD_LOOP_ERROR_FAIL |  |
BD_LOOP_ERROR_TECH_UNAVAIL |  |

### enum BDLoopTech

#### Members

BD_LOOP_TECH_LOOP |  |

### enum BDLoopTechMode

#### Members

BD_LOOP_TECH_MODE_CREATE |  |
BD_LOOP_TECH_MODE_DESTROY |  |
BD_LOOP_TECH_MODE_MODIFY |  |
BD_LOOP_TECH_MODE_QUERY |  |