Message ID | 7514683c-3a04-5fd6-a455-c09a5b370bc5@redhat.com (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
On Thu, Feb 22, 2018 at 03:33:04PM -0600, Eric Sandeen wrote: > We must not get here very often, because any test of an error > from XFS_BUF_SET_PTR will fail because it returns whatever > is sent in as cnt. Fix the macro to return 0 so that > "error = XFS_BUF_SET_PTR()" works as expected. > > Should probably make this xfs_buf_associate_memory() to be > more like kernelspace, but for now just fix up the bug. > > Found this via xfs_logprint failing for no good reason. > > Signed-off-by: Eric Sandeen <sandeen@redhat.com> > --- > > diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h > index 81d2804..0ae7a28 100644 > --- a/libxfs/libxfs_io.h > +++ b/libxfs/libxfs_io.h > @@ -105,6 +105,7 @@ enum xfs_buf_flags_t { /* b_flags bits */ > #define XFS_BUF_SET_PTR(bp,p,cnt) ({ \ > (bp)->b_addr = (char *)(p); \ > XFS_BUF_SET_COUNT(bp,cnt); \ > + 0; \ There are only two callers of this macro and it's not exported to xfslibs headers, so why not just fix them not to care about the return value? --D > }) > > #define XFS_BUF_SET_ADDR(bp,blk) ((bp)->b_bn = (blk)) > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2/22/18 3:46 PM, Darrick J. Wong wrote: > On Thu, Feb 22, 2018 at 03:33:04PM -0600, Eric Sandeen wrote: >> We must not get here very often, because any test of an error >> from XFS_BUF_SET_PTR will fail because it returns whatever >> is sent in as cnt. Fix the macro to return 0 so that >> "error = XFS_BUF_SET_PTR()" works as expected. >> >> Should probably make this xfs_buf_associate_memory() to be >> more like kernelspace, but for now just fix up the bug. >> >> Found this via xfs_logprint failing for no good reason. >> >> Signed-off-by: Eric Sandeen <sandeen@redhat.com> >> --- >> >> diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h >> index 81d2804..0ae7a28 100644 >> --- a/libxfs/libxfs_io.h >> +++ b/libxfs/libxfs_io.h >> @@ -105,6 +105,7 @@ enum xfs_buf_flags_t { /* b_flags bits */ >> #define XFS_BUF_SET_PTR(bp,p,cnt) ({ \ >> (bp)->b_addr = (char *)(p); \ >> XFS_BUF_SET_COUNT(bp,cnt); \ >> + 0; \ > > There are only two callers of this macro and it's not exported to > xfslibs headers, so why not just fix them not to care about the return > value? because it marginally matches kernel code ... *shrug* I'd rather have libxlog diverge less from kernel, not more, overall. -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Feb 22, 2018 at 04:41:17PM -0600, Eric Sandeen wrote: > On 2/22/18 3:46 PM, Darrick J. Wong wrote: > > On Thu, Feb 22, 2018 at 03:33:04PM -0600, Eric Sandeen wrote: > >> We must not get here very often, because any test of an error > >> from XFS_BUF_SET_PTR will fail because it returns whatever > >> is sent in as cnt. Fix the macro to return 0 so that > >> "error = XFS_BUF_SET_PTR()" works as expected. > >> > >> Should probably make this xfs_buf_associate_memory() to be > >> more like kernelspace, but for now just fix up the bug. > >> > >> Found this via xfs_logprint failing for no good reason. > >> > >> Signed-off-by: Eric Sandeen <sandeen@redhat.com> > >> --- > >> > >> diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h > >> index 81d2804..0ae7a28 100644 > >> --- a/libxfs/libxfs_io.h > >> +++ b/libxfs/libxfs_io.h > >> @@ -105,6 +105,7 @@ enum xfs_buf_flags_t { /* b_flags bits */ > >> #define XFS_BUF_SET_PTR(bp,p,cnt) ({ \ > >> (bp)->b_addr = (char *)(p); \ > >> XFS_BUF_SET_COUNT(bp,cnt); \ > >> + 0; \ > > > > There are only two callers of this macro and it's not exported to > > xfslibs headers, so why not just fix them not to care about the return > > value? > > because it marginally matches kernel code ... *shrug* I'd rather > have libxlog diverge less from kernel, not more, overall. Uhh... well in that case, I think you should rename XFS_BUF_SET_PTR with xfs_buf_associate_memory (the helper function that xlog_bread_offset uses in the kernel). --D > > -Eric > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2/22/18 5:02 PM, Darrick J. Wong wrote: > On Thu, Feb 22, 2018 at 04:41:17PM -0600, Eric Sandeen wrote: >> On 2/22/18 3:46 PM, Darrick J. Wong wrote: >>> On Thu, Feb 22, 2018 at 03:33:04PM -0600, Eric Sandeen wrote: >>>> We must not get here very often, because any test of an error >>>> from XFS_BUF_SET_PTR will fail because it returns whatever >>>> is sent in as cnt. Fix the macro to return 0 so that >>>> "error = XFS_BUF_SET_PTR()" works as expected. >>>> >>>> Should probably make this xfs_buf_associate_memory() to be >>>> more like kernelspace, but for now just fix up the bug. >>>> >>>> Found this via xfs_logprint failing for no good reason. >>>> >>>> Signed-off-by: Eric Sandeen <sandeen@redhat.com> >>>> --- >>>> >>>> diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h >>>> index 81d2804..0ae7a28 100644 >>>> --- a/libxfs/libxfs_io.h >>>> +++ b/libxfs/libxfs_io.h >>>> @@ -105,6 +105,7 @@ enum xfs_buf_flags_t { /* b_flags bits */ >>>> #define XFS_BUF_SET_PTR(bp,p,cnt) ({ \ >>>> (bp)->b_addr = (char *)(p); \ >>>> XFS_BUF_SET_COUNT(bp,cnt); \ >>>> + 0; \ >>> >>> There are only two callers of this macro and it's not exported to >>> xfslibs headers, so why not just fix them not to care about the return >>> value? >> >> because it marginally matches kernel code ... *shrug* I'd rather >> have libxlog diverge less from kernel, not more, overall. > > Uhh... well in that case, I think you should rename XFS_BUF_SET_PTR > with xfs_buf_associate_memory (the helper function that > xlog_bread_offset uses in the kernel). "Should probably make this xfs_buf_associate_memory() to be more like kernelspace, but for now just fix up the bug." But sure, I can send a 2nd patch to do that. -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/libxfs/libxfs_io.h b/libxfs/libxfs_io.h index 81d2804..0ae7a28 100644 --- a/libxfs/libxfs_io.h +++ b/libxfs/libxfs_io.h @@ -105,6 +105,7 @@ enum xfs_buf_flags_t { /* b_flags bits */ #define XFS_BUF_SET_PTR(bp,p,cnt) ({ \ (bp)->b_addr = (char *)(p); \ XFS_BUF_SET_COUNT(bp,cnt); \ + 0; \ }) #define XFS_BUF_SET_ADDR(bp,blk) ((bp)->b_bn = (blk))
We must not get here very often, because any test of an error from XFS_BUF_SET_PTR will fail because it returns whatever is sent in as cnt. Fix the macro to return 0 so that "error = XFS_BUF_SET_PTR()" works as expected. Should probably make this xfs_buf_associate_memory() to be more like kernelspace, but for now just fix up the bug. Found this via xfs_logprint failing for no good reason. Signed-off-by: Eric Sandeen <sandeen@redhat.com> --- -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html