On Wed, Aug 09, 2023 at 03:39:23PM -0700, Darrick J. Wong wrote: > On Wed, Aug 09, 2023 at 03:05:39PM -0700, Christoph Hellwig wrote: > > Copy and paste the commit message from Darrick into a comment to explain > > the seemly odd invalidate_bdev in xfs_shutdown_devices. > > ^ seemingly? > > > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > --- > > fs/xfs/xfs_super.c | 26 ++++++++++++++++++++++++++ > > 1 file changed, 26 insertions(+) > > > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > > index 4ae3b01ed038c7..c169beb0d8cab3 100644 > > --- a/fs/xfs/xfs_super.c > > +++ b/fs/xfs/xfs_super.c > > @@ -399,6 +399,32 @@ STATIC void > > xfs_shutdown_devices( > > struct xfs_mount *mp) > > { > > + /* > > + * Udev is triggered whenever anyone closes a block device or unmounts > > + * a file systemm on a block device. > > + * The default udev rules invoke blkid to read the fs super and create > > + * symlinks to the bdev under /dev/disk. For this, it uses buffered > > + * reads through the page cache. > > + * > > + * xfs_db also uses buffered reads to examine metadata. There is no > > + * coordination between xfs_db and udev, which means that they can run > > + * concurrently. Note there is no coordination between the kernel and > > + * blkid either. > > + * > > + * On a system with 64k pages, the page cache can cache the superblock > > + * and the root inode (and hence the root directory) with the same 64k > > + * page. If udev spawns blkid after the mkfs and the system is busy > > + * enough that it is still running when xfs_db starts up, they'll both > > + * read from the same page in the pagecache. > > + * > > + * The unmount writes updated inode metadata to disk directly. The XFS > > + * buffer cache does not use the bdev pagecache, nor does it invalidate > > + * the pagecache on umount. If the above scenario occurs, the pagecache > > This sentence reads a little strangely, since "nor does it invalidate" > would seem to conflict with the invalidate_bdev call below. I suggest > changing the verb a bit: > > "The XFS buffer cache does not use the bdev pagecache, so it needs to > invalidate that pagecache on unmount." > > With those two things changed, > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> Fixed in-tree.