X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=nfs3%2Fnfs3.c;h=c5e444807f66952837811ffd5406c87ba2e41ba4;hb=d7d143ef0ccf0f49a8fd23a3c76bc68c0b04e07e;hp=b0e5892b6e221b5e8a92e18446bd67fb71c5baa7;hpb=da94a353dc1bfa08450ba5ed8bac5a1d89703a3d;p=bluesky.git diff --git a/nfs3/nfs3.c b/nfs3/nfs3.c index b0e5892..c5e4448 100644 --- a/nfs3/nfs3.c +++ b/nfs3/nfs3.c @@ -380,6 +380,19 @@ void nfsproc3_write_3_svc(write3args *argp, RPCRequest *req) return; } + /* FIXME: Hack to throttle writes when there is too much dirty data still + * to be written out. */ + while (g_atomic_int_get(&fs->cache_dirty) > 4096 + || g_atomic_int_get(&fs->cache_total) > 8192) { + g_print("Too many dirty pages (%d) or total pages (%d); throttling writes...\n", + g_atomic_int_get(&fs->cache_dirty), + g_atomic_int_get(&fs->cache_total)); + struct timespec delay; + delay.tv_sec = 2; + delay.tv_nsec = 0; + nanosleep(&delay, NULL); + } + g_mutex_lock(inode->lock); encode_pre_wcc(&wcc, inode);