> On 26 Aug 2019, at 19.29, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > On Mon, Aug 26, 2019 at 03:48:38AM +0100, Al Viro wrote: > >> We might be able to paper over that mess by doing what /dev/st does - >> checking that file_count(file) == 1 in ->flush() instance and doing commit >> there in such case. It's not entirely reliable, though, and it's definitely >> not something I'd like to see spreading. > > This "not entirely reliable" turns out to be an understatement. > If you have /proc/*/fdinfo/* being read from at the time of final close(2), > you'll get file_count(file) > 1 the last time ->flush() is called. In other > words, we'd get the data not committed at all. > ... > PS: just dropping the check in st_flush() is probably a bad idea - > as it is, it can't overlap with st_write() and after such change it > will… Yes, don’t just drop it. The tape semantics require that a file mark is written when the last opener closes this sequential device. This is why the check is there. Of course, it is good if someone finds a better solution for this. Thanks, Kai