Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Dec 2017 10:47:50 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD Hackers <freebsd-hackers@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   faq/troubleshoot.html#indefinite-wait-buffer has the direction of transfer wrong (head -r326888 /usr/src/)
Message-ID:  <BD1E6290-23E1-4231-8E0A-AC0FEA3F32C2@dsl-only.net>

next in thread | raw e-mail | index | archive | help
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) !=3D 0) {
                m[0]->oflags |=3D 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);
                }
        }
. . .



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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BD1E6290-23E1-4231-8E0A-AC0FEA3F32C2>