09 Dec, 2014

11 commits


06 Dec, 2014

1 commit

  • This patch tries to fix:

    BUG: using smp_processor_id() in preemptible [00000000] code: f2fs_gc-254:0/384
    (radix_tree_node_alloc+0x14/0x74) from [] (radix_tree_insert+0x110/0x200)
    (radix_tree_insert+0x110/0x200) from [] (gc_data_segment+0x340/0x52c)
    (gc_data_segment+0x340/0x52c) from [] (f2fs_gc+0x208/0x400)
    (f2fs_gc+0x208/0x400) from [] (gc_thread_func+0x248/0x28c)
    (gc_thread_func+0x248/0x28c) from [] (kthread+0xa0/0xac)
    (kthread+0xa0/0xac) from [] (ret_from_fork+0x14/0x3c)

    The reason is that f2fs calls radix_tree_insert under enabled preemption.
    So, before calling it, we need to call radix_tree_preload.

    Otherwise, we should use _GFP_WAIT for the radix tree, and use mutex or
    semaphore to cover the radix tree operations.

    Signed-off-by: Jaegeuk Kim

    Jaegeuk Kim
     

04 Dec, 2014

2 commits


03 Dec, 2014

1 commit


02 Dec, 2014

2 commits


28 Nov, 2014

1 commit


26 Nov, 2014

6 commits


24 Nov, 2014

4 commits


20 Nov, 2014

5 commits

  • Under memory pressure, we don't need to skip SSA page writes.

    Signed-off-by: Jaegeuk Kim

    Jaegeuk Kim
     
  • If a node page is request to be written during the reclaiming path, we should
    submit the bio to avoid pending to recliam it.

    Signed-off-by: Jaegeuk Kim

    Jaegeuk Kim
     
  • Now in f2fs, we have three inode cache: ORPHAN_INO, APPEND_INO, UPDATE_INO,
    and we manage fields related to inode cache separately in struct f2fs_sb_info
    for each inode cache type.
    This makes codes a bit messy, so that this patch intorduce a new struct
    inode_management to wrap inner fields as following which make codes more neat.

    /* for inner inode cache management */
    struct inode_management {
    struct radix_tree_root ino_root; /* ino entry array */
    spinlock_t ino_lock; /* for ino entry lock */
    struct list_head ino_list; /* inode list head */
    unsigned long ino_num; /* number of entries */
    };

    struct f2fs_sb_info {
    ...
    struct inode_management im[MAX_INO_ENTRY]; /* manage inode cache */
    ...
    }

    Signed-off-by: Chao Yu
    Signed-off-by: Jaegeuk Kim

    Chao Yu
     
  • Because we have checked the contrary condition in case of "if" judgment, we do
    not need to check the condition again in case of "else" judgment. Let's remove
    it.

    Signed-off-by: Chao Yu
    Signed-off-by: Jaegeuk Kim

    Chao Yu
     
  • In f2fs_remount, we will stop gc thread and set need_restart_gc as true when new
    option is set without BG_GC, then if any error occurred in the following
    procedure, we can restore to start the gc thread.
    But after that, We will fail to restore gc thread in start_gc_thread as BG_GC is
    not set in new option, so we'd better move this condition judgment out of
    start_gc_thread to fix this issue.

    Signed-off-by: Chao Yu
    Signed-off-by: Jaegeuk Kim

    Chao Yu
     

19 Nov, 2014

2 commits


12 Nov, 2014

2 commits


11 Nov, 2014

1 commit


10 Nov, 2014

2 commits