---
name: "libssh2_sftp_statvfs"
section: "3"
platform: "linux"
package: "libssh2"
version: "1.11.1-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libssh2_sftp_statvfs"
---

# libssh2\_sftp\_statvfs(3)

get file system statistics

## NAME

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

## 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

These functions provide [statvfs(2)](/statvfs/2.md)-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)](/libssh2_sftp_init/3.md)**

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

*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

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

  Read-only file system.

- LIBSSH2\_SFTP\_ST\_NOSUID

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

## 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

*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

Added in libssh2 1.2.6

## SEE ALSO

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