]> Git Repo - J-linux.git/commitdiff
fs/ntfs3: Accumulated refactoring changes
authorKonstantin Komarov <[email protected]>
Thu, 10 Oct 2024 17:06:59 +0000 (20:06 +0300)
committerKonstantin Komarov <[email protected]>
Fri, 1 Nov 2024 08:19:53 +0000 (11:19 +0300)
Changes made to improve readability and debuggability.

Signed-off-by: Konstantin Komarov <[email protected]>
fs/ntfs3/bitmap.c
fs/ntfs3/frecord.c
fs/ntfs3/fsntfs.c
fs/ntfs3/run.c

index cf4fe21a50399b0baec20ca2682eca12a2c950e2..04107b95071707e332c42c20a7392fd130892724 100644 (file)
@@ -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, op);
        }
-
-       if (!RB_EMPTY_ROOT(&wnd->start_tree))
-               wnd_remove_free_ext(wnd, bit, bits0);
-
        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 @@ use_wnd:
                        if (!ret)
                                goto out;
                }
-
-               bits -= op;
-               wbit = 0;
-               iw += 1;
        }
        ret = true;
 
index c33e818b3164cdef03e616790a3a43d2a856d346..8b39d0ce5f2890df881d313099aac73d0c21f26b 100644 (file)
@@ -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);
index 0fa636038b4e4d9916d729dc6bdb35dd6b06c45c..03471bc9371cd1bc4fd7cd29a023efd64072db0f 100644 (file)
@@ -2699,4 +2699,4 @@ unlock_out:
 out:
        __putname(uni);
        return err;
-}
\ No newline at end of file
+}
index 48566dff0dc92b79359494814da27b12c6143ad4..6e86d66197ef2997c98eb4ac051f4d8d3307225e 100644 (file)
@@ -1112,9 +1112,9 @@ 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 :
-                                                NULL;
+                       struct rw_semaphore *lock =
+                               is_mounted(sbi) ? &sbi->mft.ni->file.run_lock :
+                                                 NULL;
                        if (lock)
                                down_read(lock);
                        ntfs_refresh_zone(sbi);
This page took 0.085403 seconds and 4 git commands to generate.