aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/libxfs/xfs_rtbitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/libxfs/xfs_rtbitmap.c')
-rw-r--r--fs/xfs/libxfs/xfs_rtbitmap.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c
index 9b59ffa1fc19..951c044e24e4 100644
--- a/fs/xfs/libxfs/xfs_rtbitmap.c
+++ b/fs/xfs/libxfs/xfs_rtbitmap.c
@@ -42,6 +42,31 @@
42 */ 42 */
43 43
44/* 44/*
45 * Real time buffers need verifiers to avoid runtime warnings during IO.
46 * We don't have anything to verify, however, so these are just dummy
47 * operations.
48 */
49static void
50xfs_rtbuf_verify_read(
51 struct xfs_buf *bp)
52{
53 return;
54}
55
56static void
57xfs_rtbuf_verify_write(
58 struct xfs_buf *bp)
59{
60 return;
61}
62
63const struct xfs_buf_ops xfs_rtbuf_ops = {
64 .name = "rtbuf",
65 .verify_read = xfs_rtbuf_verify_read,
66 .verify_write = xfs_rtbuf_verify_write,
67};
68
69/*
45 * Get a buffer for the bitmap or summary file block specified. 70 * Get a buffer for the bitmap or summary file block specified.
46 * The buffer is returned read and locked. 71 * The buffer is returned read and locked.
47 */ 72 */
@@ -68,9 +93,12 @@ xfs_rtbuf_get(
68 ASSERT(map.br_startblock != NULLFSBLOCK); 93 ASSERT(map.br_startblock != NULLFSBLOCK);
69 error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, 94 error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp,
70 XFS_FSB_TO_DADDR(mp, map.br_startblock), 95 XFS_FSB_TO_DADDR(mp, map.br_startblock),
71 mp->m_bsize, 0, &bp, NULL); 96 mp->m_bsize, 0, &bp, &xfs_rtbuf_ops);
72 if (error) 97 if (error)
73 return error; 98 return error;
99
100 xfs_trans_buf_set_type(tp, bp, issum ? XFS_BLFT_RTSUMMARY_BUF
101 : XFS_BLFT_RTBITMAP_BUF);
74 *bpp = bp; 102 *bpp = bp;
75 return 0; 103 return 0;
76} 104}
@@ -983,7 +1011,7 @@ xfs_rtfree_extent(
983 mp->m_sb.sb_rextents) { 1011 mp->m_sb.sb_rextents) {
984 if (!(mp->m_rbmip->i_d.di_flags & XFS_DIFLAG_NEWRTBM)) 1012 if (!(mp->m_rbmip->i_d.di_flags & XFS_DIFLAG_NEWRTBM))
985 mp->m_rbmip->i_d.di_flags |= XFS_DIFLAG_NEWRTBM; 1013 mp->m_rbmip->i_d.di_flags |= XFS_DIFLAG_NEWRTBM;
986 *(__uint64_t *)&mp->m_rbmip->i_d.di_atime = 0; 1014 *(__uint64_t *)&VFS_I(mp->m_rbmip)->i_atime = 0;
987 xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE); 1015 xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE);
988 } 1016 }
989 return 0; 1017 return 0;