From ff71f8b9495df9cb4f9e355259aeb8517766c9eb Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Mon, 11 Mar 2019 14:47:24 +0100 Subject: [PATCH] update patches for 5.0.8 Signed-off-by: Thomas Lamprecht --- ...-accept-an-alternate-timestamp-strin.patch | 1 + ...idge-keep-MAC-of-first-assigned-port.patch | 1 + ...ides-for-missing-ACS-capabilities-4..patch | 28 +- ...-default-dynamic-halt-polling-growth.patch | 3 +- ...tadata-estimation-accurate-and-clear.patch | 58 --- ...se-extent-block-in-dealloc-without-m.patch | 367 ------------------ ...ckaging-retpoline-add-safe-usage-hin.patch | 53 --- ...s-EX_CFG-to-the-list-of-ignored-MSRs.patch | 55 --- 8 files changed, 19 insertions(+), 547 deletions(-) delete mode 100644 patches/kernel/0005-ocfs2-make-metadata-estimation-accurate-and-clear.patch delete mode 100644 patches/kernel/0006-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch delete mode 100644 patches/kernel/0007-Revert-UBUNTU-Packaging-retpoline-add-safe-usage-hin.patch delete mode 100644 patches/kernel/0008-kvm-x86-Add-AMD-s-EX_CFG-to-the-list-of-ignored-MSRs.patch diff --git a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch index bb4ad13..ab919d2 100644 --- a/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch +++ b/patches/kernel/0001-Make-mkcompile_h-accept-an-alternate-timestamp-strin.patch @@ -15,6 +15,7 @@ Make mkcompile_h use $KBUILD_BUILD_VERSION_TIMESTAMP in preference to $KBUILD_BUILD_TIMESTAMP. Signed-off-by: Fabian Grünbichler +Signed-off-by: Thomas Lamprecht --- scripts/mkcompile_h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/patches/kernel/0002-bridge-keep-MAC-of-first-assigned-port.patch b/patches/kernel/0002-bridge-keep-MAC-of-first-assigned-port.patch index 74710aa..e00ccb9 100644 --- a/patches/kernel/0002-bridge-keep-MAC-of-first-assigned-port.patch +++ b/patches/kernel/0002-bridge-keep-MAC-of-first-assigned-port.patch @@ -13,6 +13,7 @@ connected ports (for no real reason). To avoid problems with ARP we simply use the MAC of the first connected port. Signed-off-by: Fabian Grünbichler +Signed-off-by: Thomas Lamprecht --- net/bridge/br_stp_if.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch index e091878..8da605c 100644 --- a/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch +++ b/patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch @@ -48,16 +48,17 @@ capability. Please contact me to have your devices added and save your customers the hassle of this boot option. Signed-off-by: Fabian Grünbichler +Signed-off-by: Thomas Lamprecht --- .../admin-guide/kernel-parameters.txt | 9 ++ - drivers/pci/quirks.c | 101 ++++++++++++++++++ - 2 files changed, 110 insertions(+) + drivers/pci/quirks.c | 102 ++++++++++++++++++ + 2 files changed, 111 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 2970a6bcf858..935a805afe60 100644 +index 25f6c5ff7c09..259f49955856 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -3125,6 +3125,15 @@ +@@ -3223,6 +3223,15 @@ Also, it enforces the PCI Local Bus spec rule that those bits should be 0 in system reset events (useful for kexec/kdump cases). @@ -74,11 +75,11 @@ index 2970a6bcf858..935a805afe60 100644 Safety option to keep boot IRQs enabled. This should never be necessary. diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c -index 2956ebbd83dc..8dceb0838970 100644 +index 4746d5c82ebd..0a67a53c0aca 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c -@@ -3705,6 +3705,106 @@ static int __init pci_apply_final_quirks(void) - +@@ -194,6 +194,106 @@ static int __init pci_apply_final_quirks(void) + } fs_initcall_sync(pci_apply_final_quirks); +static bool acs_on_downstream; @@ -182,13 +183,14 @@ index 2956ebbd83dc..8dceb0838970 100644 +} + /* - * Following are device-specific reset methods which can be used to - * reset a single function if other methods (e.g. FLR, PM D0->D3) are -@@ -4558,6 +4658,7 @@ static const struct pci_dev_acs_enabled { + * Decoding should be disabled for a PCI device during BAR sizing to avoid + * conflict. But doing so may cause problems on host bridge and perhaps other +@@ -4547,6 +4647,8 @@ static const struct pci_dev_acs_enabled { { PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs }, /* APM X-Gene */ { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_xgene_acs }, ++ /* Enable overrides for missing ACS capabilities */ + { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides }, - { 0 } - }; - + /* Ampere Computing */ + { PCI_VENDOR_ID_AMPERE, 0xE005, pci_quirk_xgene_acs }, + { PCI_VENDOR_ID_AMPERE, 0xE006, pci_quirk_xgene_acs }, diff --git a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch index 93e89fb..da07aaf 100644 --- a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch +++ b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch @@ -7,12 +7,13 @@ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fabian Grünbichler +Signed-off-by: Thomas Lamprecht --- virt/kvm/kvm_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index 238ddbc127e1..d7a24fd29144 100644 +index 076bc38963bf..d727e9649b71 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -77,7 +77,7 @@ module_param(halt_poll_ns, uint, 0644); diff --git a/patches/kernel/0005-ocfs2-make-metadata-estimation-accurate-and-clear.patch b/patches/kernel/0005-ocfs2-make-metadata-estimation-accurate-and-clear.patch deleted file mode 100644 index 576e42d..0000000 --- a/patches/kernel/0005-ocfs2-make-metadata-estimation-accurate-and-clear.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Changwei Ge -Date: Wed, 31 Jan 2018 16:15:02 -0800 -Subject: [PATCH] ocfs2: make metadata estimation accurate and clear -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Current code assume that ::w_unwritten_list always has only one item on. -This is not right and hard to get understood. So improve how to count -unwritten item. - -Link: http://lkml.kernel.org/r/1515479070-32653-1-git-send-email-ge.changwei@h3c.com -Signed-off-by: Changwei Ge -Reported-by: John Lightsey -Tested-by: John Lightsey -Cc: Mark Fasheh -Cc: Joseph Qi -Cc: Junxiao Bi -Cc: Joel Becker -Cc: Changwei Ge -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -(cherry picked from commit 63de8bd9328bf2a778fc277503da163ae3defa3c) -Signed-off-by: Fabian Grünbichler ---- - fs/ocfs2/aops.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c -index d1516327b787..256986aca8df 100644 ---- a/fs/ocfs2/aops.c -+++ b/fs/ocfs2/aops.c -@@ -797,6 +797,7 @@ struct ocfs2_write_ctxt { - struct ocfs2_cached_dealloc_ctxt w_dealloc; - - struct list_head w_unwritten_list; -+ unsigned int w_unwritten_count; - }; - - void ocfs2_unlock_and_free_pages(struct page **pages, int num_pages) -@@ -1386,6 +1387,7 @@ static int ocfs2_unwritten_check(struct inode *inode, - desc->c_clear_unwritten = 0; - list_add_tail(&new->ue_ip_node, &oi->ip_unwritten_list); - list_add_tail(&new->ue_node, &wc->w_unwritten_list); -+ wc->w_unwritten_count++; - new = NULL; - unlock: - spin_unlock(&oi->ip_lock); -@@ -2256,7 +2258,7 @@ static int ocfs2_dio_wr_get_block(struct inode *inode, sector_t iblock, - ue->ue_phys = desc->c_phys; - - list_splice_tail_init(&wc->w_unwritten_list, &dwc->dw_zero_list); -- dwc->dw_zero_count++; -+ dwc->dw_zero_count += wc->w_unwritten_count; - } - - ret = ocfs2_write_end_nolock(inode->i_mapping, pos, len, len, wc); diff --git a/patches/kernel/0006-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch b/patches/kernel/0006-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch deleted file mode 100644 index 99faeba..0000000 --- a/patches/kernel/0006-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch +++ /dev/null @@ -1,367 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Changwei Ge -Date: Wed, 31 Jan 2018 16:15:06 -0800 -Subject: [PATCH] ocfs2: try to reuse extent block in dealloc without - meta_alloc -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -A crash issue was reported by John Lightsey with a call trace as follows: - - ocfs2_split_extent+0x1ad3/0x1b40 [ocfs2] - ocfs2_change_extent_flag+0x33a/0x470 [ocfs2] - ocfs2_mark_extent_written+0x172/0x220 [ocfs2] - ocfs2_dio_end_io+0x62d/0x910 [ocfs2] - dio_complete+0x19a/0x1a0 - do_blockdev_direct_IO+0x19dd/0x1eb0 - __blockdev_direct_IO+0x43/0x50 - ocfs2_direct_IO+0x8f/0xa0 [ocfs2] - generic_file_direct_write+0xb2/0x170 - __generic_file_write_iter+0xc3/0x1b0 - ocfs2_file_write_iter+0x4bb/0xca0 [ocfs2] - __vfs_write+0xae/0xf0 - vfs_write+0xb8/0x1b0 - SyS_write+0x4f/0xb0 - system_call_fastpath+0x16/0x75 - -The BUG code told that extent tree wants to grow but no metadata was -reserved ahead of time. From my investigation into this issue, the root -cause it that although enough metadata is not reserved, there should be -enough for following use. Rightmost extent is merged into its left one -due to a certain times of marking extent written. Because during -marking extent written, we got many physically continuous extents. At -last, an empty extent showed up and the rightmost path is removed from -extent tree. - -Add a new mechanism to reuse extent block cached in dealloc which were -just unlinked from extent tree to solve this crash issue. - -Criteria is that during marking extents *written*, if extent rotation -and merging results in unlinking extent with growing extent tree later -without any metadata reserved ahead of time, try to reuse those extents -in dealloc in which deleted extents are cached. - -Also, this patch addresses the issue John reported that ::dw_zero_count -is not calculated properly. - -After applying this patch, the issue John reported was gone. Thanks for -the reproducer provided by John. And this patch has passed -ocfs2-test(29 cases) suite running by New H3C Group. - -[ge.changwei@h3c.com: fix static checker warnning] - Link: http://lkml.kernel.org/r/63ADC13FD55D6546B7DECE290D39E373F29196AE@H3CMLB12-EX.srv.huawei-3com.com -[akpm@linux-foundation.org: brelse(NULL) is legal] -Link: http://lkml.kernel.org/r/1515479070-32653-2-git-send-email-ge.changwei@h3c.com -Signed-off-by: Changwei Ge -Reported-by: John Lightsey -Tested-by: John Lightsey -Cc: Joel Becker -Cc: Joseph Qi -Cc: Junxiao Bi -Cc: Dan Carpenter -Cc: Mark Fasheh -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -(cherry picked from commit 71a36944042b7d9dd71f6a5d1c5ea1c2353b5d42) -Signed-off-by: Fabian Grünbichler ---- - fs/ocfs2/alloc.c | 206 ++++++++++++++++++++++++++++++++++++++++++++--- - fs/ocfs2/alloc.h | 1 + - fs/ocfs2/aops.c | 6 ++ - 3 files changed, 203 insertions(+), 10 deletions(-) - -diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c -index ab5105f9767e..2f2c76193f54 100644 ---- a/fs/ocfs2/alloc.c -+++ b/fs/ocfs2/alloc.c -@@ -165,6 +165,13 @@ static int ocfs2_dinode_insert_check(struct ocfs2_extent_tree *et, - struct ocfs2_extent_rec *rec); - static int ocfs2_dinode_sanity_check(struct ocfs2_extent_tree *et); - static void ocfs2_dinode_fill_root_el(struct ocfs2_extent_tree *et); -+ -+static int ocfs2_reuse_blk_from_dealloc(handle_t *handle, -+ struct ocfs2_extent_tree *et, -+ struct buffer_head **new_eb_bh, -+ int blk_wanted, int *blk_given); -+static int ocfs2_is_dealloc_empty(struct ocfs2_extent_tree *et); -+ - static const struct ocfs2_extent_tree_operations ocfs2_dinode_et_ops = { - .eo_set_last_eb_blk = ocfs2_dinode_set_last_eb_blk, - .eo_get_last_eb_blk = ocfs2_dinode_get_last_eb_blk, -@@ -448,6 +455,7 @@ static void __ocfs2_init_extent_tree(struct ocfs2_extent_tree *et, - if (!obj) - obj = (void *)bh->b_data; - et->et_object = obj; -+ et->et_dealloc = NULL; - - et->et_ops->eo_fill_root_el(et); - if (!et->et_ops->eo_fill_max_leaf_clusters) -@@ -1158,7 +1166,7 @@ static int ocfs2_add_branch(handle_t *handle, - struct buffer_head **last_eb_bh, - struct ocfs2_alloc_context *meta_ac) - { -- int status, new_blocks, i; -+ int status, new_blocks, i, block_given = 0; - u64 next_blkno, new_last_eb_blk; - struct buffer_head *bh; - struct buffer_head **new_eb_bhs = NULL; -@@ -1213,11 +1221,31 @@ static int ocfs2_add_branch(handle_t *handle, - goto bail; - } - -- status = ocfs2_create_new_meta_bhs(handle, et, new_blocks, -- meta_ac, new_eb_bhs); -- if (status < 0) { -- mlog_errno(status); -- goto bail; -+ /* Firstyly, try to reuse dealloc since we have already estimated how -+ * many extent blocks we may use. -+ */ -+ if (!ocfs2_is_dealloc_empty(et)) { -+ status = ocfs2_reuse_blk_from_dealloc(handle, et, -+ new_eb_bhs, new_blocks, -+ &block_given); -+ if (status < 0) { -+ mlog_errno(status); -+ goto bail; -+ } -+ } -+ -+ BUG_ON(block_given > new_blocks); -+ -+ if (block_given < new_blocks) { -+ BUG_ON(!meta_ac); -+ status = ocfs2_create_new_meta_bhs(handle, et, -+ new_blocks - block_given, -+ meta_ac, -+ &new_eb_bhs[block_given]); -+ if (status < 0) { -+ mlog_errno(status); -+ goto bail; -+ } - } - - /* Note: new_eb_bhs[new_blocks - 1] is the guy which will be -@@ -1340,15 +1368,25 @@ static int ocfs2_shift_tree_depth(handle_t *handle, - struct ocfs2_alloc_context *meta_ac, - struct buffer_head **ret_new_eb_bh) - { -- int status, i; -+ int status, i, block_given = 0; - u32 new_clusters; - struct buffer_head *new_eb_bh = NULL; - struct ocfs2_extent_block *eb; - struct ocfs2_extent_list *root_el; - struct ocfs2_extent_list *eb_el; - -- status = ocfs2_create_new_meta_bhs(handle, et, 1, meta_ac, -- &new_eb_bh); -+ if (!ocfs2_is_dealloc_empty(et)) { -+ status = ocfs2_reuse_blk_from_dealloc(handle, et, -+ &new_eb_bh, 1, -+ &block_given); -+ } else if (meta_ac) { -+ status = ocfs2_create_new_meta_bhs(handle, et, 1, meta_ac, -+ &new_eb_bh); -+ -+ } else { -+ BUG(); -+ } -+ - if (status < 0) { - mlog_errno(status); - goto bail; -@@ -1511,7 +1549,7 @@ static int ocfs2_grow_tree(handle_t *handle, struct ocfs2_extent_tree *et, - int depth = le16_to_cpu(el->l_tree_depth); - struct buffer_head *bh = NULL; - -- BUG_ON(meta_ac == NULL); -+ BUG_ON(meta_ac == NULL && ocfs2_is_dealloc_empty(et)); - - shift = ocfs2_find_branch_target(et, &bh); - if (shift < 0) { -@@ -6585,6 +6623,154 @@ ocfs2_find_per_slot_free_list(int type, - return fl; - } - -+static struct ocfs2_per_slot_free_list * -+ocfs2_find_preferred_free_list(int type, -+ int preferred_slot, -+ int *real_slot, -+ struct ocfs2_cached_dealloc_ctxt *ctxt) -+{ -+ struct ocfs2_per_slot_free_list *fl = ctxt->c_first_suballocator; -+ -+ while (fl) { -+ if (fl->f_inode_type == type && fl->f_slot == preferred_slot) { -+ *real_slot = fl->f_slot; -+ return fl; -+ } -+ -+ fl = fl->f_next_suballocator; -+ } -+ -+ /* If we can't find any free list matching preferred slot, just use -+ * the first one. -+ */ -+ fl = ctxt->c_first_suballocator; -+ *real_slot = fl->f_slot; -+ -+ return fl; -+} -+ -+/* Return Value 1 indicates empty */ -+static int ocfs2_is_dealloc_empty(struct ocfs2_extent_tree *et) -+{ -+ struct ocfs2_per_slot_free_list *fl = NULL; -+ -+ if (!et->et_dealloc) -+ return 1; -+ -+ fl = et->et_dealloc->c_first_suballocator; -+ if (!fl) -+ return 1; -+ -+ if (!fl->f_first) -+ return 1; -+ -+ return 0; -+} -+ -+/* If extent was deleted from tree due to extent rotation and merging, and -+ * no metadata is reserved ahead of time. Try to reuse some extents -+ * just deleted. This is only used to reuse extent blocks. -+ * It is supposed to find enough extent blocks in dealloc if our estimation -+ * on metadata is accurate. -+ */ -+static int ocfs2_reuse_blk_from_dealloc(handle_t *handle, -+ struct ocfs2_extent_tree *et, -+ struct buffer_head **new_eb_bh, -+ int blk_wanted, int *blk_given) -+{ -+ int i, status = 0, real_slot; -+ struct ocfs2_cached_dealloc_ctxt *dealloc; -+ struct ocfs2_per_slot_free_list *fl; -+ struct ocfs2_cached_block_free *bf; -+ struct ocfs2_extent_block *eb; -+ struct ocfs2_super *osb = -+ OCFS2_SB(ocfs2_metadata_cache_get_super(et->et_ci)); -+ -+ *blk_given = 0; -+ -+ /* If extent tree doesn't have a dealloc, this is not faulty. Just -+ * tell upper caller dealloc can't provide any block and it should -+ * ask for alloc to claim more space. -+ */ -+ dealloc = et->et_dealloc; -+ if (!dealloc) -+ goto bail; -+ -+ for (i = 0; i < blk_wanted; i++) { -+ /* Prefer to use local slot */ -+ fl = ocfs2_find_preferred_free_list(EXTENT_ALLOC_SYSTEM_INODE, -+ osb->slot_num, &real_slot, -+ dealloc); -+ /* If no more block can be reused, we should claim more -+ * from alloc. Just return here normally. -+ */ -+ if (!fl) { -+ status = 0; -+ break; -+ } -+ -+ bf = fl->f_first; -+ fl->f_first = bf->free_next; -+ -+ new_eb_bh[i] = sb_getblk(osb->sb, bf->free_blk); -+ if (new_eb_bh[i] == NULL) { -+ status = -ENOMEM; -+ mlog_errno(status); -+ goto bail; -+ } -+ -+ mlog(0, "Reusing block(%llu) from " -+ "dealloc(local slot:%d, real slot:%d)\n", -+ bf->free_blk, osb->slot_num, real_slot); -+ -+ ocfs2_set_new_buffer_uptodate(et->et_ci, new_eb_bh[i]); -+ -+ status = ocfs2_journal_access_eb(handle, et->et_ci, -+ new_eb_bh[i], -+ OCFS2_JOURNAL_ACCESS_CREATE); -+ if (status < 0) { -+ mlog_errno(status); -+ goto bail; -+ } -+ -+ memset(new_eb_bh[i]->b_data, 0, osb->sb->s_blocksize); -+ eb = (struct ocfs2_extent_block *) new_eb_bh[i]->b_data; -+ -+ /* We can't guarantee that buffer head is still cached, so -+ * polutlate the extent block again. -+ */ -+ strcpy(eb->h_signature, OCFS2_EXTENT_BLOCK_SIGNATURE); -+ eb->h_blkno = cpu_to_le64(bf->free_blk); -+ eb->h_fs_generation = cpu_to_le32(osb->fs_generation); -+ eb->h_suballoc_slot = cpu_to_le16(real_slot); -+ eb->h_suballoc_loc = cpu_to_le64(bf->free_bg); -+ eb->h_suballoc_bit = cpu_to_le16(bf->free_bit); -+ eb->h_list.l_count = -+ cpu_to_le16(ocfs2_extent_recs_per_eb(osb->sb)); -+ -+ /* We'll also be dirtied by the caller, so -+ * this isn't absolutely necessary. -+ */ -+ ocfs2_journal_dirty(handle, new_eb_bh[i]); -+ -+ if (!fl->f_first) { -+ dealloc->c_first_suballocator = fl->f_next_suballocator; -+ kfree(fl); -+ } -+ kfree(bf); -+ } -+ -+ *blk_given = i; -+ -+bail: -+ if (unlikely(status < 0)) { -+ for (i = 0; i < blk_wanted; i++) -+ brelse(new_eb_bh[i]); -+ } -+ -+ return status; -+} -+ - int ocfs2_cache_block_dealloc(struct ocfs2_cached_dealloc_ctxt *ctxt, - int type, int slot, u64 suballoc, - u64 blkno, unsigned int bit) -diff --git a/fs/ocfs2/alloc.h b/fs/ocfs2/alloc.h -index 27b75cf32cfa..250bcacdf9e9 100644 ---- a/fs/ocfs2/alloc.h -+++ b/fs/ocfs2/alloc.h -@@ -61,6 +61,7 @@ struct ocfs2_extent_tree { - ocfs2_journal_access_func et_root_journal_access; - void *et_object; - unsigned int et_max_leaf_clusters; -+ struct ocfs2_cached_dealloc_ctxt *et_dealloc; - }; - - /* -diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c -index 256986aca8df..e8e205bf2e41 100644 ---- a/fs/ocfs2/aops.c -+++ b/fs/ocfs2/aops.c -@@ -2332,6 +2332,12 @@ static int ocfs2_dio_end_io_write(struct inode *inode, - - ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh); - -+ /* Attach dealloc with extent tree in case that we may reuse extents -+ * which are already unlinked from current extent tree due to extent -+ * rotation and merging. -+ */ -+ et.et_dealloc = &dealloc; -+ - ret = ocfs2_lock_allocators(inode, &et, 0, dwc->dw_zero_count*2, - &data_ac, &meta_ac); - if (ret) { diff --git a/patches/kernel/0007-Revert-UBUNTU-Packaging-retpoline-add-safe-usage-hin.patch b/patches/kernel/0007-Revert-UBUNTU-Packaging-retpoline-add-safe-usage-hin.patch deleted file mode 100644 index 09d0807..0000000 --- a/patches/kernel/0007-Revert-UBUNTU-Packaging-retpoline-add-safe-usage-hin.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= -Date: Tue, 3 Apr 2018 14:59:26 +0200 -Subject: [PATCH] Revert "UBUNTU: [Packaging] retpoline -- add safe usage hint - support" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This (partially) reverts commit 1e39020902132b3065bedf0a0c33031e89f9f57a. - -this modifies the upstream kernel build to call an Ubuntu script which -we remove before building. it would also be required by any module -builds afterwards and is not shipped by Ubuntu's kernel packages either. - -Signed-off-by: Fabian Grünbichler ---- - scripts/Makefile.build | 10 +--------- - 1 file changed, 1 insertion(+), 9 deletions(-) - -diff --git a/scripts/Makefile.build b/scripts/Makefile.build -index 1b07341eda2c..419fe6fdad17 100644 ---- a/scripts/Makefile.build -+++ b/scripts/Makefile.build -@@ -295,27 +295,19 @@ objtool_dep = $(objtool_obj) \ - $(wildcard include/config/orc/unwinder.h \ - include/config/stack/validation.h) - --ifdef CONFIG_RETPOLINE --cmd_ubuntu_retpoline = $(CONFIG_SHELL) $(srctree)/scripts/ubuntu-retpoline-extract-one $(@) $(<) "$(filter -m16 %code16gcc.h,$(a_flags))"; --else --cmd_ubuntu_retpoline = --endif -- - define rule_cc_o_c - $(call echo-cmd,checksrc) $(cmd_checksrc) \ - $(call cmd_and_fixdep,cc_o_c) \ - $(cmd_checkdoc) \ - $(call echo-cmd,objtool) $(cmd_objtool) \ - $(cmd_modversions_c) \ -- $(call echo-cmd,ubuntu-retpoline) $(cmd_ubuntu_retpoline) \ - $(call echo-cmd,record_mcount) $(cmd_record_mcount) - endef - - define rule_as_o_S - $(call cmd_and_fixdep,as_o_S) \ - $(call echo-cmd,objtool) $(cmd_objtool) \ -- $(cmd_modversions_S) \ -- $(call echo-cmd,ubuntu-retpoline) $(cmd_ubuntu_retpoline) -+ $(cmd_modversions_S) - endef - - # List module undefined symbols (or empty line if not enabled) diff --git a/patches/kernel/0008-kvm-x86-Add-AMD-s-EX_CFG-to-the-list-of-ignored-MSRs.patch b/patches/kernel/0008-kvm-x86-Add-AMD-s-EX_CFG-to-the-list-of-ignored-MSRs.patch deleted file mode 100644 index 98180c1..0000000 --- a/patches/kernel/0008-kvm-x86-Add-AMD-s-EX_CFG-to-the-list-of-ignored-MSRs.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Eduardo Habkost -Date: Mon, 17 Dec 2018 22:34:18 -0200 -Subject: [PATCH] kvm: x86: Add AMD's EX_CFG to the list of ignored MSRs - -Some guests OSes (including Windows 10) write to MSR 0xc001102c -on some cases (possibly while trying to apply a CPU errata). -Make KVM ignore reads and writes to that MSR, so the guest won't -crash. - -The MSR is documented as "Execution Unit Configuration (EX_CFG)", -at AMD's "BIOS and Kernel Developer's Guide (BKDG) for AMD Family -15h Models 00h-0Fh Processors". - -Cc: stable@vger.kernel.org -Signed-off-by: Eduardo Habkost -Signed-off-by: Paolo Bonzini -Signed-off-by: Thomas Lamprecht ---- - arch/x86/include/asm/msr-index.h | 1 + - arch/x86/kvm/x86.c | 2 ++ - 2 files changed, 3 insertions(+) - -diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h -index 7ca92f9b5eae..4eb78a908544 100644 ---- a/arch/x86/include/asm/msr-index.h -+++ b/arch/x86/include/asm/msr-index.h -@@ -382,6 +382,7 @@ - #define MSR_F15H_NB_PERF_CTR 0xc0010241 - #define MSR_F15H_PTSC 0xc0010280 - #define MSR_F15H_IC_CFG 0xc0011021 -+#define MSR_F15H_EX_CFG 0xc001102c - - /* Fam 10h MSRs */ - #define MSR_FAM10H_MMIO_CONF_BASE 0xc0010058 -diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index ac17f53812af..1154795459de 100644 ---- a/arch/x86/kvm/x86.c -+++ b/arch/x86/kvm/x86.c -@@ -2240,6 +2240,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) - case MSR_AMD64_PATCH_LOADER: - case MSR_AMD64_BU_CFG2: - case MSR_AMD64_DC_CFG: -+ case MSR_F15H_EX_CFG: - break; - - case MSR_IA32_UCODE_REV: -@@ -2528,6 +2529,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) - case MSR_AMD64_BU_CFG2: - case MSR_IA32_PERF_CTL: - case MSR_AMD64_DC_CFG: -+ case MSR_F15H_EX_CFG: - msr_info->data = 0; - break; - case MSR_K7_EVNTSEL0 ... MSR_K7_EVNTSEL3: