On Thu, Feb 03, 2022 at 09:45:40AM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > The last of the DMAPI stubs were removed from Linux 5.17, so drop this > functionality altogether. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> Patch looks good, and fixes the broken build: Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> Tested-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > --- > doc/xfsdump.html | 1 - > po/de.po | 5 --- > po/pl.po | 5 --- > restore/content.c | 99 +++-------------------------------------------------- > restore/tree.c | 33 ------------------ > restore/tree.h | 1 - > 6 files changed, 6 insertions(+), 138 deletions(-) > > diff --git a/doc/xfsdump.html b/doc/xfsdump.html > index d4d157f..2c9324b 100644 > --- a/doc/xfsdump.html > +++ b/doc/xfsdump.html > @@ -1092,7 +1092,6 @@ the size of the hash table. > bool_t p_ownerpr - whether to restore directory owner/group attributes > bool_t p_fullpr - whether restoring a full level 0 non-resumed dump > bool_t p_ignoreorphpr - set if positive subtree or interactive > - bool_t p_restoredmpr - restore DMI event settings > </pre> > <p> > The hash table maps the inode number to the tree node. It is a > diff --git a/po/de.po b/po/de.po > index 62face8..bdf47d1 100644 > --- a/po/de.po > +++ b/po/de.po > @@ -3972,11 +3972,6 @@ msgstr "" > msgid "no additional media objects needed\n" > msgstr "keine zusätzlichen Mediendateien benötigt\n" > > -#: .././restore/content.c:9547 > -#, c-format > -msgid "fssetdm_by_handle of %s failed %s\n" > -msgstr "fssetdm_by_handle von %s fehlgeschlagen %s\n" > - > #: .././restore/content.c:9566 > #, c-format > msgid "%s quota information written to '%s'\n" > diff --git a/po/pl.po b/po/pl.po > index 3cba8d6..ba25420 100644 > --- a/po/pl.po > +++ b/po/pl.po > @@ -3455,11 +3455,6 @@ msgstr "nie są potrzebne dodatkowe obiekty nośnika\n" > msgid "path_to_handle of %s failed:%s\n" > msgstr "path_to_handle na %s nie powiodło się: %s\n" > > -#: .././restore/content.c:9723 > -#, c-format > -msgid "fssetdm_by_handle of %s failed %s\n" > -msgstr "fssetdm_by_handle na %s nie powiodło się: %s\n" > - > #: .././restore/content.c:9742 > #, c-format > msgid "%s quota information written to '%s'\n" > diff --git a/restore/content.c b/restore/content.c > index 6b22965..e9b0a07 100644 > --- a/restore/content.c > +++ b/restore/content.c > @@ -477,9 +477,6 @@ struct pers { > /* how many pages following the header page are reserved > * for the subtree descriptors > */ > - bool_t restoredmpr; > - /* restore DMAPI event settings > - */ > bool_t restoreextattrpr; > /* restore extended attributes > */ > @@ -858,7 +855,6 @@ static void partial_reg(ix_t d_index, xfs_ino_t ino, off64_t fsize, > off64_t offset, off64_t sz); > static bool_t partial_check (xfs_ino_t ino, off64_t fsize); > static bool_t partial_check2 (partial_rest_t *isptr, off64_t fsize); > -static int do_fssetdm_by_handle(char *path, fsdmidata_t *fdmp); > static int quotafilecheck(char *type, char *dstdir, char *quotafile); > > /* definition of locally defined global variables ****************************/ > @@ -894,7 +890,6 @@ content_init(int argc, char *argv[], size64_t vmsz) > bool_t changepr;/* cmd line overwrite inhibit specification */ > bool_t interpr; /* cmd line interactive mode requested */ > bool_t ownerpr; /* cmd line chown/chmod requested */ > - bool_t restoredmpr; /* cmd line restore dm api attrs specification */ > bool_t restoreextattrpr; /* cmd line restore extended attr spec */ > bool_t sesscpltpr; /* force completion of prev interrupted session */ > ix_t stcnt; /* cmd line number of subtrees requested */ > @@ -956,7 +951,6 @@ content_init(int argc, char *argv[], size64_t vmsz) > newerpr = BOOL_FALSE; > changepr = BOOL_FALSE; > ownerpr = BOOL_FALSE; > - restoredmpr = BOOL_FALSE; > restoreextattrpr = BOOL_TRUE; > sesscpltpr = BOOL_FALSE; > stcnt = 0; > @@ -1162,8 +1156,11 @@ content_init(int argc, char *argv[], size64_t vmsz) > tranp->t_noinvupdatepr = BOOL_TRUE; > break; > case GETOPT_SETDM: > - restoredmpr = BOOL_TRUE; > - break; > + mlog(MLOG_NORMAL | MLOG_ERROR, _( > + "-%c option no longer supported\n"), > + GETOPT_SETDM); > + usage(); > + return BOOL_FALSE; > case GETOPT_ALERTPROG: > if (!optarg || optarg[0] == '-') { > mlog(MLOG_NORMAL | MLOG_ERROR, _( > @@ -1574,12 +1571,6 @@ content_init(int argc, char *argv[], size64_t vmsz) > } > > if (persp->a.valpr) { > - if (restoredmpr && persp->a.restoredmpr != restoredmpr) { > - mlog(MLOG_NORMAL | MLOG_ERROR, _( > - "-%c cannot reset flag from previous restore\n"), > - GETOPT_SETDM); > - return BOOL_FALSE; > - } > if (!restoreextattrpr && > persp->a.restoreextattrpr != restoreextattrpr) { > mlog(MLOG_NORMAL | MLOG_ERROR, _( > @@ -1734,7 +1725,6 @@ content_init(int argc, char *argv[], size64_t vmsz) > persp->a.newerpr = newerpr; > persp->a.newertime = newertime; > } > - persp->a.restoredmpr = restoredmpr; > if (!persp->a.dstdirisxfspr) { > restoreextattrpr = BOOL_FALSE; > } > @@ -2365,7 +2355,6 @@ content_stream_restore(ix_t thrdix) > scrhdrp->cih_inomap_nondircnt, > tranp->t_vmsz, > fullpr, > - persp->a.restoredmpr, > persp->a.dstdirisxfspr, > grhdrp->gh_version, > tranp->t_truncategenpr); > @@ -7549,12 +7538,6 @@ restore_reg(drive_t *drivep, > } > } > > - if (persp->a.dstdirisxfspr && persp->a.restoredmpr) { > - HsmBeginRestoreFile(bstatp, > - *fdp, > - &strctxp->sc_hsmflags); > - } > - > return BOOL_TRUE; > } > > @@ -7726,26 +7709,6 @@ restore_complete_reg(stream_context_t *strcxtp) > strerror(errno)); > } > > - if (persp->a.dstdirisxfspr && persp->a.restoredmpr) { > - fsdmidata_t fssetdm; > - > - /* Set the DMAPI Fields. */ > - fssetdm.fsd_dmevmask = bstatp->bs_dmevmask; > - fssetdm.fsd_padding = 0; > - fssetdm.fsd_dmstate = bstatp->bs_dmstate; > - > - rval = ioctl(fd, XFS_IOC_FSSETDM, (void *)&fssetdm); > - if (rval) { > - mlog(MLOG_NORMAL | MLOG_WARNING, > - _("attempt to set DMI attributes of %s " > - "failed: %s\n"), > - path, > - strerror(errno)); > - } > - > - HsmEndRestoreFile(path, fd, &strcxtp->sc_hsmflags); > - } > - > /* set any extended inode flags that couldn't be set > * prior to restoring the data. > */ > @@ -8064,17 +8027,6 @@ restore_symlink(drive_t *drivep, > strerror(errno)); > } > } > - > - if (persp->a.restoredmpr) { > - fsdmidata_t fssetdm; > - > - /* Restore DMAPI fields. */ > - > - fssetdm.fsd_dmevmask = bstatp->bs_dmevmask; > - fssetdm.fsd_padding = 0; > - fssetdm.fsd_dmstate = bstatp->bs_dmstate; > - rval = do_fssetdm_by_handle(path, &fssetdm); > - } > } > > return BOOL_TRUE; > @@ -8777,7 +8729,7 @@ restore_extattr(drive_t *drivep, > } > assert(nread == (int)(recsz - EXTATTRHDR_SZ)); > > - if (!persp->a.restoreextattrpr && !persp->a.restoredmpr) { > + if (!persp->a.restoreextattrpr) { > continue; > } > > @@ -8796,19 +8748,6 @@ restore_extattr(drive_t *drivep, > } > } else if (isfilerestored && path[0] != '\0') { > setextattr(path, ahdrp); > - > - if (persp->a.dstdirisxfspr && persp->a.restoredmpr) { > - int flag = 0; > - char *attrname = (char *)&ahdrp[1]; > - if (ahdrp->ah_flags & EXTATTRHDR_FLAGS_ROOT) > - flag = ATTR_ROOT; > - else if (ahdrp->ah_flags & EXTATTRHDR_FLAGS_SECURE) > - flag = ATTR_SECURE; > - > - HsmRestoreAttribute(flag, > - attrname, > - &strctxp->sc_hsmflags); > - } > } > } > /* NOTREACHED */ > @@ -9709,32 +9648,6 @@ display_needed_objects(purp_t purp, > } > } > > -static int > -do_fssetdm_by_handle( > - char *path, > - fsdmidata_t *fdmp) > -{ > - void *hanp; > - size_t hlen=0; > - int rc; > - > - if (path_to_handle(path, &hanp, &hlen)) { > - mlog(MLOG_NORMAL | MLOG_WARNING, _( > - "path_to_handle of %s failed:%s\n"), > - path, strerror(errno)); > - return -1; > - } > - > - rc = fssetdm_by_handle(hanp, hlen, fdmp); > - free_handle(hanp, hlen); > - if (rc) { > - mlog(MLOG_NORMAL | MLOG_WARNING, _( > - "fssetdm_by_handle of %s failed %s\n"), > - path, strerror(errno)); > - } > - return rc; > -} > - > static int > quotafilecheck(char *type, char *dstdir, char *quotafile) > { > diff --git a/restore/tree.c b/restore/tree.c > index 0670318..5429b74 100644 > --- a/restore/tree.c > +++ b/restore/tree.c > @@ -108,9 +108,6 @@ struct treePersStorage { > bool_t p_ignoreorphpr; > /* set if positive subtree or interactive > */ > - bool_t p_restoredmpr; > - /* restore DMI event settings > - */ > bool_t p_truncategenpr; > /* truncate inode generation number (for compatibility > * with xfsdump format 2 and earlier) > @@ -348,7 +345,6 @@ tree_init(char *hkdir, > size64_t nondircnt, > size64_t vmsz, > bool_t fullpr, > - bool_t restoredmpr, > bool_t dstdirisxfspr, > uint32_t dumpformat, > bool_t truncategenpr) > @@ -508,10 +504,6 @@ tree_init(char *hkdir, > */ > persp->p_fullpr = fullpr; > > - /* record if DMI event settings should be restored > - */ > - persp->p_restoredmpr = restoredmpr; > - > /* record if truncated generation numbers are required > */ > if (dumpformat < GLOBAL_HDR_VERSION_3) { > @@ -2550,31 +2542,6 @@ setdirattr(dah_t dah, char *path) > } > } > > - if (tranp->t_dstdirisxfspr && persp->p_restoredmpr) { > - fsdmidata_t fssetdm; > - > - fssetdm.fsd_dmevmask = dirattr_get_dmevmask(dah); > - fssetdm.fsd_padding = 0; /* not used */ > - fssetdm.fsd_dmstate = (uint16_t)dirattr_get_dmstate(dah); > - > - /* restore DMAPI event settings etc. > - */ > - rval = ioctl(fd, > - XFS_IOC_FSSETDM, > - (void *)&fssetdm); > - if (rval) { > - mlog(errno == EINVAL > - ? > - (MLOG_NITTY + 1) | MLOG_TREE > - : > - MLOG_NITTY | MLOG_TREE, > - "set DMI attributes" > - " of %s failed: %s\n", > - path, > - strerror(errno)); > - } > - } > - > utimbuf.actime = dirattr_get_atime(dah); > utimbuf.modtime = dirattr_get_mtime(dah); > rval = utime(path, &utimbuf); > diff --git a/restore/tree.h b/restore/tree.h > index 4f9ffe8..bf66e3d 100644 > --- a/restore/tree.h > +++ b/restore/tree.h > @@ -31,7 +31,6 @@ extern bool_t tree_init(char *hkdir, > size64_t nondircnt, > size64_t vmsz, > bool_t fullpr, > - bool_t restoredmpr, > bool_t dstdirisxfspr, > uint32_t dumpformat, > bool_t truncategenpr); > -- Carlos