Эх сурвалжийг харах

Btrfs: remove BUG_ON() in compress_file_range()

It's not a big deal if we fail to allocate the array, and instead of
panic we can just give up compressing.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Li Zefan 13 жил өмнө
parent
commit
560f7d7545

+ 5 - 1
fs/btrfs/inode.c

@@ -393,7 +393,10 @@ again:
 	     (BTRFS_I(inode)->flags & BTRFS_INODE_COMPRESS))) {
 	     (BTRFS_I(inode)->flags & BTRFS_INODE_COMPRESS))) {
 		WARN_ON(pages);
 		WARN_ON(pages);
 		pages = kzalloc(sizeof(struct page *) * nr_pages, GFP_NOFS);
 		pages = kzalloc(sizeof(struct page *) * nr_pages, GFP_NOFS);
-		BUG_ON(!pages);
+		if (!pages) {
+			/* just bail out to the uncompressed code */
+			goto cont;
+		}
 
 
 		if (BTRFS_I(inode)->force_compress)
 		if (BTRFS_I(inode)->force_compress)
 			compress_type = BTRFS_I(inode)->force_compress;
 			compress_type = BTRFS_I(inode)->force_compress;
@@ -424,6 +427,7 @@ again:
 			will_compress = 1;
 			will_compress = 1;
 		}
 		}
 	}
 	}
+cont:
 	if (start == 0) {
 	if (start == 0) {
 		trans = btrfs_join_transaction(root);
 		trans = btrfs_join_transaction(root);
 		BUG_ON(IS_ERR(trans));
 		BUG_ON(IS_ERR(trans));