linux/fs/hfsplus
Ernesto A. Fernández d92915c35b hfsplus: prevent btree data loss on ENOSPC
Inserting or deleting a record in a btree may require splitting several of
its nodes.  If we hit ENOSPC halfway through, the new nodes will be left
orphaned and their records will be lost.  This could mean lost inodes,
extents or xattrs.

Henceforth, check the available disk space before making any changes.
This still leaves the potential problem of corruption on ENOMEM.

The patch can be tested with xfstests generic/027.

Link: http://lkml.kernel.org/r/4596eef22fbda137b4ffa0272d92f0da15364421.1536269129.git.ernesto.mnd.fernandez@gmail.com
Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-10-31 08:54:13 -07:00
..
Kconfig hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
Makefile hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
attributes.c hfsplus: prevent btree data loss on ENOSPC 2018-10-31 08:54:13 -07:00
bfind.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bitmap.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
bnode.c hfs/hfsplus: clean up unused variables in bnode.c 2017-11-17 16:10:03 -08:00
brec.c hfsplus: fix BUG on bnode parent update 2018-10-31 08:54:13 -07:00
btree.c hfsplus: prevent btree data loss on ENOSPC 2018-10-31 08:54:13 -07:00
catalog.c hfsplus: prevent btree data loss on ENOSPC 2018-10-31 08:54:13 -07:00
dir.c hfsplus: fix NULL dereference in hfsplus_lookup() 2018-08-23 18:48:42 -07:00
extents.c hfsplus: prevent btree data loss on ENOSPC 2018-10-31 08:54:13 -07:00
hfsplus_fs.h hfsplus: prevent btree data loss on ENOSPC 2018-10-31 08:54:13 -07:00
hfsplus_raw.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
inode.c hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
ioctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
options.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
part_tbl.c hfsplus: use bio op accessors 2016-06-07 13:41:38 -06:00
super.c hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
tables.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
unicode.c hfsplus: fix decomposition of Hangul characters 2018-08-22 10:52:50 -07:00
wrapper.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xattr.c hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
xattr.h hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
xattr_security.c hfsplus: drop ACL support 2018-08-22 10:52:50 -07:00
xattr_trusted.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xattr_user.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00