xfs: encapsulate bbcount validity checking
PATCH v2 5/10 xfs: encapsulate bbcount validity checking
Define a function that encapsulates checking the validity of a log block count.
(Updated from previous version--no longer includes error reporting in the encapsulated validation function.)
---fs/xfs/xfs_log_recover.c | 44 +++++++++++++++++++++++++++++---------------
fs/xfs/xfs_log_recover.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-)
fs/xfs/xfs_log_recover.c +26 -12
@@ -63,15 +63,29 @@ STATIC void xlog_recover_check_summary(x/* Number of basic blocks in a log sector */ #define xlog_sectbb (log) (1 << (log)->l_sectbb_log) +/* +* Verify the given count of basic blocks is valid number of blocks +* to specify for an operation involving the given XFS log buffer. +* Returns nonzero if the count is valid, 0 otherwise. +*/ + +inline static int +xlog_buf_bbcount_valid ( +xlog_t *log, +int bbcount) +{ +return bbcount >0 && bbcount <= log->l_logBBsize; +} + STATIC xfs_buf_t *xlog_get_bp (xlog_t *log,int nbblks) { -if (nbblks <=0 || nbblks > log->l_logBBsize) { -xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , nbblks); -XFS_ERROR_REPORT ("xlog_get_bp(1)" , -XFS_ERRLEVEL_HIGH , log->l_mp); +if (!xlog_buf_bbcount_valid (log, nbblks)) { +xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , + nbblks); +XFS_ERROR_REPORT (__func__,XFS_ERRLEVEL_HIGH , log->l_mp);return NULL ; }
@@ -121,10 +135,10 @@ xlog_bread_noalign( {int error; -if (nbblks <=0 || nbblks > log->l_logBBsize) { -xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , nbblks); -XFS_ERROR_REPORT ("xlog_bread(1)" , -XFS_ERRLEVEL_HIGH , log->l_mp); +if (!xlog_buf_bbcount_valid (log, nbblks)) { +xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , + nbblks); +XFS_ERROR_REPORT (__func__,XFS_ERRLEVEL_HIGH , log->l_mp);return EFSCORRUPTED ; }
@@ -183,10 +197,10 @@ xlog_bwrite( {int error; -if (nbblks <=0 || nbblks > log->l_logBBsize) { -xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , nbblks); -XFS_ERROR_REPORT ("xlog_bwrite(1)" , -XFS_ERRLEVEL_HIGH , log->l_mp); +if (!xlog_buf_bbcount_valid (log, nbblks)) { +xlog_warn ("XFS: Invalid block length (0x%x) given for buffer" , + nbblks); +XFS_ERROR_REPORT (__func__,XFS_ERRLEVEL_HIGH , log->l_mp);return EFSCORRUPTED ; }
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 7 lines · Alex Elder
Define a function that encapsulates checking the validity of a log block count.
(Updated from previous version--no longer includes error reporting in the encapsulated validation function.)
Signed-off-by Alex Elder <[email protected]>
but one small change needed:
fs/xfs/xfs_log_recover.c STATIC void xlog_recover_check_summary(x · line 72
Quoted 8 lines
fs/xfs/xfs_log_recover.c +7
-0+/* +* Verify the given count of basic blocks is valid number of blocks +* to specify for an operation involving the given XFS log buffer. +* Returns nonzero if the count is valid, 0 otherwise. +*/ + +inline static int
static inline int
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs