Linux system errors
No Space Left
Reviewed for reference consistency: August 11, 2026
the filesystem ran out of data blocks or of inodes
What 28 Means
The 28 error on the Linux system errors indicates no space left — the filesystem ran out of data blocks or of inodes. This typically occurs due to data blocks exhausted: the storage is genuinely full of file content.
Exit code 28 corresponds to ENOSPC, 'No space left on device'. The storage refused a write, and the interesting question is which table ran dry: the data blocks everyone checks first, or the inode table that allocates one entry per file regardless of size. A filesystem can be 90% empty by bytes and still out of inodes.
How to fix 28
General informational guidance, not professional advice. Commands can affect your system or data — back up first and proceed at your own risk. FixerCode is an independent reference, not affiliated with any vendor mentioned.
Check block-level free space
df -h shows consumed and free data blocks per filesystem, the first and most common form of ENOSPC.
df -hCheck inode-level free space
df -i shows the inode tables; a filesystem at 100% IUseU% is out of file slots despite free bytes.
df -iFind the largest consumers under a path
A sized summary of a suspect tree shows which subdirectories hold the bulk, guiding cleanup before the next write failure.
du -sh /var/log
Technical Background
ENOSPC has a second face that plain df does not show. The obvious failure — bytes exhausted — matches everyone's mental model. The quieter form is inode exhaustion: every file consumes one metadata entry from a table fixed at filesystem creation, so a directory of ten million empty files can stop all writes on a mostly empty volume.
The two failures need different inventories. Block exhaustion is found with the standard free-space view; inode exhaustion is found with its inode sibling. Misreading the first as the only form is why 'there is still space' confusion follows this errno around.
Quotas layer a third accounting on top: an identity's usage cap independent of both blocks and inodes physically remaining. On shared systems, the writer's own quota is often the binding constraint while every global number looks comfortable.
Common Causes
- Data blocks exhausted: the storage is genuinely full of file content
- Inode exhaustion: millions of small files consumed the metadata table while bytes remain free
- A per-user or per-group quota reached while the filesystem itself still has room
Typical Scenarios
- A log directory growing unchecked until writes start failing across the whole system
- A mail store or build cache with millions of tiny files hitting the inode wall while df shows free space
- A shared server where one account's quota is exhausted though the volume has gigabytes free
What to Know
Two checks cover the common ground: the block-level free view and the inode-level view of the same filesystem. When both show headroom, the per-identity quota report is the remaining table that could be full.
Frequently Asked Questions
Common questions about Linux 28 error
The most common reason is inode exhaustion: each file, however tiny, consumes one inode, and the inode table is sized at filesystem creation. df reports blocks; df -i reports inodes — the second number is the one that is empty.
Yes. Per-user and per-group quotas cap consumption independently of physical space, so one account can hit its cap while the volume holds free gigabytes. Quota reporting tools show the per-identity usage directly.
A memory-mapped file whose growth cannot allocate blocks ends up with mapped pages that have nothing to back them; the first touch of such a page raises SIGBUS. ENOSPC is the write-path symptom of the same full filesystem.
Related Error Codes
Bus Error — a memory access rejected at the hardware level, often around mmap'd files
Resource Busy — the target exists, but another holder refuses to release it right now
Too Many Open Files — the process hit its per-process descriptor ceiling
Read-Only Filesystem — the mount itself refuses writes, so permission changes cannot help
Related Errors From Other Categories
Similar error codes documented across different platforms and systems
A write under Docker's storage ran out of filesystem space and failed.
Git's internal object database is missing or corrupted.
The operating system denied Git's request for more RAM during a heavy operation.
Git detected corruption inside one of its compressed data bundles (packfiles).