faq/troubleshoot.html#indefinite-wait-buffer has the direction of transfer wrong (head -r326888 /usr/src/)

Mark Millard markmi at dsl-only.net
Sat Dec 16 18:54:38 UTC 2017


I got a "swap_pager: indefinite wait buffer" notice and looked
it up. (This was on a rpi2 booted (kernel and world) from a
USB SSD, swap partition in use instead of a swap file. It
was building devel/cmake via poudriere-devel .)

https://www.freebsd.org/doc/faq/troubleshoot.html#indefinite-wait-buffer
reads like it is for page-out to disk:


QUOTE
5.9.

What does the error swap_pager: indefinite wait buffer: mean?

This means that a process is trying to page memory to disk, and the page attempt has hung trying to access the disk for more than 20 seconds. It might be caused by bad blocks on the disk drive, disk wiring, cables, or any other disk I/O-related hardware. If the drive itself is bad, disk errors will appear in /var/log/messages and in the output of dmesg. Otherwise, check the cables and connections.
ENDQUOTE


But the code containing the message is for "swread":
(head -r326888)

# grep -r "indefinite wait buffer" /usr/src/sys/ | more
/usr/src/sys/vm/swap_pager.c:"swap_pager: indefinite wait buffer: bufobj: %p, blkno: %jd, size: %ld\n",

Looking there. . .

static int
swap_pager_getpages(vm_object_t object, vm_page_t *m, int count, int *rbehind,
    int *rahead)
{
. . .
        VM_OBJECT_WLOCK(object);
        while ((m[0]->oflags & VPO_SWAPINPROG) != 0) {
                m[0]->oflags |= VPO_SWAPSLEEP;
                VM_CNT_INC(v_intrans);
                if (VM_OBJECT_SLEEP(object, &object->paging_in_progress, PSWP,
                    "swread", hz * 20)) {
                        printf(
"swap_pager: indefinite wait buffer: bufobj: %p, blkno: %jd, size: %ld\n",
                            bp->b_bufobj, (intmax_t)bp->b_blkno, bp->b_bcount);
                }
        }
. . .



===
Mark Millard
markmi at dsl-only.net



More information about the freebsd-current mailing list