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

_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to