On 10:22 30/06, David Sterba wrote: > On Mon, Jun 22, 2020 at 11:20:11AM -0500, Goldwyn Rodrigues wrote: > > From: Goldwyn Rodrigues <rgoldwyn@xxxxxxxx> > > > > We don't need the inode locked to check for the error bit. Move the > > check early. > > This lacks explanation why it's not needed. I've checked history of the > code and it seems the error state flags has been after all other checks > since long, starting in acce952b0263825d. But it's part of a bigger > patch and is not specific about this call site. > > If something checks state and changes the location, we need to make sure > the state is not affected by code between the old and new location. This is a filesystem state bit as opposed to a file level state bit. The bit states that you don't let writes proceed because of a filesystem error. Why would you need a inode level lock for that? It is better to return -EROFS early enough rather than take a lock, check for filesystem failure, release the lock and then return an error. The other check is in start_transaction, which perhaps is for writes-in-flight. -- Goldwyn
