From de85effe17460d3221f210bed476f5c8160111d3 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 29 Mar 2005 22:38:21 +0000 Subject: [PATCH] b=5981 r=oleg fix for this patch from oleg. this fixes oopses when running replay-single in UML for me, and recovery-small for andreas somewhere --- lustre/include/linux/lustre_compat25.h | 8 +++++++- lustre/llite/rw.c | 6 ++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h index 9b3a56d..bfc2ac5 100644 --- a/lustre/include/linux/lustre_compat25.h +++ b/lustre/include/linux/lustre_compat25.h @@ -47,7 +47,7 @@ #define TryLockPage(page) TestSetPageLocked(page) #define filemap_fdatasync(mapping) filemap_fdatawrite(mapping) #define Page_Uptodate(page) PageUptodate(page) -#define ClearPageLaunder(page) do {} while(0) +#define ll_redirty_page(page) set_page_dirty(page) #define KDEVT_INIT(val) (val) @@ -191,6 +191,12 @@ static inline int clear_page_dirty_for_io(struct page *page) return 0; } +static inline void ll_redirty_page(struct page *page) +{ + SetPageDirty(page); + ClearPageLaunder(page); +} + static inline void __d_drop(struct dentry *dentry) { list_del(&dentry->d_hash); diff --git a/lustre/llite/rw.c b/lustre/llite/rw.c index 5fec8fa..be467fa 100644 --- a/lustre/llite/rw.c +++ b/lustre/llite/rw.c @@ -738,8 +738,7 @@ void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc) if (cmd == OBD_BRW_READ) { llap->llap_defer_uptodate = 0; } else { - set_page_dirty(page); - ClearPageLaunder(page); + ll_redirty_page(page); } SetPageError(page); } @@ -1143,8 +1142,7 @@ out: if (!lli->lli_async_rc) lli->lli_async_rc = rc; /* re-dirty page on error so it retries write */ - set_page_dirty(page); - ClearPageLaunder(page); + ll_redirty_page(page); unlock_page(page); } RETURN(rc); -- 1.8.3.1