* [PATCH] xfs: compat_xfs_bstat does not have forkoff
@ 2014-09-29 1:41 Dave Chinner
2014-09-29 10:43 ` Christoph Hellwig
0 siblings, 1 reply; 3+ messages in thread
From: Dave Chinner @ 2014-09-29 1:41 UTC (permalink / raw)
To: xfs
From: Dave Chinner <dchinner@redhat.com>
struct compat_xfs_bstat is missing the di_forkoff field and so does
not fully translate the structure correctly. Fix it.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
fs/xfs/xfs_ioctl32.c | 2 ++
fs/xfs/xfs_ioctl32.h | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
index a554646..94ce027 100644
--- a/fs/xfs/xfs_ioctl32.c
+++ b/fs/xfs/xfs_ioctl32.c
@@ -160,6 +160,7 @@ xfs_ioctl32_bstat_copyin(
get_user(bstat->bs_gen, &bstat32->bs_gen) ||
get_user(bstat->bs_projid_lo, &bstat32->bs_projid_lo) ||
get_user(bstat->bs_projid_hi, &bstat32->bs_projid_hi) ||
+ get_user(bstat->bs_forkoff, &bstat32->bs_forkoff) ||
get_user(bstat->bs_dmevmask, &bstat32->bs_dmevmask) ||
get_user(bstat->bs_dmstate, &bstat32->bs_dmstate) ||
get_user(bstat->bs_aextents, &bstat32->bs_aextents))
@@ -214,6 +215,7 @@ xfs_bulkstat_one_fmt_compat(
put_user(buffer->bs_gen, &p32->bs_gen) ||
put_user(buffer->bs_projid, &p32->bs_projid) ||
put_user(buffer->bs_projid_hi, &p32->bs_projid_hi) ||
+ put_user(buffer->bs_forkoff, &p32->bs_forkoff) ||
put_user(buffer->bs_dmevmask, &p32->bs_dmevmask) ||
put_user(buffer->bs_dmstate, &p32->bs_dmstate) ||
put_user(buffer->bs_aextents, &p32->bs_aextents))
diff --git a/fs/xfs/xfs_ioctl32.h b/fs/xfs/xfs_ioctl32.h
index 80f4060..b1bb454 100644
--- a/fs/xfs/xfs_ioctl32.h
+++ b/fs/xfs/xfs_ioctl32.h
@@ -67,8 +67,9 @@ typedef struct compat_xfs_bstat {
__u32 bs_gen; /* generation count */
__u16 bs_projid_lo; /* lower part of project id */
#define bs_projid bs_projid_lo /* (previously just bs_projid) */
+ __u16 bs_forkoff; /* inode fork offset in bytes */
__u16 bs_projid_hi; /* high part of project id */
- unsigned char bs_pad[12]; /* pad space, unused */
+ unsigned char bs_pad[10]; /* pad space, unused */
__u32 bs_dmevmask; /* DMIG event mask */
__u16 bs_dmstate; /* DMIG state info */
__u16 bs_aextents; /* attribute number of extents */
--
2.0.0
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] xfs: compat_xfs_bstat does not have forkoff
2014-09-29 1:41 [PATCH] xfs: compat_xfs_bstat does not have forkoff Dave Chinner
@ 2014-09-29 10:43 ` Christoph Hellwig
2014-10-01 22:54 ` Dave Chinner
0 siblings, 1 reply; 3+ messages in thread
From: Christoph Hellwig @ 2014-09-29 10:43 UTC (permalink / raw)
To: Dave Chinner; +Cc: xfs
On Mon, Sep 29, 2014 at 11:41:26AM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> struct compat_xfs_bstat is missing the di_forkoff field and so does
> not fully translate the structure correctly. Fix it.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
> ---
> fs/xfs/xfs_ioctl32.c | 2 ++
> fs/xfs/xfs_ioctl32.h | 3 ++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
Any chance to get an xfstests test that verifies the forkoff value?
Even if it would only reproduce this bug when running 32-bit userspace
on a 64-bit kernel it would be useful I think.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] xfs: compat_xfs_bstat does not have forkoff
2014-09-29 10:43 ` Christoph Hellwig
@ 2014-10-01 22:54 ` Dave Chinner
0 siblings, 0 replies; 3+ messages in thread
From: Dave Chinner @ 2014-10-01 22:54 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: xfs
On Mon, Sep 29, 2014 at 03:43:18AM -0700, Christoph Hellwig wrote:
> On Mon, Sep 29, 2014 at 11:41:26AM +1000, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@redhat.com>
> >
> > struct compat_xfs_bstat is missing the di_forkoff field and so does
> > not fully translate the structure correctly. Fix it.
> >
> > Signed-off-by: Dave Chinner <dchinner@redhat.com>
> > ---
> > fs/xfs/xfs_ioctl32.c | 2 ++
> > fs/xfs/xfs_ioctl32.h | 3 ++-
> > 2 files changed, 4 insertions(+), 1 deletion(-)
>
> Looks good,
>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
>
> Any chance to get an xfstests test that verifies the forkoff value?
> Even if it would only reproduce this bug when running 32-bit userspace
> on a 64-bit kernel it would be useful I think.
There are already xfs_fsr tests that are dependent on forkoff being
set to correctly defrag a file successfully. The fact that nobody
has noticed that these fail tends to imply nobody runs xfstests with
a 32 bit userspace on 64 bit kernels....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-10-01 22:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-29 1:41 [PATCH] xfs: compat_xfs_bstat does not have forkoff Dave Chinner
2014-09-29 10:43 ` Christoph Hellwig
2014-10-01 22:54 ` Dave Chinner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox