From 0ac45c122460fa556599e6c996293ceeb2d241f0 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 4 Feb 2016 18:34:49 -0900 Subject: bcachefs: skip existing reservations in fallocate --- drivers/md/bcache/fs-io.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/md/bcache/fs-io.c b/drivers/md/bcache/fs-io.c index ea72b4f11b00..654567ccaae1 100644 --- a/drivers/md/bcache/fs-io.c +++ b/drivers/md/bcache/fs-io.c @@ -1357,6 +1357,7 @@ out: static int __bch_truncate_page(struct address_space *mapping, pgoff_t index, loff_t start, loff_t end) { + struct inode *inode = mapping->host; unsigned start_offset = start & (PAGE_SIZE - 1); unsigned end_offset = ((end - 1) & (PAGE_SIZE - 1)) + 1; struct page *page; @@ -1758,6 +1759,12 @@ static long bch_fallocate(struct inode *inode, int mode, goto err; } + /* already reserved */ + if (k.k->type == BCH_RESERVATION) { + bch_btree_iter_advance_pos(&iter); + continue; + } + if (bkey_extent_is_data(k.k)) { if (!(mode & FALLOC_FL_ZERO_RANGE)) { bch_btree_iter_advance_pos(&iter); -- cgit v1.2.3