Message ID | 20240827115032.406321-4-cem@kernel.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | Get rid of libattr dependency | expand |
> */ > + > #define ATTR_ENTRY(buffer, index) \ Spurious whitespace change. > ((struct xfs_attrlist_ent *) \ > &((char *)buffer)[ ((struct xfs_attrlist *)(buffer))->al_offset[index] ]) > > +/* Attr flags used within xfsprogs, must match the definitions from libattr */ > +#define ATTR_ROOT 0x0002 /* use root namespace attributes in op */ > +#define ATTR_SECURE 0x0008 /* use security namespaces attributes in op */ Why do we need these vs just using XFS_ATTR_ROOT/XFS_ATTR_SECURE from xfs_da_format.h? > + struct xfs_attrlist *attrlist = (struct xfs_attrlist *)attrbuf; Overly long line.
On Tue, Aug 27, 2024 at 05:16:47AM GMT, Christoph Hellwig wrote: > > */ > > + > > #define ATTR_ENTRY(buffer, index) \ > > Spurious whitespace change. > > > ((struct xfs_attrlist_ent *) \ > > &((char *)buffer)[ ((struct xfs_attrlist *)(buffer))->al_offset[index] ]) > > > > +/* Attr flags used within xfsprogs, must match the definitions from libattr */ > > +#define ATTR_ROOT 0x0002 /* use root namespace attributes in op */ > > +#define ATTR_SECURE 0x0008 /* use security namespaces attributes in op */ > > Why do we need these vs just using XFS_ATTR_ROOT/XFS_ATTR_SECURE from > xfs_da_format.h? Because I didn't see XFS_ATTR_ROOT and XFS_ATTR_SECURE exists :) I'll take a look on it, and if we don't really need to define ATTR_ROOT/SECURE, I'll just keep ATTR_ENTRY locally to fsprops.h, we don't need a header file for just a single definition IMO. > > > + struct xfs_attrlist *attrlist = (struct xfs_attrlist *)attrbuf; > > Overly long line. Ok, Thanks! Carlos
On Tue, Aug 27, 2024 at 02:27:07PM +0200, Carlos Maiolino wrote: > On Tue, Aug 27, 2024 at 05:16:47AM GMT, Christoph Hellwig wrote: > > > */ > > > + > > > #define ATTR_ENTRY(buffer, index) \ > > > > Spurious whitespace change. > > > > > ((struct xfs_attrlist_ent *) \ > > > &((char *)buffer)[ ((struct xfs_attrlist *)(buffer))->al_offset[index] ]) > > > > > > +/* Attr flags used within xfsprogs, must match the definitions from libattr */ > > > +#define ATTR_ROOT 0x0002 /* use root namespace attributes in op */ > > > +#define ATTR_SECURE 0x0008 /* use security namespaces attributes in op */ > > > > Why do we need these vs just using XFS_ATTR_ROOT/XFS_ATTR_SECURE from > > xfs_da_format.h? > > Because I didn't see XFS_ATTR_ROOT and XFS_ATTR_SECURE exists :) Well if we're reusing symbols from xfs_fs.h then change these to XFS_IOC_ATTR_ROOT and XFS_IOC_ATTR_SECURE. > I'll take a look on it, and if we don't really need to define ATTR_ROOT/SECURE, > I'll just keep ATTR_ENTRY locally to fsprops.h, we don't need a header file for > just a single definition IMO. <shrug> I'd have turned them into namespaced libfrog functions in libfrog/attr.h, and demacro'd ATTR_ENTRY too: static inline struct xfs_attrlist_ent * libfrog_attr_entry( struct xfs_attrlist *list, unsigned int index) { char *buffer = (char *)list; return (struct xfs_attrlist_ent *)&buffer[list->al_offset[index]]; } static inline int libfrog_attr_list_by_handle( void *hanp, size_t hlen, void *buf, size_t bufsize, int flags, struct xfs_attrlist_cursor *cursor) { return attr_list_by_handle(hanp, hlen, buf, bufsize, flags, (struct attrlist_cursor *)cursor); } --D > > > > > > + struct xfs_attrlist *attrlist = (struct xfs_attrlist *)attrbuf; > > > > Overly long line. > > Ok, Thanks! > > Carlos >
On Tue, Aug 27, 2024 at 07:36:15AM -0700, Darrick J. Wong wrote: > > Because I didn't see XFS_ATTR_ROOT and XFS_ATTR_SECURE exists :) > > Well if we're reusing symbols from xfs_fs.h then change these to > XFS_IOC_ATTR_ROOT and XFS_IOC_ATTR_SECURE. Ah, yes. We've got yet another name for those..
diff --git a/libfrog/attr.h b/libfrog/attr.h index 9110499f2..f1a10b5ae 100644 --- a/libfrog/attr.h +++ b/libfrog/attr.h @@ -11,8 +11,13 @@ * * We are redifining here so we don't need to keep libattr as a dependency anymore */ + #define ATTR_ENTRY(buffer, index) \ ((struct xfs_attrlist_ent *) \ &((char *)buffer)[ ((struct xfs_attrlist *)(buffer))->al_offset[index] ]) +/* Attr flags used within xfsprogs, must match the definitions from libattr */ +#define ATTR_ROOT 0x0002 /* use root namespace attributes in op */ +#define ATTR_SECURE 0x0008 /* use security namespaces attributes in op */ + #endif /* __LIBFROG_ATTR_H__ */ diff --git a/scrub/Makefile b/scrub/Makefile index 53e8cb02a..1e1109048 100644 --- a/scrub/Makefile +++ b/scrub/Makefile @@ -100,10 +100,6 @@ ifeq ($(HAVE_MALLINFO2),yes) LCFLAGS += -DHAVE_MALLINFO2 endif -ifeq ($(HAVE_LIBATTR),yes) -LCFLAGS += -DHAVE_LIBATTR -endif - ifeq ($(HAVE_LIBICU),yes) CFILES += unicrash.c LCFLAGS += -DHAVE_LIBICU $(LIBICU_CFLAGS) diff --git a/scrub/phase5.c b/scrub/phase5.c index 27fa29be6..2e495643f 100644 --- a/scrub/phase5.c +++ b/scrub/phase5.c @@ -20,6 +20,7 @@ #include "libfrog/scrub.h" #include "libfrog/bitmap.h" #include "libfrog/bulkstat.h" +#include "libfrog/attr.h" #include "xfs_scrub.h" #include "common.h" #include "inodes.h" @@ -164,7 +165,6 @@ out_unicrash: return ret; } -#ifdef HAVE_LIBATTR /* Routines to scan all of an inode's xattrs for name problems. */ struct attrns_decode { int flags; @@ -193,8 +193,8 @@ check_xattr_ns_names( struct xfs_attrlist_cursor cur; char attrbuf[XFS_XATTR_LIST_MAX]; char keybuf[XATTR_NAME_MAX + 1]; - struct attrlist *attrlist = (struct attrlist *)attrbuf; - struct attrlist_ent *ent; + struct xfs_attrlist *attrlist = (struct xfs_attrlist *)attrbuf; + struct xfs_attrlist_ent *ent; struct unicrash *uc = NULL; int i; int error; @@ -267,9 +267,6 @@ check_xattr_names( } return ret; } -#else -# define check_xattr_names(c, d, h, b) (0) -#endif /* HAVE_LIBATTR */ static int render_ino_from_handle(