Merge tag 'f2fs-for-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeu...
[linux-2.6-microblaze.git] / fs / f2fs / compress.c
index 20a083d..a0d5cfa 100644 (file)
@@ -882,6 +882,25 @@ bool f2fs_cluster_can_merge_page(struct compress_ctx *cc, pgoff_t index)
        return is_page_in_cluster(cc, index);
 }
 
+bool f2fs_all_cluster_page_loaded(struct compress_ctx *cc, struct pagevec *pvec,
+                               int index, int nr_pages)
+{
+       unsigned long pgidx;
+       int i;
+
+       if (nr_pages - index < cc->cluster_size)
+               return false;
+
+       pgidx = pvec->pages[index]->index;
+
+       for (i = 1; i < cc->cluster_size; i++) {
+               if (pvec->pages[index + i]->index != pgidx + i)
+                       return false;
+       }
+
+       return true;
+}
+
 static bool cluster_has_invalid_data(struct compress_ctx *cc)
 {
        loff_t i_size = i_size_read(cc->inode);
@@ -1531,6 +1550,7 @@ int f2fs_write_multi_pages(struct compress_ctx *cc,
        if (cluster_may_compress(cc)) {
                err = f2fs_compress_pages(cc);
                if (err == -EAGAIN) {
+                       add_compr_block_stat(cc->inode, cc->cluster_size);
                        goto write;
                } else if (err) {
                        f2fs_put_rpages_wbc(cc, wbc, true, 1);