On Tue, May 04, 2004 at 08:55:46AM +1000, Nathan Scott wrote:
> Hi Herbert,
>
> On Mon, May 03, 2004 at 11:58:41PM +0200, Herbert Poetzl wrote:
> >
> > Hi Folks!
> >
> > xfs_ioc_xattr() uses in XFS_IOC_GETXFLAGS the
> > XFS_XFLAG_* defines for di_flags comparison,
> > shouldn't that be XFS_DIFLAG_IMMUTABLE and
> > friends instead?
> >
> > if (ip->i_d.di_flags & XFS_XFLAG_IMMUTABLE)
> > flags |= LINUX_XFLAG_IMMUTABLE;
> > if (ip->i_d.di_flags & XFS_XFLAG_APPEND)
> > flags |= LINUX_XFLAG_APPEND;
>
> Yep, good catch - thanks.
well, stumbled over another one ... this
actually needs a little additional code ...
xfs_ioc_xattr() in XFS_IOC_SETXFLAGS calls
xfs_merge_ioc_xflags() which is supposed to
merge XFS_XFLAG_* values, but it is passed
a di_flags, so you gonna need some conversion
like ...
old_flags = 0;
if (ip->i_d.di_flags & XFS_DIFLAG_IMMUTABLE)
oldflags |= LINUX_XFLAG_IMMUTABLE;
if (ip->i_d.di_flags & XFS_DIFLAG_APPEND)
oldflags |= LINUX_XFLAG_APPEND;
...
va.va_mask = XFS_AT_XFLAGS;
va.va_xflags = xfs_merge_ioc_xflags(flags, old_flags);
HTH,
Herbert
> cheers.
>
> --
> Nathan
|