From 8de819f83446dcdedae572ccc7449e3fa90b2c20 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Tue, 1 Oct 2019 18:51:10 -0400 Subject: [PATCH] bcachefs: Fix __bch2_buffered_write() returning -ENOMEM When grab_cache_page_write_begin() fails but we did pin some pages, we shouldn't return -ENOMEM, we should do a partial write. Signed-off-by: Kent Overstreet --- fs/bcachefs/fs-io.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 13e7b78423678..be121b755fc73 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -1606,8 +1606,13 @@ static int __bch2_buffered_write(struct bch_inode_info *inode, pages[i] = grab_cache_page_write_begin(mapping, index + i); if (!pages[i]) { nr_pages = i; - ret = -ENOMEM; - goto out; + if (!i) { + ret = -ENOMEM; + goto out; + } + len = min_t(unsigned, len, + nr_pages * PAGE_SIZE - offset); + break; } } -- 2.30.2