From: Sasha Levin <Alexander.Levin@microsoft.com>
To: "stable@vger.kernel.org" <stable@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Bob Peterson <rpeterso@redhat.com>,
Andreas Gruenbacher <agruenba@redhat.com>,
Sasha Levin <Alexander.Levin@microsoft.com>
Subject: [PATCH AUTOSEL 3.18 07/19] gfs2: Don't reject a supposedly full bitmap if we have blocks reserved
Date: Fri, 7 Sep 2018 00:39:31 +0000 [thread overview]
Message-ID: <20180907003923.58019-7-alexander.levin@microsoft.com> (raw)
In-Reply-To: <20180907003923.58019-1-alexander.levin@microsoft.com>
From: Bob Peterson <rpeterso@redhat.com>
[ Upstream commit e79e0e1428188b24c3b57309ffa54a33c4ae40c4 ]
Before this patch, you could get into situations like this:
1. Process 1 searches for X free blocks, finds them, makes a reservation
2. Process 2 searches for free blocks in the same rgrp, but now the
bitmap is full because process 1's reservation is skipped over.
So it marks the bitmap as GBF_FULL.
3. Process 1 tries to allocate blocks from its own reservation, but
since the GBF_FULL bit is set, it skips over the rgrp and searches
elsewhere, thus not using its own reservation.
This patch adds an additional check to allow processes to use their
own reservations.
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
---
fs/gfs2/rgrp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 7474c413ffd1..54bc68acc10c 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -1643,7 +1643,8 @@ static int gfs2_rbm_find(struct gfs2_rbm *rbm, u8 state, u32 *minext,
while(1) {
bi = rbm_bi(rbm);
- if (test_bit(GBF_FULL, &bi->bi_flags) &&
+ if ((ip == NULL || !gfs2_rs_active(&ip->i_res)) &&
+ test_bit(GBF_FULL, &bi->bi_flags) &&
(state == GFS2_BLKST_FREE))
goto next_bitmap;
--
2.17.1
next prev parent reply other threads:[~2018-09-07 0:45 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-07 0:39 [PATCH AUTOSEL 3.18 01/19] ALSA: msnd: Fix the default sample sizes Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 02/19] ALSA: usb-audio: Fix multiple definitions in AU0828_DEVICE() macro Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 04/19] gfs2: Special-case rindex for gfs2_grow Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 03/19] xfrm: fix 'passing zero to ERR_PTR()' warning Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 05/19] MIPS: ath79: fix system restart Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 06/19] mtd/maps: fix solutionengine.c printk format warnings Sasha Levin
2018-09-07 0:39 ` Sasha Levin [this message]
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 08/19] iio: ad9523: Fix displayed phase Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 09/19] fbdev: omapfb: off by one in omapfb_register_client() Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 10/19] video: goldfishfb: fix memory leak on driver remove Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 11/19] fbdev/via: fix defined but not used warning Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 12/19] perf powerpc: Fix callchain ip filtering when return address is in a register Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 13/19] fbdev: Distinguish between interlaced and progressive modes Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 14/19] perf powerpc: Fix callchain ip filtering Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 15/19] powerpc/powernv: opal_put_chars partial write fix Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 16/19] mac80211: restrict delayed tailroom needed decrement Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 17/19] s390/qeth: fix race in used-buffer accounting Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 18/19] s390/qeth: reset layer2 attribute on layer switch Sasha Levin
2018-09-07 0:39 ` [PATCH AUTOSEL 3.18 19/19] platform/x86: toshiba_acpi: Fix defined but not used build warnings Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180907003923.58019-7-alexander.levin@microsoft.com \
--to=alexander.levin@microsoft.com \
--cc=agruenba@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rpeterso@redhat.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome