On Tue, Mar 26, 2019 at 09:40:08PM +0800, Qu Wenruo wrote:
> 
> 
> On 2019/3/26 下午8:17, Nikolay Borisov wrote:
> >
> >
> > On 26.03.19 г. 12:49 ч., fdman...@kernel.org wrote:
> >> From: Filipe Manana <fdman...@suse.com>
> >>
> >> Whan a filesystem is mounted with the nologreplay mount option, which
> >> requires it to be mounted in RO mode as well, we can not allow discard on
> >> free space inside block groups, because log trees refer to extents that
> >> are not pinned in a block group's free space cache (pinning the extents is
> >> precisely the first phase of replaying a log tree).
> >>
> >> So do not allow the fitrim ioctl to do anything when the filesystem is
> >> mounted with the nologreplay option, because later it can be mounted RW
> >> without that option, which causes log replay to happen and result in
> >> either a failure to replay the log trees (leading to a mount failure), a
> >> crash or some silent corruption.
> >>
> >> Reported-by: Darrick J. Wong <darrick.w...@oracle.com>
> >> Signed-off-by: Filipe Manana <fdman...@suse.com>
> >
> > Does it make sense to make the check a bit more specific and only return
> > EROFS when NOLOGREPLAY and the log tree has non-null generation?
> 
> To me fstrim is a WRITE operation, why it is allowed even in RO mount?

It's write to the block device, not to the filesystem.

Reply via email to