|
@@ -289,6 +289,26 @@ static void slot_hold(struct gfs2_quota_data *qd)
|
|
|
spin_unlock(&qd_lru_lock);
|
|
|
}
|
|
|
|
|
|
+static void gfs2_icbit_munge(struct gfs2_sbd *sdp, unsigned char **bitmap,
|
|
|
+ unsigned int bit, int new_value)
|
|
|
+{
|
|
|
+ unsigned int c, o, b = bit;
|
|
|
+ int old_value;
|
|
|
+
|
|
|
+ c = b / (8 * PAGE_SIZE);
|
|
|
+ b %= 8 * PAGE_SIZE;
|
|
|
+ o = b / 8;
|
|
|
+ b %= 8;
|
|
|
+
|
|
|
+ old_value = (bitmap[c][o] & (1 << b));
|
|
|
+ gfs2_assert_withdraw(sdp, !old_value != !new_value);
|
|
|
+
|
|
|
+ if (new_value)
|
|
|
+ bitmap[c][o] |= 1 << b;
|
|
|
+ else
|
|
|
+ bitmap[c][o] &= ~(1 << b);
|
|
|
+}
|
|
|
+
|
|
|
static void slot_put(struct gfs2_quota_data *qd)
|
|
|
{
|
|
|
struct gfs2_sbd *sdp = qd->qd_gl->gl_sbd;
|