mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
OpenZFS 7900 - zdb shouldn't print the path of a znode at verbosity < 5
Authored by: Alan Somers <asomers@gmail.com> Approved by: Dan McDonald <danmcd@omniti.com> Reviewed by: Paul Dagnelie <pcd@delphix.com> Reviewed by: Matt Ahrens <mahrens@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Ported-by: Giuseppe Di Natale <dinatale2@llnl.gov> There are two reasons: 1) Finding a znode's path is slower than printing any other znode information at verbosity < 5. 2) On a corrupted pool like the one mentioned below, zdb will crash when it tries to determine the znode's path. But with this patch, zdb can still extract useful information from such pools. OpenZFS-issue: https://www.illumos.org/issues/7900 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/2b0dee1 Closes #6016
This commit is contained in:
parent
87a275d97a
commit
a5c3a1efaf
@ -1824,23 +1824,19 @@ dump_znode(objset_t *os, uint64_t object, void *data, size_t size)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = zfs_obj_to_path(os, object, path, sizeof (path));
|
|
||||||
if (error != 0) {
|
|
||||||
(void) snprintf(path, sizeof (path), "\?\?\?<object#%llu>",
|
|
||||||
(u_longlong_t)object);
|
|
||||||
}
|
|
||||||
if (dump_opt['d'] < 3) {
|
|
||||||
(void) printf("\t%s\n", path);
|
|
||||||
(void) sa_handle_destroy(hdl);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
z_crtime = (time_t)crtm[0];
|
z_crtime = (time_t)crtm[0];
|
||||||
z_atime = (time_t)acctm[0];
|
z_atime = (time_t)acctm[0];
|
||||||
z_mtime = (time_t)modtm[0];
|
z_mtime = (time_t)modtm[0];
|
||||||
z_ctime = (time_t)chgtm[0];
|
z_ctime = (time_t)chgtm[0];
|
||||||
|
|
||||||
(void) printf("\tpath %s\n", path);
|
if (dump_opt['d'] > 4) {
|
||||||
|
error = zfs_obj_to_path(os, object, path, sizeof (path));
|
||||||
|
if (error != 0) {
|
||||||
|
(void) snprintf(path, sizeof (path),
|
||||||
|
"\?\?\?<object#%llu>", (u_longlong_t)object);
|
||||||
|
}
|
||||||
|
(void) printf("\tpath %s\n", path);
|
||||||
|
}
|
||||||
dump_uidgid(os, uid, gid);
|
dump_uidgid(os, uid, gid);
|
||||||
(void) printf("\tatime %s", ctime(&z_atime));
|
(void) printf("\tatime %s", ctime(&z_atime));
|
||||||
(void) printf("\tmtime %s", ctime(&z_mtime));
|
(void) printf("\tmtime %s", ctime(&z_mtime));
|
||||||
|
Loading…
Reference in New Issue
Block a user