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
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).
An uncompressed file in Git's internal database has an invalid checksum or zero bytes.