xfs: make xfs_buf_read return an error code
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 24 Jan 2020 01:01:17 +0000 (17:01 -0800)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sun, 26 Jan 2020 22:32:26 +0000 (14:32 -0800)
Convert xfs_buf_read() to return numeric error codes like most
everywhere else in xfs.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/libxfs/xfs_attr_remote.c
fs/xfs/xfs_buf.h
fs/xfs/xfs_log_recover.c
fs/xfs/xfs_symlink.c

index 7266e280b3e8648fbd406a9f242ed1d1220a9f91..8b7f74b3bea291c38368c0d4f2927070262986a5 100644 (file)
@@ -418,10 +418,10 @@ xfs_attr_rmtval_get(
                               (map[i].br_startblock != HOLESTARTBLOCK));
                        dblkno = XFS_FSB_TO_DADDR(mp, map[i].br_startblock);
                        dblkcnt = XFS_FSB_TO_BB(mp, map[i].br_blockcount);
-                       bp = xfs_buf_read(mp->m_ddev_targp, dblkno, dblkcnt, 0,
-                                       &xfs_attr3_rmt_buf_ops);
-                       if (!bp)
-                               return -ENOMEM;
+                       error = xfs_buf_read(mp->m_ddev_targp, dblkno, dblkcnt,
+                                       0, &bp, &xfs_attr3_rmt_buf_ops);
+                       if (error)
+                               return error;
 
                        error = xfs_attr_rmtval_copyout(mp, bp, args->dp->i_ino,
                                                        &offset, &valuelen,
index 7f7bd1edd99ef1cdbd2376f3851937e248c92a1a..aa145ad25e9ad27c8d358cc0a4a11229f7caf540 100644 (file)
@@ -213,22 +213,18 @@ xfs_buf_get(
        return xfs_buf_get_map(target, &map, 1, 0, bpp);
 }
 
-static inline struct xfs_buf *
+static inline int
 xfs_buf_read(
        struct xfs_buftarg      *target,
        xfs_daddr_t             blkno,
        size_t                  numblks,
        xfs_buf_flags_t         flags,
+       struct xfs_buf          **bpp,
        const struct xfs_buf_ops *ops)
 {
-       struct xfs_buf          *bp;
-       int                     error;
        DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
 
-       error = xfs_buf_read_map(target, &map, 1, flags, &bp, ops);
-       if (error)
-               return NULL;
-       return bp;
+       return xfs_buf_read_map(target, &map, 1, flags, bpp, ops);
 }
 
 static inline void
index c805a02f0078b4b4a12396fd9a7d2c98337c17d9..ac79537d3275dde3079852920923019aa20d98fb 100644 (file)
@@ -2745,10 +2745,10 @@ xlog_recover_buffer_pass2(
        if (buf_f->blf_flags & XFS_BLF_INODE_BUF)
                buf_flags |= XBF_UNMAPPED;
 
-       bp = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno, buf_f->blf_len,
-                         buf_flags, NULL);
-       if (!bp)
-               return -ENOMEM;
+       error = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno, buf_f->blf_len,
+                         buf_flags, &bp, NULL);
+       if (error)
+               return error;
 
        /*
         * Recover the buffer only if we get an LSN from it and it's less than
@@ -2945,12 +2945,10 @@ xlog_recover_inode_pass2(
        }
        trace_xfs_log_recover_inode_recover(log, in_f);
 
-       bp = xfs_buf_read(mp->m_ddev_targp, in_f->ilf_blkno, in_f->ilf_len, 0,
-                         &xfs_inode_buf_ops);
-       if (!bp) {
-               error = -ENOMEM;
+       error = xfs_buf_read(mp->m_ddev_targp, in_f->ilf_blkno, in_f->ilf_len,
+                       0, &bp, &xfs_inode_buf_ops);
+       if (error)
                goto error;
-       }
        ASSERT(in_f->ilf_fields & XFS_ILOG_CORE);
        dip = xfs_buf_offset(bp, in_f->ilf_boffset);
 
index b255a393a73b49b6e60400c83bdb0fafa0eb8e77..b94d7b9b55d0cfca1e30ba1a8b2156c8777e97ed 100644 (file)
@@ -53,10 +53,10 @@ xfs_readlink_bmap_ilocked(
                d = XFS_FSB_TO_DADDR(mp, mval[n].br_startblock);
                byte_cnt = XFS_FSB_TO_B(mp, mval[n].br_blockcount);
 
-               bp = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt), 0,
-                                 &xfs_symlink_buf_ops);
-               if (!bp)
-                       return -ENOMEM;
+               error = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt), 0,
+                               &bp, &xfs_symlink_buf_ops);
+               if (error)
+                       return error;
                byte_cnt = XFS_SYMLINK_BUF_SPACE(mp, byte_cnt);
                if (pathlen < byte_cnt)
                        byte_cnt = pathlen;