On Wed, Oct 11, 2017 at 7:17 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > On Wed, Oct 11, 2017 at 6:28 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: >> On Wed, Oct 11, 2017 at 6:21 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: >>> On Wed, Oct 11, 2017 at 05:47:18PM -0700, Dan Williams wrote: >>>> The MAP_DIRECT mechanism for mmap intends to use a file lease to prevent >>>> block map changes while the file is mapped. It requires the fd to setup >>>> an fasync_struct for signalling lease break events to the lease holder. >>> >>> *UGH* >>> >>> That looks like one hell of a bad API. You are not even guaranteed that >>> descriptor will remain be still open by the time you pass it down to your >>> helper, nevermind the moment when event actually happens... >> >> What am I missing, fcntl(F_SETLEASE) seems to follow a similar pattern? > > Ugh, so I think the difference with F_SETLEASE is that the lease ends > when the fd is closed. In the mmap case the lease follows the lifetime > of the vma. I'll rethink this interface... I'm not seeing a lot of good options outside of documenting that if you close the fd that is registered with MAP_DIRECT you may still get SIGIO notifications with si_fd set to the stale fd.