[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#696650: fsync() on read-only RAID triggers BUG



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.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: