On Fri, Nov 20, 2020 at 09:05:48PM +0100, Jan Kara wrote: > The code is already switched to it AFAICT (the lock is really only used in > the two places that write i_size). But the problem is that in theory two > i_size_write() calls can race in a way that the resulting stored i_size is a > mix of two stored sizes. Now I have hard time imagining how this could > happen for a block device and if two reconfigurations of a block device > could race like that we'd have a large problems anyway... Now that you mention it, yes - i_size_write needs to be under i_rwsem or an equivalent lock. We could look into using i_rwsem also for block device, but for now the spinlock seems to be doing fine. Note that in current mainline we only have such a lock protecting i_size of the block_device inode, but none for the size in hd_struct.