Unverified Commit bac89bb3 authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Accumulated refactoring changes



Changes made to improve readability and debuggability.

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 678c1901
Loading
Loading
Loading
Loading
+17 −45
Original line number Diff line number Diff line
@@ -710,20 +710,17 @@ int wnd_set_free(struct wnd_bitmap *wnd, size_t bit, size_t bits)
{
	int err = 0;
	struct super_block *sb = wnd->sb;
	size_t bits0 = bits;
	u32 wbits = 8 * sb->s_blocksize;
	size_t iw = bit >> (sb->s_blocksize_bits + 3);
	u32 wbit = bit & (wbits - 1);
	struct buffer_head *bh;
	u32 op;

	while (iw < wnd->nwnd && bits) {
		u32 tail, op;

	for (; iw < wnd->nwnd && bits; iw++, bit += op, bits -= op, wbit = 0) {
		if (iw + 1 == wnd->nwnd)
			wbits = wnd->bits_last;

		tail = wbits - wbit;
		op = min_t(u32, tail, bits);
		op = min_t(u32, wbits - wbit, bits);

		bh = wnd_map(wnd, iw);
		if (IS_ERR(bh)) {
@@ -736,20 +733,15 @@ int wnd_set_free(struct wnd_bitmap *wnd, size_t bit, size_t bits)
		ntfs_bitmap_clear_le(bh->b_data, wbit, op);

		wnd->free_bits[iw] += op;
		wnd->total_zeroes += op;

		set_buffer_uptodate(bh);
		mark_buffer_dirty(bh);
		unlock_buffer(bh);
		put_bh(bh);

		wnd->total_zeroes += op;
		bits -= op;
		wbit = 0;
		iw += 1;
		wnd_add_free_ext(wnd, bit, op, false);
	}

	wnd_add_free_ext(wnd, bit, bits0, false);

	return err;
}

@@ -760,20 +752,17 @@ int wnd_set_used(struct wnd_bitmap *wnd, size_t bit, size_t bits)
{
	int err = 0;
	struct super_block *sb = wnd->sb;
	size_t bits0 = bits;
	size_t iw = bit >> (sb->s_blocksize_bits + 3);
	u32 wbits = 8 * sb->s_blocksize;
	u32 wbit = bit & (wbits - 1);
	struct buffer_head *bh;
	u32 op;

	while (iw < wnd->nwnd && bits) {
		u32 tail, op;

	for (; iw < wnd->nwnd && bits; iw++, bit += op, bits -= op, wbit = 0) {
		if (unlikely(iw + 1 == wnd->nwnd))
			wbits = wnd->bits_last;

		tail = wbits - wbit;
		op = min_t(u32, tail, bits);
		op = min_t(u32, wbits - wbit, bits);

		bh = wnd_map(wnd, iw);
		if (IS_ERR(bh)) {
@@ -785,21 +774,16 @@ int wnd_set_used(struct wnd_bitmap *wnd, size_t bit, size_t bits)

		ntfs_bitmap_set_le(bh->b_data, wbit, op);
		wnd->free_bits[iw] -= op;
		wnd->total_zeroes -= op;

		set_buffer_uptodate(bh);
		mark_buffer_dirty(bh);
		unlock_buffer(bh);
		put_bh(bh);

		wnd->total_zeroes -= op;
		bits -= op;
		wbit = 0;
		iw += 1;
	}

		if (!RB_EMPTY_ROOT(&wnd->start_tree))
		wnd_remove_free_ext(wnd, bit, bits0);

			wnd_remove_free_ext(wnd, bit, op);
	}
	return err;
}

@@ -852,15 +836,13 @@ static bool wnd_is_free_hlp(struct wnd_bitmap *wnd, size_t bit, size_t bits)
	size_t iw = bit >> (sb->s_blocksize_bits + 3);
	u32 wbits = 8 * sb->s_blocksize;
	u32 wbit = bit & (wbits - 1);
	u32 op;

	while (iw < wnd->nwnd && bits) {
		u32 tail, op;

	for (; iw < wnd->nwnd && bits; iw++, bits -= op, wbit = 0) {
		if (unlikely(iw + 1 == wnd->nwnd))
			wbits = wnd->bits_last;

		tail = wbits - wbit;
		op = min_t(u32, tail, bits);
		op = min_t(u32, wbits - wbit, bits);

		if (wbits != wnd->free_bits[iw]) {
			bool ret;
@@ -875,10 +857,6 @@ static bool wnd_is_free_hlp(struct wnd_bitmap *wnd, size_t bit, size_t bits)
			if (!ret)
				return false;
		}

		bits -= op;
		wbit = 0;
		iw += 1;
	}

	return true;
@@ -928,6 +906,7 @@ bool wnd_is_used(struct wnd_bitmap *wnd, size_t bit, size_t bits)
	size_t iw = bit >> (sb->s_blocksize_bits + 3);
	u32 wbits = 8 * sb->s_blocksize;
	u32 wbit = bit & (wbits - 1);
	u32 op;
	size_t end;
	struct rb_node *n;
	struct e_node *e;
@@ -945,14 +924,11 @@ bool wnd_is_used(struct wnd_bitmap *wnd, size_t bit, size_t bits)
		return false;

use_wnd:
	while (iw < wnd->nwnd && bits) {
		u32 tail, op;

	for (; iw < wnd->nwnd && bits; iw++, bits -= op, wbit = 0) {
		if (unlikely(iw + 1 == wnd->nwnd))
			wbits = wnd->bits_last;

		tail = wbits - wbit;
		op = min_t(u32, tail, bits);
		op = min_t(u32, wbits - wbit, bits);

		if (wnd->free_bits[iw]) {
			bool ret;
@@ -966,10 +942,6 @@ bool wnd_is_used(struct wnd_bitmap *wnd, size_t bit, size_t bits)
			if (!ret)
				goto out;
		}

		bits -= op;
		wbit = 0;
		iw += 1;
	}
	ret = true;

+0 −1
Original line number Diff line number Diff line
@@ -1958,7 +1958,6 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,
	if (end > alloc_size)
		end = alloc_size;


	while (vbo < end) {
		if (idx == -1) {
			ok = run_lookup_entry(&run, vcn, &lcn, &clen, &idx);
+3 −3
Original line number Diff line number Diff line
@@ -1112,8 +1112,8 @@ int run_unpack_ex(struct runs_tree *run, struct ntfs_sb_info *sbi, CLST ino,
		err = wnd_set_used_safe(wnd, lcn, len, &done);
		if (zone) {
			/* Restore zone. Lock mft run. */
			struct rw_semaphore *lock;
			lock = is_mounted(sbi) ? &sbi->mft.ni->file.run_lock :
			struct rw_semaphore *lock =
				is_mounted(sbi) ? &sbi->mft.ni->file.run_lock :
						  NULL;
			if (lock)
				down_read(lock);
+1 −1

File changed.

Contains only whitespace changes.