mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-26 22:23:08 +00:00
zfs_dbgmsg_print: make FreeBSD and Linux consistent
FreeBSD was using fprintf(), which might not be signal-safe. Meanwhile, Linux's locking did not cover the header output. This two quirks are unrelated, but both have the same response: be like the other one. So with this commit, both functions are the same except for the names of their lock and list variables. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <rob.norris@klarasystems.com> Closes #16181
This commit is contained in:
parent
1ea8c59441
commit
fa99d9cd9c
@ -234,13 +234,29 @@ __dprintf(boolean_t dprint, const char *file, const char *func,
|
||||
void
|
||||
zfs_dbgmsg_print(const char *tag)
|
||||
{
|
||||
zfs_dbgmsg_t *zdm;
|
||||
ssize_t ret __attribute__((unused));
|
||||
|
||||
(void) printf("ZFS_DBGMSG(%s):\n", tag);
|
||||
mutex_enter(&zfs_dbgmsgs_lock);
|
||||
for (zdm = list_head(&zfs_dbgmsgs); zdm;
|
||||
|
||||
/*
|
||||
* We use write() in this function instead of printf()
|
||||
* so it is safe to call from a signal handler.
|
||||
*/
|
||||
ret = write(STDOUT_FILENO, "ZFS_DBGMSG(", 11);
|
||||
ret = write(STDOUT_FILENO, tag, strlen(tag));
|
||||
ret = write(STDOUT_FILENO, ") START:\n", 9);
|
||||
|
||||
for (zfs_dbgmsg_t zdm = list_head(&zfs_dbgmsgs); zdm != NULL;
|
||||
zdm = list_next(&zfs_dbgmsgs, zdm))
|
||||
(void) printf("%s\n", zdm->zdm_msg);
|
||||
ret = write(STDOUT_FILENO, zdm->zdm_msg,
|
||||
strlen(zdm->zdm_msg));
|
||||
ret = write(STDOUT_FILENO, "\n", 1);
|
||||
}
|
||||
|
||||
ret = write(STDOUT_FILENO, "ZFS_DBGMSG(", 11);
|
||||
ret = write(STDOUT_FILENO, tag, strlen(tag));
|
||||
ret = write(STDOUT_FILENO, ") END\n", 6);
|
||||
|
||||
mutex_exit(&zfs_dbgmsgs_lock);
|
||||
}
|
||||
#endif /* _KERNEL */
|
||||
|
@ -225,6 +225,8 @@ zfs_dbgmsg_print(const char *tag)
|
||||
{
|
||||
ssize_t ret __attribute__((unused));
|
||||
|
||||
mutex_enter(&zfs_dbgmsgs.pl_lock);
|
||||
|
||||
/*
|
||||
* We use write() in this function instead of printf()
|
||||
* so it is safe to call from a signal handler.
|
||||
@ -233,7 +235,6 @@ zfs_dbgmsg_print(const char *tag)
|
||||
ret = write(STDOUT_FILENO, tag, strlen(tag));
|
||||
ret = write(STDOUT_FILENO, ") START:\n", 9);
|
||||
|
||||
mutex_enter(&zfs_dbgmsgs.pl_lock);
|
||||
for (zfs_dbgmsg_t *zdm = list_head(&zfs_dbgmsgs.pl_list); zdm != NULL;
|
||||
zdm = list_next(&zfs_dbgmsgs.pl_list, zdm)) {
|
||||
ret = write(STDOUT_FILENO, zdm->zdm_msg,
|
||||
|
Loading…
Reference in New Issue
Block a user