# 53100 — disk_full

> Source-backed reference for PostgreSQL SQLSTATE 53100.
---

# 53100

## At a glance {#at-a-glance}
`53100` reports the explicit short-write branch of a file write. Fixed paths cover base-backup output and relation-file extension; the diagnostic names the file, partial byte count, requested count, and offset or block.

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| Field | Value |
| --- | --- |
| SQLSTATE | `53100` |
| Condition | `disk_full` |
| Status | `active` |
| Known present by | `7.4` |
| Locked snapshots | `9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3` |
| Macros | `ERRCODE_DISK_FULL` |
| Aliases | `—` |

<!-- source facts: data/errcodes/53100.json -->
<!-- END SQLSTATE FACTS -->

## Meaning {#meaning}
The short-write messages carry the target file, bytes written versus requested, and an offset or block, with the hint `Check free disk space.`. The same `md.c` function first handles a negative `FileWrite` result through `errcode_for_file_access()` and `%m`; in the fixed helper's saved-errno switch, `ENOSPC` maps to 53100, while `EFBIG` and `EDQUOT` are not listed and therefore take its `ERRCODE_INTERNAL_ERROR` default. This is a storage-write boundary, not a generic SQL data error or proof that the host volume is full.

## Diagnosis {#diagnosis}
Identify the filesystem and target path from the message, then check free space, quota, mount state, write errors, and whether the database or backup destination is the affected volume. Compare the offset/block and partial byte count with the operation and correlate server logs. If the primary is `could not ...: %m` rather than the short-write template, inspect the saved errno: the fixed helper maps `ENOSPC` to 53100, but sends unlisted `EFBIG` and `EDQUOT` through its internal-error default. Do not relabel an errno-specific SQLSTATE as 53100.

## Response {#response}
Free or provision capacity on the named filesystem, correct the reported write condition, or redirect the operation to a suitable destination. Treat a partial base backup or relation write as incomplete until the operation has been validated; resume or retry only under that operation's documented recovery procedure. If this `ERROR` occurs inside an explicit transaction, use `ROLLBACK` or `ROLLBACK TO SAVEPOINT` before retrying; in autocommit, retry only after the storage cause is corrected. Do not create disk pressure on a user instance to test this code.

## Versions {#versions}
The locked catalogue records this condition from 7.4; the cited write paths are PostgreSQL 18.6 source. No disk-full runtime was run.

## Related {#related}
[`53000`](../53000/)

## Sources {#sources}
[`src/backend/backup/basebackup_server.c#L177-L182`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/backup/basebackup_server.c#L177)

[`src/backend/storage/smgr/md.c#L521-L526`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/smgr/md.c#L521)

[`src/backend/storage/smgr/md.c#L512-L526`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/storage/smgr/md.c#L512)

[`src/backend/utils/error/elog.c#L868-L938`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/error/elog.c#L868)

The structured [evidence record](../data/evidence/53100.json) records fixed messages and the source/runtime boundary.
