forked from pool/xfsdump
Dirk Mueller
07681fbfc8
- Update to version 3.1.10 - Fix bind mount handling which was corrupting dumps - Remove some dead code - Inclusive language updates - Fix building with xfsprogs-5.19.0 - xfs_restore: remove DMAPI support - Added xfsdump-xfs_restore-remove-DMAPI-support.patch OBS-URL: https://build.opensuse.org/request/show/995035 OBS-URL: https://build.opensuse.org/package/show/filesystems/xfsdump?expand=0&rev=34
346 lines
10 KiB
Diff
346 lines
10 KiB
Diff
From 853ed6bdedc6dcfc1c1e178aff8fc09cbdd685af Mon Sep 17 00:00:00 2001
|
|
From: "Darrick J. Wong" <djwong@kernel.org>
|
|
Date: Thu, 3 Feb 2022 09:45:40 -0800
|
|
Subject: [PATCH] xfs_restore: remove DMAPI support
|
|
|
|
The last of the DMAPI stubs were removed from Linux 5.17, so drop this
|
|
functionality altogether.
|
|
|
|
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
|
|
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
Tested-by: Carlos Maiolino <cmaiolino@redhat.com>
|
|
---
|
|
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 958bc8055bef..db59cdac2110 100644
|
|
--- a/doc/xfsdump.html
|
|
+++ b/doc/xfsdump.html
|
|
@@ -1090,7 +1090,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 62face890ad3..bdf47d10a246 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 3cba8d6be4ba..ba2542043503 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 97f821322960..b19bb90edeb3 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);
|
|
@@ -7546,12 +7535,6 @@ restore_reg(drive_t *drivep,
|
|
}
|
|
}
|
|
|
|
- if (persp->a.dstdirisxfspr && persp->a.restoredmpr) {
|
|
- HsmBeginRestoreFile(bstatp,
|
|
- *fdp,
|
|
- &strctxp->sc_hsmflags);
|
|
- }
|
|
-
|
|
return BOOL_TRUE;
|
|
}
|
|
|
|
@@ -7723,26 +7706,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.
|
|
*/
|
|
@@ -8056,17 +8019,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;
|
|
@@ -8769,7 +8721,7 @@ restore_extattr(drive_t *drivep,
|
|
}
|
|
assert(nread == (int)(recsz - EXTATTRHDR_SZ));
|
|
|
|
- if (!persp->a.restoreextattrpr && !persp->a.restoredmpr) {
|
|
+ if (!persp->a.restoreextattrpr) {
|
|
continue;
|
|
}
|
|
|
|
@@ -8788,19 +8740,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 */
|
|
@@ -9701,32 +9640,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 06703187a5fd..5429b744f1de 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 4f9ffe80192f..bf66e3dd5969 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);
|
|
--
|
|
2.37.1
|
|
|