From: zab Date: Thu, 14 Aug 2003 21:00:37 +0000 (+0000) Subject: - give llite moderately more reasonable default watermarks so that it can X-Git-Tag: v1_7_0_51~2^7~674 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=421e8e965b12dde77366bbe2a46e59f9a0a6ce56;p=fs%2Flustre-release.git - give llite moderately more reasonable default watermarks so that it can fill a fair sized lov in a burst. - be more careful about unlocking writepage's page as it returns an error - allocate writeback page state with NOFS so we don't descend into filesystems when memory is short --- diff --git a/lustre/llite/rw24.c b/lustre/llite/rw24.c index a73f315..96a9db2 100644 --- a/lustre/llite/rw24.c +++ b/lustre/llite/rw24.c @@ -269,16 +269,19 @@ static int ll_writepage_24(struct page *page) struct inode *inode = page->mapping->host; struct obd_export *exp; struct obd_client_page *ocp; + int cleanup_phase = 0; int rc; ENTRY; exp = ll_i2obdexp(inode); if (exp == NULL) - RETURN(-EINVAL); + GOTO(cleanup, rc = -EINVAL); + cleanup_phase = 1; ocp = ocp_alloc(page); if (IS_ERR(ocp)) - GOTO(out, rc = PTR_ERR(ocp)); + GOTO(cleanup, rc = PTR_ERR(ocp)); + cleanup_phase = 2; ocp->ocp_callback = ll_complete_writepage_24; ocp->ocp_off = (obd_off)page->index << PAGE_CACHE_SHIFT; @@ -286,19 +289,30 @@ static int ll_writepage_24(struct page *page) ocp->ocp_flag = OBD_BRW_CREATE|OBD_BRW_FROM_GRANT; obd_brw_plug(OBD_BRW_WRITE, exp, ll_i2info(inode)->lli_smd, NULL); + page_cache_get(page); rc = ll_start_ocp_io(page); if (rc == 0) { ll_page_acct(0, 1); ll_start_io_from_dirty(inode, ll_complete_writepage_24); + cleanup_phase = 1; } else { - ocp_free(page); page_cache_release(page); } obd_brw_unplug(OBD_BRW_WRITE, exp, ll_i2info(inode)->lli_smd, NULL); -out: - class_export_put(exp); + +cleanup: + switch(cleanup_phase) { + case 2: + ocp_free(page); + case 1: + class_export_put(exp); + case 0: + break; + } + if (rc != 0) + unlock_page(page); RETURN(rc); } diff --git a/lustre/llite/rw26.c b/lustre/llite/rw26.c index c4d11fb..3ab3f84 100644 --- a/lustre/llite/rw26.c +++ b/lustre/llite/rw26.c @@ -96,6 +96,8 @@ static int ll_writepage_26(struct page *page, struct writeback_control *wbc) int rc; ENTRY; +#error "update this to look like ll_writepage_24" + LASSERT(PageLocked(page)); LASSERT(!PageWriteback(page));