tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
xfsdump: 3.1.10 → 3.1.12
lunik1
3 years ago
eb09bb3c
8487ab4c
+2
-329
2 changed files
expand all
collapse all
unified
split
pkgs
tools
filesystems
xfsdump
default.nix
remove-dmapapi.patch
+2
-7
pkgs/tools/filesystems/xfsdump/default.nix
···
13
13
14
14
stdenv.mkDerivation rec {
15
15
pname = "xfsdump";
16
16
-
version = "3.1.10";
16
16
+
version = "3.1.12";
17
17
18
18
src = fetchurl {
19
19
url = "mirror://kernel/linux/utils/fs/xfs/${pname}/${pname}-${version}.tar.xz";
20
20
-
sha256 = "sha256-mqt6U6oFzUbtyXJp6/FFaqsrYKuMH/+q+KpJLwtfZRc=";
20
20
+
sha256 = "sha256-85xMGzBrLdfsl5wOlNYP5pCD0uz5rwUcrF7zvtdyx0o=";
21
21
};
22
22
23
23
nativeBuildInputs = [
···
32
32
libxfs
33
33
ncurses
34
34
];
35
35
-
36
36
-
# fixes build against xfsprogs >= 5.18
37
37
-
# taken from https://lore.kernel.org/linux-xfs/20220203174540.GT8313@magnolia/
38
38
-
# should be included upsteam next release
39
39
-
patches = [ ./remove-dmapapi.patch ];
40
35
41
36
postPatch = ''
42
37
substituteInPlace Makefile \
-322
pkgs/tools/filesystems/xfsdump/remove-dmapapi.patch
···
1
1
-
diff --git a/doc/xfsdump.html b/doc/xfsdump.html
2
2
-
index d4d157f..2c9324b 100644
3
3
-
--- a/doc/xfsdump.html
4
4
-
+++ b/doc/xfsdump.html
5
5
-
@@ -1092,7 +1092,6 @@ the size of the hash table.
6
6
-
bool_t p_ownerpr - whether to restore directory owner/group attributes
7
7
-
bool_t p_fullpr - whether restoring a full level 0 non-resumed dump
8
8
-
bool_t p_ignoreorphpr - set if positive subtree or interactive
9
9
-
- bool_t p_restoredmpr - restore DMI event settings
10
10
-
</pre>
11
11
-
<p>
12
12
-
The hash table maps the inode number to the tree node. It is a
13
13
-
diff --git a/po/de.po b/po/de.po
14
14
-
index 62face8..bdf47d1 100644
15
15
-
--- a/po/de.po
16
16
-
+++ b/po/de.po
17
17
-
@@ -3972,11 +3972,6 @@ msgstr ""
18
18
-
msgid "no additional media objects needed\n"
19
19
-
msgstr "keine zusätzlichen Mediendateien benötigt\n"
20
20
-
21
21
-
-#: .././restore/content.c:9547
22
22
-
-#, c-format
23
23
-
-msgid "fssetdm_by_handle of %s failed %s\n"
24
24
-
-msgstr "fssetdm_by_handle von %s fehlgeschlagen %s\n"
25
25
-
-
26
26
-
#: .././restore/content.c:9566
27
27
-
#, c-format
28
28
-
msgid "%s quota information written to '%s'\n"
29
29
-
diff --git a/po/pl.po b/po/pl.po
30
30
-
index 3cba8d6..ba25420 100644
31
31
-
--- a/po/pl.po
32
32
-
+++ b/po/pl.po
33
33
-
@@ -3455,11 +3455,6 @@ msgstr "nie są potrzebne dodatkowe obiekty nośnika\n"
34
34
-
msgid "path_to_handle of %s failed:%s\n"
35
35
-
msgstr "path_to_handle na %s nie powiodło się: %s\n"
36
36
-
37
37
-
-#: .././restore/content.c:9723
38
38
-
-#, c-format
39
39
-
-msgid "fssetdm_by_handle of %s failed %s\n"
40
40
-
-msgstr "fssetdm_by_handle na %s nie powiodło się: %s\n"
41
41
-
-
42
42
-
#: .././restore/content.c:9742
43
43
-
#, c-format
44
44
-
msgid "%s quota information written to '%s'\n"
45
45
-
diff --git a/restore/content.c b/restore/content.c
46
46
-
index 6b22965..e9b0a07 100644
47
47
-
--- a/restore/content.c
48
48
-
+++ b/restore/content.c
49
49
-
@@ -477,9 +477,6 @@ struct pers {
50
50
-
/* how many pages following the header page are reserved
51
51
-
* for the subtree descriptors
52
52
-
*/
53
53
-
- bool_t restoredmpr;
54
54
-
- /* restore DMAPI event settings
55
55
-
- */
56
56
-
bool_t restoreextattrpr;
57
57
-
/* restore extended attributes
58
58
-
*/
59
59
-
@@ -858,7 +855,6 @@ static void partial_reg(ix_t d_index, xfs_ino_t ino, off64_t fsize,
60
60
-
off64_t offset, off64_t sz);
61
61
-
static bool_t partial_check (xfs_ino_t ino, off64_t fsize);
62
62
-
static bool_t partial_check2 (partial_rest_t *isptr, off64_t fsize);
63
63
-
-static int do_fssetdm_by_handle(char *path, fsdmidata_t *fdmp);
64
64
-
static int quotafilecheck(char *type, char *dstdir, char *quotafile);
65
65
-
66
66
-
/* definition of locally defined global variables ****************************/
67
67
-
@@ -894,7 +890,6 @@ content_init(int argc, char *argv[], size64_t vmsz)
68
68
-
bool_t changepr;/* cmd line overwrite inhibit specification */
69
69
-
bool_t interpr; /* cmd line interactive mode requested */
70
70
-
bool_t ownerpr; /* cmd line chown/chmod requested */
71
71
-
- bool_t restoredmpr; /* cmd line restore dm api attrs specification */
72
72
-
bool_t restoreextattrpr; /* cmd line restore extended attr spec */
73
73
-
bool_t sesscpltpr; /* force completion of prev interrupted session */
74
74
-
ix_t stcnt; /* cmd line number of subtrees requested */
75
75
-
@@ -956,7 +951,6 @@ content_init(int argc, char *argv[], size64_t vmsz)
76
76
-
newerpr = BOOL_FALSE;
77
77
-
changepr = BOOL_FALSE;
78
78
-
ownerpr = BOOL_FALSE;
79
79
-
- restoredmpr = BOOL_FALSE;
80
80
-
restoreextattrpr = BOOL_TRUE;
81
81
-
sesscpltpr = BOOL_FALSE;
82
82
-
stcnt = 0;
83
83
-
@@ -1162,8 +1156,11 @@ content_init(int argc, char *argv[], size64_t vmsz)
84
84
-
tranp->t_noinvupdatepr = BOOL_TRUE;
85
85
-
break;
86
86
-
case GETOPT_SETDM:
87
87
-
- restoredmpr = BOOL_TRUE;
88
88
-
- break;
89
89
-
+ mlog(MLOG_NORMAL | MLOG_ERROR, _(
90
90
-
+ "-%c option no longer supported\n"),
91
91
-
+ GETOPT_SETDM);
92
92
-
+ usage();
93
93
-
+ return BOOL_FALSE;
94
94
-
case GETOPT_ALERTPROG:
95
95
-
if (!optarg || optarg[0] == '-') {
96
96
-
mlog(MLOG_NORMAL | MLOG_ERROR, _(
97
97
-
@@ -1574,12 +1571,6 @@ content_init(int argc, char *argv[], size64_t vmsz)
98
98
-
}
99
99
-
100
100
-
if (persp->a.valpr) {
101
101
-
- if (restoredmpr && persp->a.restoredmpr != restoredmpr) {
102
102
-
- mlog(MLOG_NORMAL | MLOG_ERROR, _(
103
103
-
- "-%c cannot reset flag from previous restore\n"),
104
104
-
- GETOPT_SETDM);
105
105
-
- return BOOL_FALSE;
106
106
-
- }
107
107
-
if (!restoreextattrpr &&
108
108
-
persp->a.restoreextattrpr != restoreextattrpr) {
109
109
-
mlog(MLOG_NORMAL | MLOG_ERROR, _(
110
110
-
@@ -1734,7 +1725,6 @@ content_init(int argc, char *argv[], size64_t vmsz)
111
111
-
persp->a.newerpr = newerpr;
112
112
-
persp->a.newertime = newertime;
113
113
-
}
114
114
-
- persp->a.restoredmpr = restoredmpr;
115
115
-
if (!persp->a.dstdirisxfspr) {
116
116
-
restoreextattrpr = BOOL_FALSE;
117
117
-
}
118
118
-
@@ -2365,7 +2355,6 @@ content_stream_restore(ix_t thrdix)
119
119
-
scrhdrp->cih_inomap_nondircnt,
120
120
-
tranp->t_vmsz,
121
121
-
fullpr,
122
122
-
- persp->a.restoredmpr,
123
123
-
persp->a.dstdirisxfspr,
124
124
-
grhdrp->gh_version,
125
125
-
tranp->t_truncategenpr);
126
126
-
@@ -7549,12 +7538,6 @@ restore_reg(drive_t *drivep,
127
127
-
}
128
128
-
}
129
129
-
130
130
-
- if (persp->a.dstdirisxfspr && persp->a.restoredmpr) {
131
131
-
- HsmBeginRestoreFile(bstatp,
132
132
-
- *fdp,
133
133
-
- &strctxp->sc_hsmflags);
134
134
-
- }
135
135
-
-
136
136
-
return BOOL_TRUE;
137
137
-
}
138
138
-
139
139
-
@@ -7726,26 +7709,6 @@ restore_complete_reg(stream_context_t *strcxtp)
140
140
-
strerror(errno));
141
141
-
}
142
142
-
143
143
-
- if (persp->a.dstdirisxfspr && persp->a.restoredmpr) {
144
144
-
- fsdmidata_t fssetdm;
145
145
-
-
146
146
-
- /* Set the DMAPI Fields. */
147
147
-
- fssetdm.fsd_dmevmask = bstatp->bs_dmevmask;
148
148
-
- fssetdm.fsd_padding = 0;
149
149
-
- fssetdm.fsd_dmstate = bstatp->bs_dmstate;
150
150
-
-
151
151
-
- rval = ioctl(fd, XFS_IOC_FSSETDM, (void *)&fssetdm);
152
152
-
- if (rval) {
153
153
-
- mlog(MLOG_NORMAL | MLOG_WARNING,
154
154
-
- _("attempt to set DMI attributes of %s "
155
155
-
- "failed: %s\n"),
156
156
-
- path,
157
157
-
- strerror(errno));
158
158
-
- }
159
159
-
-
160
160
-
- HsmEndRestoreFile(path, fd, &strcxtp->sc_hsmflags);
161
161
-
- }
162
162
-
-
163
163
-
/* set any extended inode flags that couldn't be set
164
164
-
* prior to restoring the data.
165
165
-
*/
166
166
-
@@ -8064,17 +8027,6 @@ restore_symlink(drive_t *drivep,
167
167
-
strerror(errno));
168
168
-
}
169
169
-
}
170
170
-
-
171
171
-
- if (persp->a.restoredmpr) {
172
172
-
- fsdmidata_t fssetdm;
173
173
-
-
174
174
-
- /* Restore DMAPI fields. */
175
175
-
-
176
176
-
- fssetdm.fsd_dmevmask = bstatp->bs_dmevmask;
177
177
-
- fssetdm.fsd_padding = 0;
178
178
-
- fssetdm.fsd_dmstate = bstatp->bs_dmstate;
179
179
-
- rval = do_fssetdm_by_handle(path, &fssetdm);
180
180
-
- }
181
181
-
}
182
182
-
183
183
-
return BOOL_TRUE;
184
184
-
@@ -8777,7 +8729,7 @@ restore_extattr(drive_t *drivep,
185
185
-
}
186
186
-
assert(nread == (int)(recsz - EXTATTRHDR_SZ));
187
187
-
188
188
-
- if (!persp->a.restoreextattrpr && !persp->a.restoredmpr) {
189
189
-
+ if (!persp->a.restoreextattrpr) {
190
190
-
continue;
191
191
-
}
192
192
-
193
193
-
@@ -8796,19 +8748,6 @@ restore_extattr(drive_t *drivep,
194
194
-
}
195
195
-
} else if (isfilerestored && path[0] != '\0') {
196
196
-
setextattr(path, ahdrp);
197
197
-
-
198
198
-
- if (persp->a.dstdirisxfspr && persp->a.restoredmpr) {
199
199
-
- int flag = 0;
200
200
-
- char *attrname = (char *)&ahdrp[1];
201
201
-
- if (ahdrp->ah_flags & EXTATTRHDR_FLAGS_ROOT)
202
202
-
- flag = ATTR_ROOT;
203
203
-
- else if (ahdrp->ah_flags & EXTATTRHDR_FLAGS_SECURE)
204
204
-
- flag = ATTR_SECURE;
205
205
-
-
206
206
-
- HsmRestoreAttribute(flag,
207
207
-
- attrname,
208
208
-
- &strctxp->sc_hsmflags);
209
209
-
- }
210
210
-
}
211
211
-
}
212
212
-
/* NOTREACHED */
213
213
-
@@ -9709,32 +9648,6 @@ display_needed_objects(purp_t purp,
214
214
-
}
215
215
-
}
216
216
-
217
217
-
-static int
218
218
-
-do_fssetdm_by_handle(
219
219
-
- char *path,
220
220
-
- fsdmidata_t *fdmp)
221
221
-
-{
222
222
-
- void *hanp;
223
223
-
- size_t hlen=0;
224
224
-
- int rc;
225
225
-
-
226
226
-
- if (path_to_handle(path, &hanp, &hlen)) {
227
227
-
- mlog(MLOG_NORMAL | MLOG_WARNING, _(
228
228
-
- "path_to_handle of %s failed:%s\n"),
229
229
-
- path, strerror(errno));
230
230
-
- return -1;
231
231
-
- }
232
232
-
-
233
233
-
- rc = fssetdm_by_handle(hanp, hlen, fdmp);
234
234
-
- free_handle(hanp, hlen);
235
235
-
- if (rc) {
236
236
-
- mlog(MLOG_NORMAL | MLOG_WARNING, _(
237
237
-
- "fssetdm_by_handle of %s failed %s\n"),
238
238
-
- path, strerror(errno));
239
239
-
- }
240
240
-
- return rc;
241
241
-
-}
242
242
-
-
243
243
-
static int
244
244
-
quotafilecheck(char *type, char *dstdir, char *quotafile)
245
245
-
{
246
246
-
diff --git a/restore/tree.c b/restore/tree.c
247
247
-
index 0670318..5429b74 100644
248
248
-
--- a/restore/tree.c
249
249
-
+++ b/restore/tree.c
250
250
-
@@ -108,9 +108,6 @@ struct treePersStorage {
251
251
-
bool_t p_ignoreorphpr;
252
252
-
/* set if positive subtree or interactive
253
253
-
*/
254
254
-
- bool_t p_restoredmpr;
255
255
-
- /* restore DMI event settings
256
256
-
- */
257
257
-
bool_t p_truncategenpr;
258
258
-
/* truncate inode generation number (for compatibility
259
259
-
* with xfsdump format 2 and earlier)
260
260
-
@@ -348,7 +345,6 @@ tree_init(char *hkdir,
261
261
-
size64_t nondircnt,
262
262
-
size64_t vmsz,
263
263
-
bool_t fullpr,
264
264
-
- bool_t restoredmpr,
265
265
-
bool_t dstdirisxfspr,
266
266
-
uint32_t dumpformat,
267
267
-
bool_t truncategenpr)
268
268
-
@@ -508,10 +504,6 @@ tree_init(char *hkdir,
269
269
-
*/
270
270
-
persp->p_fullpr = fullpr;
271
271
-
272
272
-
- /* record if DMI event settings should be restored
273
273
-
- */
274
274
-
- persp->p_restoredmpr = restoredmpr;
275
275
-
-
276
276
-
/* record if truncated generation numbers are required
277
277
-
*/
278
278
-
if (dumpformat < GLOBAL_HDR_VERSION_3) {
279
279
-
@@ -2550,31 +2542,6 @@ setdirattr(dah_t dah, char *path)
280
280
-
}
281
281
-
}
282
282
-
283
283
-
- if (tranp->t_dstdirisxfspr && persp->p_restoredmpr) {
284
284
-
- fsdmidata_t fssetdm;
285
285
-
-
286
286
-
- fssetdm.fsd_dmevmask = dirattr_get_dmevmask(dah);
287
287
-
- fssetdm.fsd_padding = 0; /* not used */
288
288
-
- fssetdm.fsd_dmstate = (uint16_t)dirattr_get_dmstate(dah);
289
289
-
-
290
290
-
- /* restore DMAPI event settings etc.
291
291
-
- */
292
292
-
- rval = ioctl(fd,
293
293
-
- XFS_IOC_FSSETDM,
294
294
-
- (void *)&fssetdm);
295
295
-
- if (rval) {
296
296
-
- mlog(errno == EINVAL
297
297
-
- ?
298
298
-
- (MLOG_NITTY + 1) | MLOG_TREE
299
299
-
- :
300
300
-
- MLOG_NITTY | MLOG_TREE,
301
301
-
- "set DMI attributes"
302
302
-
- " of %s failed: %s\n",
303
303
-
- path,
304
304
-
- strerror(errno));
305
305
-
- }
306
306
-
- }
307
307
-
-
308
308
-
utimbuf.actime = dirattr_get_atime(dah);
309
309
-
utimbuf.modtime = dirattr_get_mtime(dah);
310
310
-
rval = utime(path, &utimbuf);
311
311
-
diff --git a/restore/tree.h b/restore/tree.h
312
312
-
index 4f9ffe8..bf66e3d 100644
313
313
-
--- a/restore/tree.h
314
314
-
+++ b/restore/tree.h
315
315
-
@@ -31,7 +31,6 @@ extern bool_t tree_init(char *hkdir,
316
316
-
size64_t nondircnt,
317
317
-
size64_t vmsz,
318
318
-
bool_t fullpr,
319
319
-
- bool_t restoredmpr,
320
320
-
bool_t dstdirisxfspr,
321
321
-
uint32_t dumpformat,
322
322
-
bool_t truncategenpr);