quota: Change quotactl_path() systcall to an fd-based one
authorJan Kara <jack@suse.cz>
Tue, 25 May 2021 14:07:48 +0000 (16:07 +0200)
committerJan Kara <jack@suse.cz>
Mon, 7 Jun 2021 10:11:24 +0000 (12:11 +0200)
commit64c2c2c62f92339b176ea24403d8db16db36f9e6
treedbe1ee81ca112e1b0f6e7c971fc29e6d0f217c0e
parent21e4e15a846f86643a43c291cbed5dca3639fc2b
quota: Change quotactl_path() systcall to an fd-based one

Some users have pointed out that path-based syscalls are problematic in
some environments and at least directory fd argument and possibly also
resolve flags are desirable for such syscalls. Rather than
reimplementing all details of pathname lookup and following where it may
eventually evolve, let's go for full file descriptor based syscall
similar to how ioctl(2) works since the beginning. Managing of quotas
isn't performance sensitive so the extra overhead of open does not
matter and we are able to consume O_PATH descriptors as well which makes
open cheap anyway. Also for frequent operations (such as retrieving
usage information for all users) we can reuse single fd and in fact get
even better performance as well as avoiding races with possible remounts
etc.

Tested-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/quota.c
include/linux/syscalls.h
include/uapi/asm-generic/unistd.h
kernel/sys_ni.c