On Fri, 2013-01-25 at 16:09 +0100, Sebastian Riemer wrote: > On 20.01.2013 19:44, Ben Hutchings wrote: > > # Call fsync() > > python -c "import os; os.fsync(os.open('/dev/md0', os.O_RDWR))" > > --- END --- > > > > I assume that the sync request should be filtered out at some point > > before this assertion is made, since there can be nothing to sync. > > > > I wrote a test case in C. It gets SIGSEGV upon fsync. When making the > rdevs below also read-only the MD device can't be stopped anymore as it > thinks that there is still active IO. > > The attached patch should fix it. Please confirm.
I applied this on top of 3.2.37 and it certainly fixes the crash. However I wonder whether fsync() should fail or should immediately succeed. I don't know whether the installer expects it to succeed. Ben. > We have to return a > completion without incrementing the active IO count. Error code -EROFS > seems to be suited best. > > But the libc fsync gets -EIO anyway: > Input/output error > > Any objection? > > Cheers, > Sebastian -- Ben Hutchings Any smoothly functioning technology is indistinguishable from a rigged demo.
signature.asc
Description: This is a digitally signed message part