From: Archie C. <ar...@de...> - 2013-05-07 14:26:25
|
On Tue, May 7, 2013 at 8:44 AM, Miklos Szeredi <mi...@sz...> wrote: > On Tue, May 7, 2013 at 3:28 PM, Archie Cobbs <ar...@de...> wrote: > > Dipping a toe here... would it not work to do the following: > > > > 1. Add a new FUSE supported flag -o sync_umount > > 2. Allow only the root user to utilize this flag; non-root users would > > get an EPERM error back > > 3. Make unmounts behave synchronously whenever -o sync_umount is used? > > Sure, patches are welcome. > > One little problem: how do you go about making -osync_umount > root-only? Filtering this option in fusermount only works if you > update fusermount together with the kernel. But if only the kernel is > updated then old versions of fusermount will happily pass it through > to the kernel. > Presumably, at some point this option has to be communicated to the kernel. So that system call can return an error if the user is not root, right? I'm not familiar with the code, but wouldn't then this error simply propagate back up to the user code in the return value to fuse_main_real()(or other variant)? If so then there's no problem in the kernel/user mismatch scenario. On the other hand, if this information get transmitted asynchronously, then in the case that the kernel is new but the user libs are old, the kernel can simply ignore the -osync_umount option for non-root users. But that also begs the question as to why the user libs are designed so that errors from system calls can be silently ignored... -Archie -- Archie L. Cobbs |