ubifs: Limit number of xattrs per inode
authorRichard Weinberger <richard@nod.at>
Thu, 4 Apr 2019 22:34:38 +0000 (00:34 +0200)
committerRichard Weinberger <richard@nod.at>
Tue, 7 May 2019 19:58:31 +0000 (21:58 +0200)
commit9ca2d732644484488db31123ecd3bf122b551566
tree11fa3f5849b76e2f47a199a0c2994a99d53002dc
parent988bec41318f3fa897e2f8af271bd456936d6caf
ubifs: Limit number of xattrs per inode

Since we have to write one deletion inode per xattr
into the journal, limit the max number of xattrs.

In theory UBIFS supported up to 65535 xattrs per inode.
But this never worked correctly, expect no powercuts happened.
Now we support only as many xattrs as we can store in 50% of a
LEB.
Even for tiny flashes this allows dozens of xattrs per inode,
which is for an embedded filesystem still fine.

In case someone has existing inodes with much more xattrs, it is
still possible to delete them.
UBIFS will fall back to an non-atomic deletion mode.

Reported-by: Stefan Agner <stefan@agner.ch>
Fixes: 1e51764a3c2ac ("UBIFS: add new flash file system")
Signed-off-by: Richard Weinberger <richard@nod.at>
fs/ubifs/dir.c
fs/ubifs/journal.c
fs/ubifs/misc.h
fs/ubifs/super.c
fs/ubifs/ubifs.h
fs/ubifs/xattr.c