xfs: add blockdev name to kthreads
This allows to see in `ps` and similar tools which kthreads are allotted to which block device/filesystem, similar to what jbd2 does. As the process name is a fixed 16-char array, no extra space is needed in tasks. PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 197 ? S 0:00 \_ [jbd2/sda2-8] 198 ? S 0:00 \_ [ext4-dio-unwrit] 204 ? S 0:00 \_ [flush-8:0] 2647 ? S 0:00 \_ [xfs_mru_cache] 2648 ? S 0:00 \_ [xfslogd/0] 2649 ? S 0:00 \_ [xfsdatad/0] 2650 ? S 0:00 \_ [xfsconvertd/0] 2651 ? S 0:00 \_ [xfsbufd/ram0] 2652 ? S 0:00 \_ [xfsaild/ram0] 2653 ? S 0:00 \_ [xfssyncd/ram0] Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Reviewed-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
fda168c245
commit
e2a07812e9
|
@ -1614,7 +1614,8 @@ xfs_mapping_buftarg(
|
||||||
|
|
||||||
STATIC int
|
STATIC int
|
||||||
xfs_alloc_delwrite_queue(
|
xfs_alloc_delwrite_queue(
|
||||||
xfs_buftarg_t *btp)
|
xfs_buftarg_t *btp,
|
||||||
|
const char *fsname)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
|
@ -1622,7 +1623,7 @@ xfs_alloc_delwrite_queue(
|
||||||
INIT_LIST_HEAD(&btp->bt_delwrite_queue);
|
INIT_LIST_HEAD(&btp->bt_delwrite_queue);
|
||||||
spin_lock_init(&btp->bt_delwrite_lock);
|
spin_lock_init(&btp->bt_delwrite_lock);
|
||||||
btp->bt_flags = 0;
|
btp->bt_flags = 0;
|
||||||
btp->bt_task = kthread_run(xfsbufd, btp, "xfsbufd");
|
btp->bt_task = kthread_run(xfsbufd, btp, "xfsbufd/%s", fsname);
|
||||||
if (IS_ERR(btp->bt_task)) {
|
if (IS_ERR(btp->bt_task)) {
|
||||||
error = PTR_ERR(btp->bt_task);
|
error = PTR_ERR(btp->bt_task);
|
||||||
goto out_error;
|
goto out_error;
|
||||||
|
@ -1635,7 +1636,8 @@ xfs_alloc_delwrite_queue(
|
||||||
xfs_buftarg_t *
|
xfs_buftarg_t *
|
||||||
xfs_alloc_buftarg(
|
xfs_alloc_buftarg(
|
||||||
struct block_device *bdev,
|
struct block_device *bdev,
|
||||||
int external)
|
int external,
|
||||||
|
const char *fsname)
|
||||||
{
|
{
|
||||||
xfs_buftarg_t *btp;
|
xfs_buftarg_t *btp;
|
||||||
|
|
||||||
|
@ -1647,7 +1649,7 @@ xfs_alloc_buftarg(
|
||||||
goto error;
|
goto error;
|
||||||
if (xfs_mapping_buftarg(btp, bdev))
|
if (xfs_mapping_buftarg(btp, bdev))
|
||||||
goto error;
|
goto error;
|
||||||
if (xfs_alloc_delwrite_queue(btp))
|
if (xfs_alloc_delwrite_queue(btp, fsname))
|
||||||
goto error;
|
goto error;
|
||||||
xfs_alloc_bufhash(btp, external);
|
xfs_alloc_bufhash(btp, external);
|
||||||
return btp;
|
return btp;
|
||||||
|
|
|
@ -390,7 +390,7 @@ static inline void xfs_buf_relse(xfs_buf_t *bp)
|
||||||
/*
|
/*
|
||||||
* Handling of buftargs.
|
* Handling of buftargs.
|
||||||
*/
|
*/
|
||||||
extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int);
|
extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int, const char *);
|
||||||
extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *);
|
extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *);
|
||||||
extern void xfs_wait_buftarg(xfs_buftarg_t *);
|
extern void xfs_wait_buftarg(xfs_buftarg_t *);
|
||||||
extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int);
|
extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int);
|
||||||
|
|
|
@ -789,18 +789,18 @@ xfs_open_devices(
|
||||||
* Setup xfs_mount buffer target pointers
|
* Setup xfs_mount buffer target pointers
|
||||||
*/
|
*/
|
||||||
error = ENOMEM;
|
error = ENOMEM;
|
||||||
mp->m_ddev_targp = xfs_alloc_buftarg(ddev, 0);
|
mp->m_ddev_targp = xfs_alloc_buftarg(ddev, 0, mp->m_fsname);
|
||||||
if (!mp->m_ddev_targp)
|
if (!mp->m_ddev_targp)
|
||||||
goto out_close_rtdev;
|
goto out_close_rtdev;
|
||||||
|
|
||||||
if (rtdev) {
|
if (rtdev) {
|
||||||
mp->m_rtdev_targp = xfs_alloc_buftarg(rtdev, 1);
|
mp->m_rtdev_targp = xfs_alloc_buftarg(rtdev, 1, mp->m_fsname);
|
||||||
if (!mp->m_rtdev_targp)
|
if (!mp->m_rtdev_targp)
|
||||||
goto out_free_ddev_targ;
|
goto out_free_ddev_targ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (logdev && logdev != ddev) {
|
if (logdev && logdev != ddev) {
|
||||||
mp->m_logdev_targp = xfs_alloc_buftarg(logdev, 1);
|
mp->m_logdev_targp = xfs_alloc_buftarg(logdev, 1, mp->m_fsname);
|
||||||
if (!mp->m_logdev_targp)
|
if (!mp->m_logdev_targp)
|
||||||
goto out_free_rtdev_targ;
|
goto out_free_rtdev_targ;
|
||||||
} else {
|
} else {
|
||||||
|
@ -902,7 +902,8 @@ xfsaild_start(
|
||||||
struct xfs_ail *ailp)
|
struct xfs_ail *ailp)
|
||||||
{
|
{
|
||||||
ailp->xa_target = 0;
|
ailp->xa_target = 0;
|
||||||
ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild");
|
ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild/%s",
|
||||||
|
ailp->xa_mount->m_fsname);
|
||||||
if (IS_ERR(ailp->xa_task))
|
if (IS_ERR(ailp->xa_task))
|
||||||
return -PTR_ERR(ailp->xa_task);
|
return -PTR_ERR(ailp->xa_task);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -660,7 +660,7 @@ xfs_syncd_init(
|
||||||
mp->m_sync_work.w_syncer = xfs_sync_worker;
|
mp->m_sync_work.w_syncer = xfs_sync_worker;
|
||||||
mp->m_sync_work.w_mount = mp;
|
mp->m_sync_work.w_mount = mp;
|
||||||
mp->m_sync_work.w_completion = NULL;
|
mp->m_sync_work.w_completion = NULL;
|
||||||
mp->m_sync_task = kthread_run(xfssyncd, mp, "xfssyncd");
|
mp->m_sync_task = kthread_run(xfssyncd, mp, "xfssyncd/%s", mp->m_fsname);
|
||||||
if (IS_ERR(mp->m_sync_task))
|
if (IS_ERR(mp->m_sync_task))
|
||||||
return -PTR_ERR(mp->m_sync_task);
|
return -PTR_ERR(mp->m_sync_task);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue