Hi, Chao

Add Hyojun.

On 2018/2/8 21:30, Chao Yu wrote:
On 2018/2/6 12:31, Sheng Yong wrote:
        /* only root inode was written before truncating dnodes */
        last_inode_pos = start_inode_pos +
-               c.cur_seg[CURSEG_HOT_NODE] * c.blks_per_seg + quota_inum;
+               c.cur_seg[CURSEG_HOT_NODE] * c.blks_per_seg + c.quota_inum;

- f2fs_create_root_dir
  - f2fs_write_root_inode
   - discard_obsolete_dnode
     access c.quota_inum
  - f2fs_write_qf_inode
    update c.quota_inum

Should c.quota_inum be initialized more early?

I think we should only count quota inodes if thye are already initialized.
Otherwise, if quota_ino is not enabled, there is only one inode (root) in
CURSEG_HOT_NODE, and two blocks next to root inode will not be discarded.

I'm a bit confused about the `offset' scale in discard_obsolete_dnode.
It seems `if (offset >= start_inode_pos || offset <= last_inode_pos)'
will always be true?

Hi, Hyojun, could you please also have a look at this, thanks :)

diff --git a/mkfs/f2fs_format.c b/mkfs/f2fs_format.c
index 0fc8b30..6c9ae22 100644
--- a/mkfs/f2fs_format.c
+++ b/mkfs/f2fs_format.c
@@ -963,7 +963,7 @@ static int discard_obsolete_dnode(struct f2fs_node 
*raw_node, u_int64_t offset)
                }
                offset = next_blkaddr;
                /* should avoid recursive chain due to stale data */
-               if (offset >= start_inode_pos || offset <= last_inode_pos)
+               if (offset <= last_inode_pos)
                        break;
        } while (1);

thanks,
Sheng

Thanks,

.



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to