On Sun, May 04, 2025 at 08:59:09AM +0000, John Garry wrote:
+static inline int xfs_buftarg_sync(struct xfs_buftarg *btp)
+{
+ return sync_blockdev(btp->bt_bdev);
+}
What is the point in having this wrapper?
+/*
+ * Flush and invalidate all devices' pagecaches before reading any metadata
+ * because XFS doesn't use the bdev pagecache.
+ */
+STATIC int
+xfs_preflush_devices(
+ struct xfs_mount *mp)
+{
+ int error;
+
+ error = xfs_buftarg_sync(mp->m_ddev_targp);
+ if (error)
+ return error;
+
+ if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
+ error = xfs_buftarg_sync(mp->m_ddev_targp);
+ if (error)
+ return error;
+ }
Why does this duplicate all the logic instead of being folded into
xfs_open_devices?