libssh2\_sftp\_statvfs(3) libssh2 libssh2\_sftp\_statvfs(3)

# [NAME](#NAME)

libssh2\_sftp\_statvfs, libssh2\_sftp\_fstatvfs - get file system statistics

# [SYNOPSIS](#SYNOPSIS)

```
#include <libssh2.h>
#include <libssh2_sftp.h>
int
libssh2_sftp_statvfs(LIBSSH2_SFTP *sftp, const char *path,


                     size_t path_len, LIBSSH2_SFTP_STATVFS *st);
int
libssh2_sftp_fstatvfs(LIBSSH2_SFTP_HANDLE *handle,


                      LIBSSH2_SFTP_STATVFS *st)
```

# [DESCRIPTION](#DESCRIPTION)

These functions provide [statvfs(2)](/man/os/libssh2/statvfs.2)-like operations and require statvfs@openssh.com and fstatvfs@openssh.com extension support on the server.

*sftp* - SFTP instance as returned by [**libssh2\_sftp\_init(3)**](/man/os/libssh2/libssh2_sftp_init.3)

*handle* - SFTP File Handle as returned by [**libssh2\_sftp\_open\_ex(3)**](/man/os/libssh2/libssh2_sftp_open_ex.3)

*path* - full path of any file within the mounted file system.

*path\_len* - length of the full path.

*st* - Pointer to a LIBSSH2\_SFTP\_STATVFS structure to place file system statistics into.

# [DATA TYPES](#DATA_TYPES)

LIBSSH2\_SFTP\_STATVFS is a typedefed struct that is defined as below

```
struct _LIBSSH2_SFTP_STATVFS {


    libssh2_uint64_t  f_bsize;    /* file system block size */


    libssh2_uint64_t  f_frsize;   /* fragment size */


    libssh2_uint64_t  f_blocks;   /* size of fs in f_frsize units */


    libssh2_uint64_t  f_bfree;    /* # free blocks */


    libssh2_uint64_t  f_bavail;   /* # free blocks for non-root */


    libssh2_uint64_t  f_files;    /* # inodes */


    libssh2_uint64_t  f_ffree;    /* # free inodes */


    libssh2_uint64_t  f_favail;   /* # free inodes for non-root */


    libssh2_uint64_t  f_fsid;     /* file system ID */


    libssh2_uint64_t  f_flag;     /* mount flags */


    libssh2_uint64_t  f_namemax;  /* maximum filename length */
};
```

It is unspecified whether all members of the returned struct have meaningful values on all file systems.

The field *f\_flag* is a bit mask. Bits are defined as follows:

[LIBSSH2\_SFTP\_ST\_RDONLY](#LIBSSH2_SFTP_ST_RDONLY)

Read-only file system.

[LIBSSH2\_SFTP\_ST\_NOSUID](#LIBSSH2_SFTP_ST_NOSUID)

Set-user-ID/set-group-ID bits are ignored by [**exec**(3)](/man/os/libssh2/exec.3).

# [RETURN VALUE](#RETURN_VALUE)

Returns 0 on success or negative on failure. If used in non-blocking mode, it returns LIBSSH2\_ERROR\_EAGAIN when it would otherwise block. While LIBSSH2\_ERROR\_EAGAIN is a negative number, it is not really a failure per se.

# [ERRORS](#ERRORS)

*LIBSSH2\_ERROR\_ALLOC* - An internal memory allocation call failed.

*LIBSSH2\_ERROR\_SOCKET\_SEND* - Unable to send data on socket.

*LIBSSH2\_ERROR\_SOCKET\_TIMEOUT* -

*LIBSSH2\_ERROR\_SFTP\_PROTOCOL* - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server.

# [AVAILABILITY](#AVAILABILITY)

Added in libssh2 1.2.6

# [SEE ALSO](#SEE_ALSO)

[**libssh2\_sftp\_open\_ex(3)**](/man/os/libssh2/libssh2_sftp_open_ex.3)

22 May 2010 libssh2

---

Document: libssh2_sftp_statvfs(3) from libssh2 1.11.1-r11 (Chainguard OS)
Source: https://github.com/libssh2/libssh2.git
