スポンサーリンク

vnode_pager_generic_getpages()を実行しているときにvnreadのSTATEになる。

/usr/src/sys/vm/vnode_pager.c の
vnode_pager_generic_getpages(
struct vnode *vp,
vm_page_t *m,
int bytecount,
int reqpage)
は、VOP_GETPAGESの遂行することに失敗するならvnodeに悪い影響を
与えるためローカルメディアFSから呼び出される。

vnodeでpageを得るために呼ぶんだろうか。

bwait(bp, PVM, "vnread");

bwaitはB_DONEがflagから落ちるまでループする。
しかし、2ってなんでしょうか?
void
bwait(struct buf *bp, u_char pri, const char *wchan)
{

        mtx_lock(&bdonelock);
        while ((bp->b_flags & B_DONE) == 2)
                msleep(bp, &bdonelock, pri, wchan, 0);
        mtx_unlock(&bdonelock);
}

B_DONEは/usr/src/sys/sys/buf.hにdefineされている。
#define B_AGE           0x00000001      /* Move to age queue when I/O done.
						   */
#define B_NEEDCOMMIT    0x00000002      /* Append-write in progress. */
#define B_ASYNC         0x00000004      /* Start I/O, do not wait. */
#define B_DIRECT        0x00000008      /* direct I/O flag (pls free vmio)
						 */
#define B_DEFERRED      0x00000010      /* Skipped over for cleaning */
#define B_CACHE         0x00000020      /* Bread found us in the cache. */
#define B_VALIDSUSPWRT  0x00000040      /* Valid write during suspension. */
#define B_DELWRI        0x00000080      /* Delay I/O until buffer reused. */
#define B_PERSISTENT    0x00000100      /* Perm. ref'ed while EXT2FS
#define B_DONE          0x00000200      /* I/O completed. */
B_NEEDCOMMITは2だけど、これは「追記書き込み中」という意味らしいので
違うように思われる。

topのSTATEにufsというのも現れてるのだけど、どういう意味なんだろうか。
参照しているページ (サイト内): [2007-05-14-3]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー