Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[cascardo/linux.git] / fs / f2fs / super.c
1 /*
2  * fs/f2fs/super.c
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5  *             http://www.samsung.com/
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  */
11 #include <linux/module.h>
12 #include <linux/init.h>
13 #include <linux/fs.h>
14 #include <linux/statfs.h>
15 #include <linux/buffer_head.h>
16 #include <linux/backing-dev.h>
17 #include <linux/kthread.h>
18 #include <linux/parser.h>
19 #include <linux/mount.h>
20 #include <linux/seq_file.h>
21 #include <linux/proc_fs.h>
22 #include <linux/random.h>
23 #include <linux/exportfs.h>
24 #include <linux/blkdev.h>
25 #include <linux/f2fs_fs.h>
26 #include <linux/sysfs.h>
27
28 #include "f2fs.h"
29 #include "node.h"
30 #include "segment.h"
31 #include "xattr.h"
32 #include "gc.h"
33 #include "trace.h"
34
35 #define CREATE_TRACE_POINTS
36 #include <trace/events/f2fs.h>
37
38 static struct proc_dir_entry *f2fs_proc_root;
39 static struct kmem_cache *f2fs_inode_cachep;
40 static struct kset *f2fs_kset;
41
42 /* f2fs-wide shrinker description */
43 static struct shrinker f2fs_shrinker_info = {
44         .scan_objects = f2fs_shrink_scan,
45         .count_objects = f2fs_shrink_count,
46         .seeks = DEFAULT_SEEKS,
47 };
48
49 enum {
50         Opt_gc_background,
51         Opt_disable_roll_forward,
52         Opt_norecovery,
53         Opt_discard,
54         Opt_noheap,
55         Opt_user_xattr,
56         Opt_nouser_xattr,
57         Opt_acl,
58         Opt_noacl,
59         Opt_active_logs,
60         Opt_disable_ext_identify,
61         Opt_inline_xattr,
62         Opt_inline_data,
63         Opt_inline_dentry,
64         Opt_flush_merge,
65         Opt_nobarrier,
66         Opt_fastboot,
67         Opt_extent_cache,
68         Opt_noextent_cache,
69         Opt_noinline_data,
70         Opt_data_flush,
71         Opt_err,
72 };
73
74 static match_table_t f2fs_tokens = {
75         {Opt_gc_background, "background_gc=%s"},
76         {Opt_disable_roll_forward, "disable_roll_forward"},
77         {Opt_norecovery, "norecovery"},
78         {Opt_discard, "discard"},
79         {Opt_noheap, "no_heap"},
80         {Opt_user_xattr, "user_xattr"},
81         {Opt_nouser_xattr, "nouser_xattr"},
82         {Opt_acl, "acl"},
83         {Opt_noacl, "noacl"},
84         {Opt_active_logs, "active_logs=%u"},
85         {Opt_disable_ext_identify, "disable_ext_identify"},
86         {Opt_inline_xattr, "inline_xattr"},
87         {Opt_inline_data, "inline_data"},
88         {Opt_inline_dentry, "inline_dentry"},
89         {Opt_flush_merge, "flush_merge"},
90         {Opt_nobarrier, "nobarrier"},
91         {Opt_fastboot, "fastboot"},
92         {Opt_extent_cache, "extent_cache"},
93         {Opt_noextent_cache, "noextent_cache"},
94         {Opt_noinline_data, "noinline_data"},
95         {Opt_data_flush, "data_flush"},
96         {Opt_err, NULL},
97 };
98
99 /* Sysfs support for f2fs */
100 enum {
101         GC_THREAD,      /* struct f2fs_gc_thread */
102         SM_INFO,        /* struct f2fs_sm_info */
103         NM_INFO,        /* struct f2fs_nm_info */
104         F2FS_SBI,       /* struct f2fs_sb_info */
105 };
106
107 struct f2fs_attr {
108         struct attribute attr;
109         ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *);
110         ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *,
111                          const char *, size_t);
112         int struct_type;
113         int offset;
114 };
115
116 static unsigned char *__struct_ptr(struct f2fs_sb_info *sbi, int struct_type)
117 {
118         if (struct_type == GC_THREAD)
119                 return (unsigned char *)sbi->gc_thread;
120         else if (struct_type == SM_INFO)
121                 return (unsigned char *)SM_I(sbi);
122         else if (struct_type == NM_INFO)
123                 return (unsigned char *)NM_I(sbi);
124         else if (struct_type == F2FS_SBI)
125                 return (unsigned char *)sbi;
126         return NULL;
127 }
128
129 static ssize_t f2fs_sbi_show(struct f2fs_attr *a,
130                         struct f2fs_sb_info *sbi, char *buf)
131 {
132         unsigned char *ptr = NULL;
133         unsigned int *ui;
134
135         ptr = __struct_ptr(sbi, a->struct_type);
136         if (!ptr)
137                 return -EINVAL;
138
139         ui = (unsigned int *)(ptr + a->offset);
140
141         return snprintf(buf, PAGE_SIZE, "%u\n", *ui);
142 }
143
144 static ssize_t f2fs_sbi_store(struct f2fs_attr *a,
145                         struct f2fs_sb_info *sbi,
146                         const char *buf, size_t count)
147 {
148         unsigned char *ptr;
149         unsigned long t;
150         unsigned int *ui;
151         ssize_t ret;
152
153         ptr = __struct_ptr(sbi, a->struct_type);
154         if (!ptr)
155                 return -EINVAL;
156
157         ui = (unsigned int *)(ptr + a->offset);
158
159         ret = kstrtoul(skip_spaces(buf), 0, &t);
160         if (ret < 0)
161                 return ret;
162         *ui = t;
163         return count;
164 }
165
166 static ssize_t f2fs_attr_show(struct kobject *kobj,
167                                 struct attribute *attr, char *buf)
168 {
169         struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info,
170                                                                 s_kobj);
171         struct f2fs_attr *a = container_of(attr, struct f2fs_attr, attr);
172
173         return a->show ? a->show(a, sbi, buf) : 0;
174 }
175
176 static ssize_t f2fs_attr_store(struct kobject *kobj, struct attribute *attr,
177                                                 const char *buf, size_t len)
178 {
179         struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info,
180                                                                         s_kobj);
181         struct f2fs_attr *a = container_of(attr, struct f2fs_attr, attr);
182
183         return a->store ? a->store(a, sbi, buf, len) : 0;
184 }
185
186 static void f2fs_sb_release(struct kobject *kobj)
187 {
188         struct f2fs_sb_info *sbi = container_of(kobj, struct f2fs_sb_info,
189                                                                 s_kobj);
190         complete(&sbi->s_kobj_unregister);
191 }
192
193 #define F2FS_ATTR_OFFSET(_struct_type, _name, _mode, _show, _store, _offset) \
194 static struct f2fs_attr f2fs_attr_##_name = {                   \
195         .attr = {.name = __stringify(_name), .mode = _mode },   \
196         .show   = _show,                                        \
197         .store  = _store,                                       \
198         .struct_type = _struct_type,                            \
199         .offset = _offset                                       \
200 }
201
202 #define F2FS_RW_ATTR(struct_type, struct_name, name, elname)    \
203         F2FS_ATTR_OFFSET(struct_type, name, 0644,               \
204                 f2fs_sbi_show, f2fs_sbi_store,                  \
205                 offsetof(struct struct_name, elname))
206
207 F2FS_RW_ATTR(GC_THREAD, f2fs_gc_kthread, gc_min_sleep_time, min_sleep_time);
208 F2FS_RW_ATTR(GC_THREAD, f2fs_gc_kthread, gc_max_sleep_time, max_sleep_time);
209 F2FS_RW_ATTR(GC_THREAD, f2fs_gc_kthread, gc_no_gc_sleep_time, no_gc_sleep_time);
210 F2FS_RW_ATTR(GC_THREAD, f2fs_gc_kthread, gc_idle, gc_idle);
211 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, reclaim_segments, rec_prefree_segments);
212 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, max_small_discards, max_discards);
213 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, batched_trim_sections, trim_sections);
214 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, ipu_policy, ipu_policy);
215 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, min_ipu_util, min_ipu_util);
216 F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, min_fsync_blocks, min_fsync_blocks);
217 F2FS_RW_ATTR(NM_INFO, f2fs_nm_info, ram_thresh, ram_thresh);
218 F2FS_RW_ATTR(NM_INFO, f2fs_nm_info, ra_nid_pages, ra_nid_pages);
219 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, max_victim_search, max_victim_search);
220 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, dir_level, dir_level);
221 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, cp_interval, interval_time[CP_TIME]);
222 F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, idle_interval, interval_time[REQ_TIME]);
223
224 #define ATTR_LIST(name) (&f2fs_attr_##name.attr)
225 static struct attribute *f2fs_attrs[] = {
226         ATTR_LIST(gc_min_sleep_time),
227         ATTR_LIST(gc_max_sleep_time),
228         ATTR_LIST(gc_no_gc_sleep_time),
229         ATTR_LIST(gc_idle),
230         ATTR_LIST(reclaim_segments),
231         ATTR_LIST(max_small_discards),
232         ATTR_LIST(batched_trim_sections),
233         ATTR_LIST(ipu_policy),
234         ATTR_LIST(min_ipu_util),
235         ATTR_LIST(min_fsync_blocks),
236         ATTR_LIST(max_victim_search),
237         ATTR_LIST(dir_level),
238         ATTR_LIST(ram_thresh),
239         ATTR_LIST(ra_nid_pages),
240         ATTR_LIST(cp_interval),
241         ATTR_LIST(idle_interval),
242         NULL,
243 };
244
245 static const struct sysfs_ops f2fs_attr_ops = {
246         .show   = f2fs_attr_show,
247         .store  = f2fs_attr_store,
248 };
249
250 static struct kobj_type f2fs_ktype = {
251         .default_attrs  = f2fs_attrs,
252         .sysfs_ops      = &f2fs_attr_ops,
253         .release        = f2fs_sb_release,
254 };
255
256 void f2fs_msg(struct super_block *sb, const char *level, const char *fmt, ...)
257 {
258         struct va_format vaf;
259         va_list args;
260
261         va_start(args, fmt);
262         vaf.fmt = fmt;
263         vaf.va = &args;
264         printk("%sF2FS-fs (%s): %pV\n", level, sb->s_id, &vaf);
265         va_end(args);
266 }
267
268 static void init_once(void *foo)
269 {
270         struct f2fs_inode_info *fi = (struct f2fs_inode_info *) foo;
271
272         inode_init_once(&fi->vfs_inode);
273 }
274
275 static int parse_options(struct super_block *sb, char *options)
276 {
277         struct f2fs_sb_info *sbi = F2FS_SB(sb);
278         struct request_queue *q;
279         substring_t args[MAX_OPT_ARGS];
280         char *p, *name;
281         int arg = 0;
282
283         if (!options)
284                 return 0;
285
286         while ((p = strsep(&options, ",")) != NULL) {
287                 int token;
288                 if (!*p)
289                         continue;
290                 /*
291                  * Initialize args struct so we know whether arg was
292                  * found; some options take optional arguments.
293                  */
294                 args[0].to = args[0].from = NULL;
295                 token = match_token(p, f2fs_tokens, args);
296
297                 switch (token) {
298                 case Opt_gc_background:
299                         name = match_strdup(&args[0]);
300
301                         if (!name)
302                                 return -ENOMEM;
303                         if (strlen(name) == 2 && !strncmp(name, "on", 2)) {
304                                 set_opt(sbi, BG_GC);
305                                 clear_opt(sbi, FORCE_FG_GC);
306                         } else if (strlen(name) == 3 && !strncmp(name, "off", 3)) {
307                                 clear_opt(sbi, BG_GC);
308                                 clear_opt(sbi, FORCE_FG_GC);
309                         } else if (strlen(name) == 4 && !strncmp(name, "sync", 4)) {
310                                 set_opt(sbi, BG_GC);
311                                 set_opt(sbi, FORCE_FG_GC);
312                         } else {
313                                 kfree(name);
314                                 return -EINVAL;
315                         }
316                         kfree(name);
317                         break;
318                 case Opt_disable_roll_forward:
319                         set_opt(sbi, DISABLE_ROLL_FORWARD);
320                         break;
321                 case Opt_norecovery:
322                         /* this option mounts f2fs with ro */
323                         set_opt(sbi, DISABLE_ROLL_FORWARD);
324                         if (!f2fs_readonly(sb))
325                                 return -EINVAL;
326                         break;
327                 case Opt_discard:
328                         q = bdev_get_queue(sb->s_bdev);
329                         if (blk_queue_discard(q)) {
330                                 set_opt(sbi, DISCARD);
331                         } else {
332                                 f2fs_msg(sb, KERN_WARNING,
333                                         "mounting with \"discard\" option, but "
334                                         "the device does not support discard");
335                         }
336                         break;
337                 case Opt_noheap:
338                         set_opt(sbi, NOHEAP);
339                         break;
340 #ifdef CONFIG_F2FS_FS_XATTR
341                 case Opt_user_xattr:
342                         set_opt(sbi, XATTR_USER);
343                         break;
344                 case Opt_nouser_xattr:
345                         clear_opt(sbi, XATTR_USER);
346                         break;
347                 case Opt_inline_xattr:
348                         set_opt(sbi, INLINE_XATTR);
349                         break;
350 #else
351                 case Opt_user_xattr:
352                         f2fs_msg(sb, KERN_INFO,
353                                 "user_xattr options not supported");
354                         break;
355                 case Opt_nouser_xattr:
356                         f2fs_msg(sb, KERN_INFO,
357                                 "nouser_xattr options not supported");
358                         break;
359                 case Opt_inline_xattr:
360                         f2fs_msg(sb, KERN_INFO,
361                                 "inline_xattr options not supported");
362                         break;
363 #endif
364 #ifdef CONFIG_F2FS_FS_POSIX_ACL
365                 case Opt_acl:
366                         set_opt(sbi, POSIX_ACL);
367                         break;
368                 case Opt_noacl:
369                         clear_opt(sbi, POSIX_ACL);
370                         break;
371 #else
372                 case Opt_acl:
373                         f2fs_msg(sb, KERN_INFO, "acl options not supported");
374                         break;
375                 case Opt_noacl:
376                         f2fs_msg(sb, KERN_INFO, "noacl options not supported");
377                         break;
378 #endif
379                 case Opt_active_logs:
380                         if (args->from && match_int(args, &arg))
381                                 return -EINVAL;
382                         if (arg != 2 && arg != 4 && arg != NR_CURSEG_TYPE)
383                                 return -EINVAL;
384                         sbi->active_logs = arg;
385                         break;
386                 case Opt_disable_ext_identify:
387                         set_opt(sbi, DISABLE_EXT_IDENTIFY);
388                         break;
389                 case Opt_inline_data:
390                         set_opt(sbi, INLINE_DATA);
391                         break;
392                 case Opt_inline_dentry:
393                         set_opt(sbi, INLINE_DENTRY);
394                         break;
395                 case Opt_flush_merge:
396                         set_opt(sbi, FLUSH_MERGE);
397                         break;
398                 case Opt_nobarrier:
399                         set_opt(sbi, NOBARRIER);
400                         break;
401                 case Opt_fastboot:
402                         set_opt(sbi, FASTBOOT);
403                         break;
404                 case Opt_extent_cache:
405                         set_opt(sbi, EXTENT_CACHE);
406                         break;
407                 case Opt_noextent_cache:
408                         clear_opt(sbi, EXTENT_CACHE);
409                         break;
410                 case Opt_noinline_data:
411                         clear_opt(sbi, INLINE_DATA);
412                         break;
413                 case Opt_data_flush:
414                         set_opt(sbi, DATA_FLUSH);
415                         break;
416                 default:
417                         f2fs_msg(sb, KERN_ERR,
418                                 "Unrecognized mount option \"%s\" or missing value",
419                                 p);
420                         return -EINVAL;
421                 }
422         }
423         return 0;
424 }
425
426 static struct inode *f2fs_alloc_inode(struct super_block *sb)
427 {
428         struct f2fs_inode_info *fi;
429
430         fi = kmem_cache_alloc(f2fs_inode_cachep, GFP_F2FS_ZERO);
431         if (!fi)
432                 return NULL;
433
434         init_once((void *) fi);
435
436         /* Initialize f2fs-specific inode info */
437         fi->vfs_inode.i_version = 1;
438         atomic_set(&fi->dirty_pages, 0);
439         fi->i_current_depth = 1;
440         fi->i_advise = 0;
441         init_rwsem(&fi->i_sem);
442         INIT_LIST_HEAD(&fi->dirty_list);
443         INIT_LIST_HEAD(&fi->inmem_pages);
444         mutex_init(&fi->inmem_lock);
445
446         set_inode_flag(fi, FI_NEW_INODE);
447
448         if (test_opt(F2FS_SB(sb), INLINE_XATTR))
449                 set_inode_flag(fi, FI_INLINE_XATTR);
450
451         /* Will be used by directory only */
452         fi->i_dir_level = F2FS_SB(sb)->dir_level;
453
454 #ifdef CONFIG_F2FS_FS_ENCRYPTION
455         fi->i_crypt_info = NULL;
456 #endif
457         return &fi->vfs_inode;
458 }
459
460 static int f2fs_drop_inode(struct inode *inode)
461 {
462         /*
463          * This is to avoid a deadlock condition like below.
464          * writeback_single_inode(inode)
465          *  - f2fs_write_data_page
466          *    - f2fs_gc -> iput -> evict
467          *       - inode_wait_for_writeback(inode)
468          */
469         if (!inode_unhashed(inode) && inode->i_state & I_SYNC) {
470                 if (!inode->i_nlink && !is_bad_inode(inode)) {
471                         /* to avoid evict_inode call simultaneously */
472                         atomic_inc(&inode->i_count);
473                         spin_unlock(&inode->i_lock);
474
475                         /* some remained atomic pages should discarded */
476                         if (f2fs_is_atomic_file(inode))
477                                 commit_inmem_pages(inode, true);
478
479                         /* should remain fi->extent_tree for writepage */
480                         f2fs_destroy_extent_node(inode);
481
482                         sb_start_intwrite(inode->i_sb);
483                         i_size_write(inode, 0);
484
485                         if (F2FS_HAS_BLOCKS(inode))
486                                 f2fs_truncate(inode, true);
487
488                         sb_end_intwrite(inode->i_sb);
489
490 #ifdef CONFIG_F2FS_FS_ENCRYPTION
491                         if (F2FS_I(inode)->i_crypt_info)
492                                 f2fs_free_encryption_info(inode,
493                                         F2FS_I(inode)->i_crypt_info);
494 #endif
495                         spin_lock(&inode->i_lock);
496                         atomic_dec(&inode->i_count);
497                 }
498                 return 0;
499         }
500         return generic_drop_inode(inode);
501 }
502
503 /*
504  * f2fs_dirty_inode() is called from __mark_inode_dirty()
505  *
506  * We should call set_dirty_inode to write the dirty inode through write_inode.
507  */
508 static void f2fs_dirty_inode(struct inode *inode, int flags)
509 {
510         set_inode_flag(F2FS_I(inode), FI_DIRTY_INODE);
511 }
512
513 static void f2fs_i_callback(struct rcu_head *head)
514 {
515         struct inode *inode = container_of(head, struct inode, i_rcu);
516         kmem_cache_free(f2fs_inode_cachep, F2FS_I(inode));
517 }
518
519 static void f2fs_destroy_inode(struct inode *inode)
520 {
521         call_rcu(&inode->i_rcu, f2fs_i_callback);
522 }
523
524 static void f2fs_put_super(struct super_block *sb)
525 {
526         struct f2fs_sb_info *sbi = F2FS_SB(sb);
527
528         if (sbi->s_proc) {
529                 remove_proc_entry("segment_info", sbi->s_proc);
530                 remove_proc_entry(sb->s_id, f2fs_proc_root);
531         }
532         kobject_del(&sbi->s_kobj);
533
534         stop_gc_thread(sbi);
535
536         /* prevent remaining shrinker jobs */
537         mutex_lock(&sbi->umount_mutex);
538
539         /*
540          * We don't need to do checkpoint when superblock is clean.
541          * But, the previous checkpoint was not done by umount, it needs to do
542          * clean checkpoint again.
543          */
544         if (is_sbi_flag_set(sbi, SBI_IS_DIRTY) ||
545                         !is_set_ckpt_flags(F2FS_CKPT(sbi), CP_UMOUNT_FLAG)) {
546                 struct cp_control cpc = {
547                         .reason = CP_UMOUNT,
548                 };
549                 write_checkpoint(sbi, &cpc);
550         }
551
552         /* write_checkpoint can update stat informaion */
553         f2fs_destroy_stats(sbi);
554
555         /*
556          * normally superblock is clean, so we need to release this.
557          * In addition, EIO will skip do checkpoint, we need this as well.
558          */
559         release_ino_entry(sbi);
560         release_discard_addrs(sbi);
561
562         f2fs_leave_shrinker(sbi);
563         mutex_unlock(&sbi->umount_mutex);
564
565         iput(sbi->node_inode);
566         iput(sbi->meta_inode);
567
568         /* destroy f2fs internal modules */
569         destroy_node_manager(sbi);
570         destroy_segment_manager(sbi);
571
572         kfree(sbi->ckpt);
573         kobject_put(&sbi->s_kobj);
574         wait_for_completion(&sbi->s_kobj_unregister);
575
576         sb->s_fs_info = NULL;
577         kfree(sbi->raw_super);
578         kfree(sbi);
579 }
580
581 int f2fs_sync_fs(struct super_block *sb, int sync)
582 {
583         struct f2fs_sb_info *sbi = F2FS_SB(sb);
584         int err = 0;
585
586         trace_f2fs_sync_fs(sb, sync);
587
588         if (sync) {
589                 struct cp_control cpc;
590
591                 cpc.reason = __get_cp_reason(sbi);
592
593                 mutex_lock(&sbi->gc_mutex);
594                 err = write_checkpoint(sbi, &cpc);
595                 mutex_unlock(&sbi->gc_mutex);
596         }
597         f2fs_trace_ios(NULL, 1);
598
599         return err;
600 }
601
602 static int f2fs_freeze(struct super_block *sb)
603 {
604         int err;
605
606         if (f2fs_readonly(sb))
607                 return 0;
608
609         err = f2fs_sync_fs(sb, 1);
610         return err;
611 }
612
613 static int f2fs_unfreeze(struct super_block *sb)
614 {
615         return 0;
616 }
617
618 static int f2fs_statfs(struct dentry *dentry, struct kstatfs *buf)
619 {
620         struct super_block *sb = dentry->d_sb;
621         struct f2fs_sb_info *sbi = F2FS_SB(sb);
622         u64 id = huge_encode_dev(sb->s_bdev->bd_dev);
623         block_t total_count, user_block_count, start_count, ovp_count;
624
625         total_count = le64_to_cpu(sbi->raw_super->block_count);
626         user_block_count = sbi->user_block_count;
627         start_count = le32_to_cpu(sbi->raw_super->segment0_blkaddr);
628         ovp_count = SM_I(sbi)->ovp_segments << sbi->log_blocks_per_seg;
629         buf->f_type = F2FS_SUPER_MAGIC;
630         buf->f_bsize = sbi->blocksize;
631
632         buf->f_blocks = total_count - start_count;
633         buf->f_bfree = buf->f_blocks - valid_user_blocks(sbi) - ovp_count;
634         buf->f_bavail = user_block_count - valid_user_blocks(sbi);
635
636         buf->f_files = sbi->total_node_count - F2FS_RESERVED_NODE_NUM;
637         buf->f_ffree = buf->f_files - valid_inode_count(sbi);
638
639         buf->f_namelen = F2FS_NAME_LEN;
640         buf->f_fsid.val[0] = (u32)id;
641         buf->f_fsid.val[1] = (u32)(id >> 32);
642
643         return 0;
644 }
645
646 static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
647 {
648         struct f2fs_sb_info *sbi = F2FS_SB(root->d_sb);
649
650         if (!f2fs_readonly(sbi->sb) && test_opt(sbi, BG_GC)) {
651                 if (test_opt(sbi, FORCE_FG_GC))
652                         seq_printf(seq, ",background_gc=%s", "sync");
653                 else
654                         seq_printf(seq, ",background_gc=%s", "on");
655         } else {
656                 seq_printf(seq, ",background_gc=%s", "off");
657         }
658         if (test_opt(sbi, DISABLE_ROLL_FORWARD))
659                 seq_puts(seq, ",disable_roll_forward");
660         if (test_opt(sbi, DISCARD))
661                 seq_puts(seq, ",discard");
662         if (test_opt(sbi, NOHEAP))
663                 seq_puts(seq, ",no_heap_alloc");
664 #ifdef CONFIG_F2FS_FS_XATTR
665         if (test_opt(sbi, XATTR_USER))
666                 seq_puts(seq, ",user_xattr");
667         else
668                 seq_puts(seq, ",nouser_xattr");
669         if (test_opt(sbi, INLINE_XATTR))
670                 seq_puts(seq, ",inline_xattr");
671 #endif
672 #ifdef CONFIG_F2FS_FS_POSIX_ACL
673         if (test_opt(sbi, POSIX_ACL))
674                 seq_puts(seq, ",acl");
675         else
676                 seq_puts(seq, ",noacl");
677 #endif
678         if (test_opt(sbi, DISABLE_EXT_IDENTIFY))
679                 seq_puts(seq, ",disable_ext_identify");
680         if (test_opt(sbi, INLINE_DATA))
681                 seq_puts(seq, ",inline_data");
682         else
683                 seq_puts(seq, ",noinline_data");
684         if (test_opt(sbi, INLINE_DENTRY))
685                 seq_puts(seq, ",inline_dentry");
686         if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE))
687                 seq_puts(seq, ",flush_merge");
688         if (test_opt(sbi, NOBARRIER))
689                 seq_puts(seq, ",nobarrier");
690         if (test_opt(sbi, FASTBOOT))
691                 seq_puts(seq, ",fastboot");
692         if (test_opt(sbi, EXTENT_CACHE))
693                 seq_puts(seq, ",extent_cache");
694         else
695                 seq_puts(seq, ",noextent_cache");
696         if (test_opt(sbi, DATA_FLUSH))
697                 seq_puts(seq, ",data_flush");
698         seq_printf(seq, ",active_logs=%u", sbi->active_logs);
699
700         return 0;
701 }
702
703 static int segment_info_seq_show(struct seq_file *seq, void *offset)
704 {
705         struct super_block *sb = seq->private;
706         struct f2fs_sb_info *sbi = F2FS_SB(sb);
707         unsigned int total_segs =
708                         le32_to_cpu(sbi->raw_super->segment_count_main);
709         int i;
710
711         seq_puts(seq, "format: segment_type|valid_blocks\n"
712                 "segment_type(0:HD, 1:WD, 2:CD, 3:HN, 4:WN, 5:CN)\n");
713
714         for (i = 0; i < total_segs; i++) {
715                 struct seg_entry *se = get_seg_entry(sbi, i);
716
717                 if ((i % 10) == 0)
718                         seq_printf(seq, "%-10d", i);
719                 seq_printf(seq, "%d|%-3u", se->type,
720                                         get_valid_blocks(sbi, i, 1));
721                 if ((i % 10) == 9 || i == (total_segs - 1))
722                         seq_putc(seq, '\n');
723                 else
724                         seq_putc(seq, ' ');
725         }
726
727         return 0;
728 }
729
730 static int segment_info_open_fs(struct inode *inode, struct file *file)
731 {
732         return single_open(file, segment_info_seq_show, PDE_DATA(inode));
733 }
734
735 static const struct file_operations f2fs_seq_segment_info_fops = {
736         .owner = THIS_MODULE,
737         .open = segment_info_open_fs,
738         .read = seq_read,
739         .llseek = seq_lseek,
740         .release = single_release,
741 };
742
743 static void default_options(struct f2fs_sb_info *sbi)
744 {
745         /* init some FS parameters */
746         sbi->active_logs = NR_CURSEG_TYPE;
747
748         set_opt(sbi, BG_GC);
749         set_opt(sbi, INLINE_DATA);
750         set_opt(sbi, EXTENT_CACHE);
751
752 #ifdef CONFIG_F2FS_FS_XATTR
753         set_opt(sbi, XATTR_USER);
754 #endif
755 #ifdef CONFIG_F2FS_FS_POSIX_ACL
756         set_opt(sbi, POSIX_ACL);
757 #endif
758 }
759
760 static int f2fs_remount(struct super_block *sb, int *flags, char *data)
761 {
762         struct f2fs_sb_info *sbi = F2FS_SB(sb);
763         struct f2fs_mount_info org_mount_opt;
764         int err, active_logs;
765         bool need_restart_gc = false;
766         bool need_stop_gc = false;
767         bool no_extent_cache = !test_opt(sbi, EXTENT_CACHE);
768
769         sync_filesystem(sb);
770
771         /*
772          * Save the old mount options in case we
773          * need to restore them.
774          */
775         org_mount_opt = sbi->mount_opt;
776         active_logs = sbi->active_logs;
777
778         sbi->mount_opt.opt = 0;
779         default_options(sbi);
780
781         /* parse mount options */
782         err = parse_options(sb, data);
783         if (err)
784                 goto restore_opts;
785
786         /*
787          * Previous and new state of filesystem is RO,
788          * so skip checking GC and FLUSH_MERGE conditions.
789          */
790         if (f2fs_readonly(sb) && (*flags & MS_RDONLY))
791                 goto skip;
792
793         /* disallow enable/disable extent_cache dynamically */
794         if (no_extent_cache == !!test_opt(sbi, EXTENT_CACHE)) {
795                 err = -EINVAL;
796                 f2fs_msg(sbi->sb, KERN_WARNING,
797                                 "switch extent_cache option is not allowed");
798                 goto restore_opts;
799         }
800
801         /*
802          * We stop the GC thread if FS is mounted as RO
803          * or if background_gc = off is passed in mount
804          * option. Also sync the filesystem.
805          */
806         if ((*flags & MS_RDONLY) || !test_opt(sbi, BG_GC)) {
807                 if (sbi->gc_thread) {
808                         stop_gc_thread(sbi);
809                         f2fs_sync_fs(sb, 1);
810                         need_restart_gc = true;
811                 }
812         } else if (!sbi->gc_thread) {
813                 err = start_gc_thread(sbi);
814                 if (err)
815                         goto restore_opts;
816                 need_stop_gc = true;
817         }
818
819         /*
820          * We stop issue flush thread if FS is mounted as RO
821          * or if flush_merge is not passed in mount option.
822          */
823         if ((*flags & MS_RDONLY) || !test_opt(sbi, FLUSH_MERGE)) {
824                 destroy_flush_cmd_control(sbi);
825         } else if (!SM_I(sbi)->cmd_control_info) {
826                 err = create_flush_cmd_control(sbi);
827                 if (err)
828                         goto restore_gc;
829         }
830 skip:
831         /* Update the POSIXACL Flag */
832          sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
833                 (test_opt(sbi, POSIX_ACL) ? MS_POSIXACL : 0);
834         return 0;
835 restore_gc:
836         if (need_restart_gc) {
837                 if (start_gc_thread(sbi))
838                         f2fs_msg(sbi->sb, KERN_WARNING,
839                                 "background gc thread has stopped");
840         } else if (need_stop_gc) {
841                 stop_gc_thread(sbi);
842         }
843 restore_opts:
844         sbi->mount_opt = org_mount_opt;
845         sbi->active_logs = active_logs;
846         return err;
847 }
848
849 static struct super_operations f2fs_sops = {
850         .alloc_inode    = f2fs_alloc_inode,
851         .drop_inode     = f2fs_drop_inode,
852         .destroy_inode  = f2fs_destroy_inode,
853         .write_inode    = f2fs_write_inode,
854         .dirty_inode    = f2fs_dirty_inode,
855         .show_options   = f2fs_show_options,
856         .evict_inode    = f2fs_evict_inode,
857         .put_super      = f2fs_put_super,
858         .sync_fs        = f2fs_sync_fs,
859         .freeze_fs      = f2fs_freeze,
860         .unfreeze_fs    = f2fs_unfreeze,
861         .statfs         = f2fs_statfs,
862         .remount_fs     = f2fs_remount,
863 };
864
865 static struct inode *f2fs_nfs_get_inode(struct super_block *sb,
866                 u64 ino, u32 generation)
867 {
868         struct f2fs_sb_info *sbi = F2FS_SB(sb);
869         struct inode *inode;
870
871         if (check_nid_range(sbi, ino))
872                 return ERR_PTR(-ESTALE);
873
874         /*
875          * f2fs_iget isn't quite right if the inode is currently unallocated!
876          * However f2fs_iget currently does appropriate checks to handle stale
877          * inodes so everything is OK.
878          */
879         inode = f2fs_iget(sb, ino);
880         if (IS_ERR(inode))
881                 return ERR_CAST(inode);
882         if (unlikely(generation && inode->i_generation != generation)) {
883                 /* we didn't find the right inode.. */
884                 iput(inode);
885                 return ERR_PTR(-ESTALE);
886         }
887         return inode;
888 }
889
890 static struct dentry *f2fs_fh_to_dentry(struct super_block *sb, struct fid *fid,
891                 int fh_len, int fh_type)
892 {
893         return generic_fh_to_dentry(sb, fid, fh_len, fh_type,
894                                     f2fs_nfs_get_inode);
895 }
896
897 static struct dentry *f2fs_fh_to_parent(struct super_block *sb, struct fid *fid,
898                 int fh_len, int fh_type)
899 {
900         return generic_fh_to_parent(sb, fid, fh_len, fh_type,
901                                     f2fs_nfs_get_inode);
902 }
903
904 static const struct export_operations f2fs_export_ops = {
905         .fh_to_dentry = f2fs_fh_to_dentry,
906         .fh_to_parent = f2fs_fh_to_parent,
907         .get_parent = f2fs_get_parent,
908 };
909
910 static loff_t max_file_blocks(void)
911 {
912         loff_t result = (DEF_ADDRS_PER_INODE - F2FS_INLINE_XATTR_ADDRS);
913         loff_t leaf_count = ADDRS_PER_BLOCK;
914
915         /* two direct node blocks */
916         result += (leaf_count * 2);
917
918         /* two indirect node blocks */
919         leaf_count *= NIDS_PER_BLOCK;
920         result += (leaf_count * 2);
921
922         /* one double indirect node block */
923         leaf_count *= NIDS_PER_BLOCK;
924         result += leaf_count;
925
926         return result;
927 }
928
929 static inline bool sanity_check_area_boundary(struct super_block *sb,
930                                         struct f2fs_super_block *raw_super)
931 {
932         u32 segment0_blkaddr = le32_to_cpu(raw_super->segment0_blkaddr);
933         u32 cp_blkaddr = le32_to_cpu(raw_super->cp_blkaddr);
934         u32 sit_blkaddr = le32_to_cpu(raw_super->sit_blkaddr);
935         u32 nat_blkaddr = le32_to_cpu(raw_super->nat_blkaddr);
936         u32 ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr);
937         u32 main_blkaddr = le32_to_cpu(raw_super->main_blkaddr);
938         u32 segment_count_ckpt = le32_to_cpu(raw_super->segment_count_ckpt);
939         u32 segment_count_sit = le32_to_cpu(raw_super->segment_count_sit);
940         u32 segment_count_nat = le32_to_cpu(raw_super->segment_count_nat);
941         u32 segment_count_ssa = le32_to_cpu(raw_super->segment_count_ssa);
942         u32 segment_count_main = le32_to_cpu(raw_super->segment_count_main);
943         u32 segment_count = le32_to_cpu(raw_super->segment_count);
944         u32 log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg);
945
946         if (segment0_blkaddr != cp_blkaddr) {
947                 f2fs_msg(sb, KERN_INFO,
948                         "Mismatch start address, segment0(%u) cp_blkaddr(%u)",
949                         segment0_blkaddr, cp_blkaddr);
950                 return true;
951         }
952
953         if (cp_blkaddr + (segment_count_ckpt << log_blocks_per_seg) !=
954                                                         sit_blkaddr) {
955                 f2fs_msg(sb, KERN_INFO,
956                         "Wrong CP boundary, start(%u) end(%u) blocks(%u)",
957                         cp_blkaddr, sit_blkaddr,
958                         segment_count_ckpt << log_blocks_per_seg);
959                 return true;
960         }
961
962         if (sit_blkaddr + (segment_count_sit << log_blocks_per_seg) !=
963                                                         nat_blkaddr) {
964                 f2fs_msg(sb, KERN_INFO,
965                         "Wrong SIT boundary, start(%u) end(%u) blocks(%u)",
966                         sit_blkaddr, nat_blkaddr,
967                         segment_count_sit << log_blocks_per_seg);
968                 return true;
969         }
970
971         if (nat_blkaddr + (segment_count_nat << log_blocks_per_seg) !=
972                                                         ssa_blkaddr) {
973                 f2fs_msg(sb, KERN_INFO,
974                         "Wrong NAT boundary, start(%u) end(%u) blocks(%u)",
975                         nat_blkaddr, ssa_blkaddr,
976                         segment_count_nat << log_blocks_per_seg);
977                 return true;
978         }
979
980         if (ssa_blkaddr + (segment_count_ssa << log_blocks_per_seg) !=
981                                                         main_blkaddr) {
982                 f2fs_msg(sb, KERN_INFO,
983                         "Wrong SSA boundary, start(%u) end(%u) blocks(%u)",
984                         ssa_blkaddr, main_blkaddr,
985                         segment_count_ssa << log_blocks_per_seg);
986                 return true;
987         }
988
989         if (main_blkaddr + (segment_count_main << log_blocks_per_seg) !=
990                 segment0_blkaddr + (segment_count << log_blocks_per_seg)) {
991                 f2fs_msg(sb, KERN_INFO,
992                         "Wrong MAIN_AREA boundary, start(%u) end(%u) blocks(%u)",
993                         main_blkaddr,
994                         segment0_blkaddr + (segment_count << log_blocks_per_seg),
995                         segment_count_main << log_blocks_per_seg);
996                 return true;
997         }
998
999         return false;
1000 }
1001
1002 static int sanity_check_raw_super(struct super_block *sb,
1003                         struct f2fs_super_block *raw_super)
1004 {
1005         unsigned int blocksize;
1006
1007         if (F2FS_SUPER_MAGIC != le32_to_cpu(raw_super->magic)) {
1008                 f2fs_msg(sb, KERN_INFO,
1009                         "Magic Mismatch, valid(0x%x) - read(0x%x)",
1010                         F2FS_SUPER_MAGIC, le32_to_cpu(raw_super->magic));
1011                 return 1;
1012         }
1013
1014         /* Currently, support only 4KB page cache size */
1015         if (F2FS_BLKSIZE != PAGE_CACHE_SIZE) {
1016                 f2fs_msg(sb, KERN_INFO,
1017                         "Invalid page_cache_size (%lu), supports only 4KB\n",
1018                         PAGE_CACHE_SIZE);
1019                 return 1;
1020         }
1021
1022         /* Currently, support only 4KB block size */
1023         blocksize = 1 << le32_to_cpu(raw_super->log_blocksize);
1024         if (blocksize != F2FS_BLKSIZE) {
1025                 f2fs_msg(sb, KERN_INFO,
1026                         "Invalid blocksize (%u), supports only 4KB\n",
1027                         blocksize);
1028                 return 1;
1029         }
1030
1031         /* check log blocks per segment */
1032         if (le32_to_cpu(raw_super->log_blocks_per_seg) != 9) {
1033                 f2fs_msg(sb, KERN_INFO,
1034                         "Invalid log blocks per segment (%u)\n",
1035                         le32_to_cpu(raw_super->log_blocks_per_seg));
1036                 return 1;
1037         }
1038
1039         /* Currently, support 512/1024/2048/4096 bytes sector size */
1040         if (le32_to_cpu(raw_super->log_sectorsize) >
1041                                 F2FS_MAX_LOG_SECTOR_SIZE ||
1042                 le32_to_cpu(raw_super->log_sectorsize) <
1043                                 F2FS_MIN_LOG_SECTOR_SIZE) {
1044                 f2fs_msg(sb, KERN_INFO, "Invalid log sectorsize (%u)",
1045                         le32_to_cpu(raw_super->log_sectorsize));
1046                 return 1;
1047         }
1048         if (le32_to_cpu(raw_super->log_sectors_per_block) +
1049                 le32_to_cpu(raw_super->log_sectorsize) !=
1050                         F2FS_MAX_LOG_SECTOR_SIZE) {
1051                 f2fs_msg(sb, KERN_INFO,
1052                         "Invalid log sectors per block(%u) log sectorsize(%u)",
1053                         le32_to_cpu(raw_super->log_sectors_per_block),
1054                         le32_to_cpu(raw_super->log_sectorsize));
1055                 return 1;
1056         }
1057
1058         /* check reserved ino info */
1059         if (le32_to_cpu(raw_super->node_ino) != 1 ||
1060                 le32_to_cpu(raw_super->meta_ino) != 2 ||
1061                 le32_to_cpu(raw_super->root_ino) != 3) {
1062                 f2fs_msg(sb, KERN_INFO,
1063                         "Invalid Fs Meta Ino: node(%u) meta(%u) root(%u)",
1064                         le32_to_cpu(raw_super->node_ino),
1065                         le32_to_cpu(raw_super->meta_ino),
1066                         le32_to_cpu(raw_super->root_ino));
1067                 return 1;
1068         }
1069
1070         /* check CP/SIT/NAT/SSA/MAIN_AREA area boundary */
1071         if (sanity_check_area_boundary(sb, raw_super))
1072                 return 1;
1073
1074         return 0;
1075 }
1076
1077 static int sanity_check_ckpt(struct f2fs_sb_info *sbi)
1078 {
1079         unsigned int total, fsmeta;
1080         struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi);
1081         struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
1082
1083         total = le32_to_cpu(raw_super->segment_count);
1084         fsmeta = le32_to_cpu(raw_super->segment_count_ckpt);
1085         fsmeta += le32_to_cpu(raw_super->segment_count_sit);
1086         fsmeta += le32_to_cpu(raw_super->segment_count_nat);
1087         fsmeta += le32_to_cpu(ckpt->rsvd_segment_count);
1088         fsmeta += le32_to_cpu(raw_super->segment_count_ssa);
1089
1090         if (unlikely(fsmeta >= total))
1091                 return 1;
1092
1093         if (unlikely(f2fs_cp_error(sbi))) {
1094                 f2fs_msg(sbi->sb, KERN_ERR, "A bug case: need to run fsck");
1095                 return 1;
1096         }
1097         return 0;
1098 }
1099
1100 static void init_sb_info(struct f2fs_sb_info *sbi)
1101 {
1102         struct f2fs_super_block *raw_super = sbi->raw_super;
1103         int i;
1104
1105         sbi->log_sectors_per_block =
1106                 le32_to_cpu(raw_super->log_sectors_per_block);
1107         sbi->log_blocksize = le32_to_cpu(raw_super->log_blocksize);
1108         sbi->blocksize = 1 << sbi->log_blocksize;
1109         sbi->log_blocks_per_seg = le32_to_cpu(raw_super->log_blocks_per_seg);
1110         sbi->blocks_per_seg = 1 << sbi->log_blocks_per_seg;
1111         sbi->segs_per_sec = le32_to_cpu(raw_super->segs_per_sec);
1112         sbi->secs_per_zone = le32_to_cpu(raw_super->secs_per_zone);
1113         sbi->total_sections = le32_to_cpu(raw_super->section_count);
1114         sbi->total_node_count =
1115                 (le32_to_cpu(raw_super->segment_count_nat) / 2)
1116                         * sbi->blocks_per_seg * NAT_ENTRY_PER_BLOCK;
1117         sbi->root_ino_num = le32_to_cpu(raw_super->root_ino);
1118         sbi->node_ino_num = le32_to_cpu(raw_super->node_ino);
1119         sbi->meta_ino_num = le32_to_cpu(raw_super->meta_ino);
1120         sbi->cur_victim_sec = NULL_SECNO;
1121         sbi->max_victim_search = DEF_MAX_VICTIM_SEARCH;
1122
1123         for (i = 0; i < NR_COUNT_TYPE; i++)
1124                 atomic_set(&sbi->nr_pages[i], 0);
1125
1126         sbi->dir_level = DEF_DIR_LEVEL;
1127         sbi->interval_time[CP_TIME] = DEF_CP_INTERVAL;
1128         sbi->interval_time[REQ_TIME] = DEF_IDLE_INTERVAL;
1129         clear_sbi_flag(sbi, SBI_NEED_FSCK);
1130
1131         INIT_LIST_HEAD(&sbi->s_list);
1132         mutex_init(&sbi->umount_mutex);
1133 }
1134
1135 /*
1136  * Read f2fs raw super block.
1137  * Because we have two copies of super block, so read the first one at first,
1138  * if the first one is invalid, move to read the second one.
1139  */
1140 static int read_raw_super_block(struct super_block *sb,
1141                         struct f2fs_super_block **raw_super,
1142                         int *valid_super_block, int *recovery)
1143 {
1144         int block = 0;
1145         struct buffer_head *bh;
1146         struct f2fs_super_block *super, *buf;
1147         int err = 0;
1148
1149         super = kzalloc(sizeof(struct f2fs_super_block), GFP_KERNEL);
1150         if (!super)
1151                 return -ENOMEM;
1152 retry:
1153         bh = sb_bread(sb, block);
1154         if (!bh) {
1155                 *recovery = 1;
1156                 f2fs_msg(sb, KERN_ERR, "Unable to read %dth superblock",
1157                                 block + 1);
1158                 err = -EIO;
1159                 goto next;
1160         }
1161
1162         buf = (struct f2fs_super_block *)(bh->b_data + F2FS_SUPER_OFFSET);
1163
1164         /* sanity checking of raw super */
1165         if (sanity_check_raw_super(sb, buf)) {
1166                 brelse(bh);
1167                 *recovery = 1;
1168                 f2fs_msg(sb, KERN_ERR,
1169                         "Can't find valid F2FS filesystem in %dth superblock",
1170                                                                 block + 1);
1171                 err = -EINVAL;
1172                 goto next;
1173         }
1174
1175         if (!*raw_super) {
1176                 memcpy(super, buf, sizeof(*super));
1177                 *valid_super_block = block;
1178                 *raw_super = super;
1179         }
1180         brelse(bh);
1181
1182 next:
1183         /* check the validity of the second superblock */
1184         if (block == 0) {
1185                 block++;
1186                 goto retry;
1187         }
1188
1189         /* No valid superblock */
1190         if (!*raw_super) {
1191                 kfree(super);
1192                 return err;
1193         }
1194
1195         return 0;
1196 }
1197
1198 static int __f2fs_commit_super(struct f2fs_sb_info *sbi, int block)
1199 {
1200         struct f2fs_super_block *super = F2FS_RAW_SUPER(sbi);
1201         struct buffer_head *bh;
1202         int err;
1203
1204         bh = sb_getblk(sbi->sb, block);
1205         if (!bh)
1206                 return -EIO;
1207
1208         lock_buffer(bh);
1209         memcpy(bh->b_data + F2FS_SUPER_OFFSET, super, sizeof(*super));
1210         set_buffer_uptodate(bh);
1211         set_buffer_dirty(bh);
1212         unlock_buffer(bh);
1213
1214         /* it's rare case, we can do fua all the time */
1215         err = __sync_dirty_buffer(bh, WRITE_FLUSH_FUA);
1216         brelse(bh);
1217
1218         return err;
1219 }
1220
1221 int f2fs_commit_super(struct f2fs_sb_info *sbi, bool recover)
1222 {
1223         int err;
1224
1225         /* write back-up superblock first */
1226         err = __f2fs_commit_super(sbi, sbi->valid_super_block ? 0 : 1);
1227
1228         /* if we are in recovery path, skip writing valid superblock */
1229         if (recover || err)
1230                 return err;
1231
1232         /* write current valid superblock */
1233         return __f2fs_commit_super(sbi, sbi->valid_super_block);
1234 }
1235
1236 static int f2fs_fill_super(struct super_block *sb, void *data, int silent)
1237 {
1238         struct f2fs_sb_info *sbi;
1239         struct f2fs_super_block *raw_super;
1240         struct inode *root;
1241         long err;
1242         bool retry = true, need_fsck = false;
1243         char *options = NULL;
1244         int recovery, i, valid_super_block;
1245
1246 try_onemore:
1247         err = -EINVAL;
1248         raw_super = NULL;
1249         valid_super_block = -1;
1250         recovery = 0;
1251
1252         /* allocate memory for f2fs-specific super block info */
1253         sbi = kzalloc(sizeof(struct f2fs_sb_info), GFP_KERNEL);
1254         if (!sbi)
1255                 return -ENOMEM;
1256
1257         /* set a block size */
1258         if (unlikely(!sb_set_blocksize(sb, F2FS_BLKSIZE))) {
1259                 f2fs_msg(sb, KERN_ERR, "unable to set blocksize");
1260                 goto free_sbi;
1261         }
1262
1263         err = read_raw_super_block(sb, &raw_super, &valid_super_block,
1264                                                                 &recovery);
1265         if (err)
1266                 goto free_sbi;
1267
1268         sb->s_fs_info = sbi;
1269         default_options(sbi);
1270         /* parse mount options */
1271         options = kstrdup((const char *)data, GFP_KERNEL);
1272         if (data && !options) {
1273                 err = -ENOMEM;
1274                 goto free_sb_buf;
1275         }
1276
1277         err = parse_options(sb, options);
1278         if (err)
1279                 goto free_options;
1280
1281         sbi->max_file_blocks = max_file_blocks();
1282         sb->s_maxbytes = sbi->max_file_blocks <<
1283                                 le32_to_cpu(raw_super->log_blocksize);
1284         sb->s_max_links = F2FS_LINK_MAX;
1285         get_random_bytes(&sbi->s_next_generation, sizeof(u32));
1286
1287         sb->s_op = &f2fs_sops;
1288         sb->s_xattr = f2fs_xattr_handlers;
1289         sb->s_export_op = &f2fs_export_ops;
1290         sb->s_magic = F2FS_SUPER_MAGIC;
1291         sb->s_time_gran = 1;
1292         sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
1293                 (test_opt(sbi, POSIX_ACL) ? MS_POSIXACL : 0);
1294         memcpy(sb->s_uuid, raw_super->uuid, sizeof(raw_super->uuid));
1295
1296         /* init f2fs-specific super block info */
1297         sbi->sb = sb;
1298         sbi->raw_super = raw_super;
1299         sbi->valid_super_block = valid_super_block;
1300         mutex_init(&sbi->gc_mutex);
1301         mutex_init(&sbi->writepages);
1302         mutex_init(&sbi->cp_mutex);
1303         init_rwsem(&sbi->node_write);
1304
1305         /* disallow all the data/node/meta page writes */
1306         set_sbi_flag(sbi, SBI_POR_DOING);
1307         spin_lock_init(&sbi->stat_lock);
1308
1309         init_rwsem(&sbi->read_io.io_rwsem);
1310         sbi->read_io.sbi = sbi;
1311         sbi->read_io.bio = NULL;
1312         for (i = 0; i < NR_PAGE_TYPE; i++) {
1313                 init_rwsem(&sbi->write_io[i].io_rwsem);
1314                 sbi->write_io[i].sbi = sbi;
1315                 sbi->write_io[i].bio = NULL;
1316         }
1317
1318         init_rwsem(&sbi->cp_rwsem);
1319         init_waitqueue_head(&sbi->cp_wait);
1320         init_sb_info(sbi);
1321
1322         /* get an inode for meta space */
1323         sbi->meta_inode = f2fs_iget(sb, F2FS_META_INO(sbi));
1324         if (IS_ERR(sbi->meta_inode)) {
1325                 f2fs_msg(sb, KERN_ERR, "Failed to read F2FS meta data inode");
1326                 err = PTR_ERR(sbi->meta_inode);
1327                 goto free_options;
1328         }
1329
1330         err = get_valid_checkpoint(sbi);
1331         if (err) {
1332                 f2fs_msg(sb, KERN_ERR, "Failed to get valid F2FS checkpoint");
1333                 goto free_meta_inode;
1334         }
1335
1336         /* sanity checking of checkpoint */
1337         err = -EINVAL;
1338         if (sanity_check_ckpt(sbi)) {
1339                 f2fs_msg(sb, KERN_ERR, "Invalid F2FS checkpoint");
1340                 goto free_cp;
1341         }
1342
1343         sbi->total_valid_node_count =
1344                                 le32_to_cpu(sbi->ckpt->valid_node_count);
1345         sbi->total_valid_inode_count =
1346                                 le32_to_cpu(sbi->ckpt->valid_inode_count);
1347         sbi->user_block_count = le64_to_cpu(sbi->ckpt->user_block_count);
1348         sbi->total_valid_block_count =
1349                                 le64_to_cpu(sbi->ckpt->valid_block_count);
1350         sbi->last_valid_block_count = sbi->total_valid_block_count;
1351         sbi->alloc_valid_block_count = 0;
1352         for (i = 0; i < NR_INODE_TYPE; i++) {
1353                 INIT_LIST_HEAD(&sbi->inode_list[i]);
1354                 spin_lock_init(&sbi->inode_lock[i]);
1355         }
1356
1357         init_extent_cache_info(sbi);
1358
1359         init_ino_entry_info(sbi);
1360
1361         /* setup f2fs internal modules */
1362         err = build_segment_manager(sbi);
1363         if (err) {
1364                 f2fs_msg(sb, KERN_ERR,
1365                         "Failed to initialize F2FS segment manager");
1366                 goto free_sm;
1367         }
1368         err = build_node_manager(sbi);
1369         if (err) {
1370                 f2fs_msg(sb, KERN_ERR,
1371                         "Failed to initialize F2FS node manager");
1372                 goto free_nm;
1373         }
1374
1375         build_gc_manager(sbi);
1376
1377         /* get an inode for node space */
1378         sbi->node_inode = f2fs_iget(sb, F2FS_NODE_INO(sbi));
1379         if (IS_ERR(sbi->node_inode)) {
1380                 f2fs_msg(sb, KERN_ERR, "Failed to read node inode");
1381                 err = PTR_ERR(sbi->node_inode);
1382                 goto free_nm;
1383         }
1384
1385         f2fs_join_shrinker(sbi);
1386
1387         /* if there are nt orphan nodes free them */
1388         err = recover_orphan_inodes(sbi);
1389         if (err)
1390                 goto free_node_inode;
1391
1392         /* read root inode and dentry */
1393         root = f2fs_iget(sb, F2FS_ROOT_INO(sbi));
1394         if (IS_ERR(root)) {
1395                 f2fs_msg(sb, KERN_ERR, "Failed to read root inode");
1396                 err = PTR_ERR(root);
1397                 goto free_node_inode;
1398         }
1399         if (!S_ISDIR(root->i_mode) || !root->i_blocks || !root->i_size) {
1400                 iput(root);
1401                 err = -EINVAL;
1402                 goto free_node_inode;
1403         }
1404
1405         sb->s_root = d_make_root(root); /* allocate root dentry */
1406         if (!sb->s_root) {
1407                 err = -ENOMEM;
1408                 goto free_root_inode;
1409         }
1410
1411         err = f2fs_build_stats(sbi);
1412         if (err)
1413                 goto free_root_inode;
1414
1415         if (f2fs_proc_root)
1416                 sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root);
1417
1418         if (sbi->s_proc)
1419                 proc_create_data("segment_info", S_IRUGO, sbi->s_proc,
1420                                  &f2fs_seq_segment_info_fops, sb);
1421
1422         sbi->s_kobj.kset = f2fs_kset;
1423         init_completion(&sbi->s_kobj_unregister);
1424         err = kobject_init_and_add(&sbi->s_kobj, &f2fs_ktype, NULL,
1425                                                         "%s", sb->s_id);
1426         if (err)
1427                 goto free_proc;
1428
1429         /* recover fsynced data */
1430         if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) {
1431                 /*
1432                  * mount should be failed, when device has readonly mode, and
1433                  * previous checkpoint was not done by clean system shutdown.
1434                  */
1435                 if (bdev_read_only(sb->s_bdev) &&
1436                                 !is_set_ckpt_flags(sbi->ckpt, CP_UMOUNT_FLAG)) {
1437                         err = -EROFS;
1438                         goto free_kobj;
1439                 }
1440
1441                 if (need_fsck)
1442                         set_sbi_flag(sbi, SBI_NEED_FSCK);
1443
1444                 err = recover_fsync_data(sbi);
1445                 if (err) {
1446                         need_fsck = true;
1447                         f2fs_msg(sb, KERN_ERR,
1448                                 "Cannot recover all fsync data errno=%ld", err);
1449                         goto free_kobj;
1450                 }
1451         }
1452         /* recover_fsync_data() cleared this already */
1453         clear_sbi_flag(sbi, SBI_POR_DOING);
1454
1455         /*
1456          * If filesystem is not mounted as read-only then
1457          * do start the gc_thread.
1458          */
1459         if (test_opt(sbi, BG_GC) && !f2fs_readonly(sb)) {
1460                 /* After POR, we can run background GC thread.*/
1461                 err = start_gc_thread(sbi);
1462                 if (err)
1463                         goto free_kobj;
1464         }
1465         kfree(options);
1466
1467         /* recover broken superblock */
1468         if (recovery && !f2fs_readonly(sb) && !bdev_read_only(sb->s_bdev)) {
1469                 f2fs_msg(sb, KERN_INFO, "Recover invalid superblock");
1470                 f2fs_commit_super(sbi, true);
1471         }
1472
1473         f2fs_update_time(sbi, CP_TIME);
1474         f2fs_update_time(sbi, REQ_TIME);
1475         return 0;
1476
1477 free_kobj:
1478         kobject_del(&sbi->s_kobj);
1479         kobject_put(&sbi->s_kobj);
1480         wait_for_completion(&sbi->s_kobj_unregister);
1481 free_proc:
1482         if (sbi->s_proc) {
1483                 remove_proc_entry("segment_info", sbi->s_proc);
1484                 remove_proc_entry(sb->s_id, f2fs_proc_root);
1485         }
1486         f2fs_destroy_stats(sbi);
1487 free_root_inode:
1488         dput(sb->s_root);
1489         sb->s_root = NULL;
1490 free_node_inode:
1491         mutex_lock(&sbi->umount_mutex);
1492         f2fs_leave_shrinker(sbi);
1493         iput(sbi->node_inode);
1494         mutex_unlock(&sbi->umount_mutex);
1495 free_nm:
1496         destroy_node_manager(sbi);
1497 free_sm:
1498         destroy_segment_manager(sbi);
1499 free_cp:
1500         kfree(sbi->ckpt);
1501 free_meta_inode:
1502         make_bad_inode(sbi->meta_inode);
1503         iput(sbi->meta_inode);
1504 free_options:
1505         kfree(options);
1506 free_sb_buf:
1507         kfree(raw_super);
1508 free_sbi:
1509         kfree(sbi);
1510
1511         /* give only one another chance */
1512         if (retry) {
1513                 retry = false;
1514                 shrink_dcache_sb(sb);
1515                 goto try_onemore;
1516         }
1517         return err;
1518 }
1519
1520 static struct dentry *f2fs_mount(struct file_system_type *fs_type, int flags,
1521                         const char *dev_name, void *data)
1522 {
1523         return mount_bdev(fs_type, flags, dev_name, data, f2fs_fill_super);
1524 }
1525
1526 static void kill_f2fs_super(struct super_block *sb)
1527 {
1528         if (sb->s_root)
1529                 set_sbi_flag(F2FS_SB(sb), SBI_IS_CLOSE);
1530         kill_block_super(sb);
1531 }
1532
1533 static struct file_system_type f2fs_fs_type = {
1534         .owner          = THIS_MODULE,
1535         .name           = "f2fs",
1536         .mount          = f2fs_mount,
1537         .kill_sb        = kill_f2fs_super,
1538         .fs_flags       = FS_REQUIRES_DEV,
1539 };
1540 MODULE_ALIAS_FS("f2fs");
1541
1542 static int __init init_inodecache(void)
1543 {
1544         f2fs_inode_cachep = kmem_cache_create("f2fs_inode_cache",
1545                         sizeof(struct f2fs_inode_info), 0,
1546                         SLAB_RECLAIM_ACCOUNT|SLAB_ACCOUNT, NULL);
1547         if (!f2fs_inode_cachep)
1548                 return -ENOMEM;
1549         return 0;
1550 }
1551
1552 static void destroy_inodecache(void)
1553 {
1554         /*
1555          * Make sure all delayed rcu free inodes are flushed before we
1556          * destroy cache.
1557          */
1558         rcu_barrier();
1559         kmem_cache_destroy(f2fs_inode_cachep);
1560 }
1561
1562 static int __init init_f2fs_fs(void)
1563 {
1564         int err;
1565
1566         f2fs_build_trace_ios();
1567
1568         err = init_inodecache();
1569         if (err)
1570                 goto fail;
1571         err = create_node_manager_caches();
1572         if (err)
1573                 goto free_inodecache;
1574         err = create_segment_manager_caches();
1575         if (err)
1576                 goto free_node_manager_caches;
1577         err = create_checkpoint_caches();
1578         if (err)
1579                 goto free_segment_manager_caches;
1580         err = create_extent_cache();
1581         if (err)
1582                 goto free_checkpoint_caches;
1583         f2fs_kset = kset_create_and_add("f2fs", NULL, fs_kobj);
1584         if (!f2fs_kset) {
1585                 err = -ENOMEM;
1586                 goto free_extent_cache;
1587         }
1588         err = f2fs_init_crypto();
1589         if (err)
1590                 goto free_kset;
1591
1592         err = register_shrinker(&f2fs_shrinker_info);
1593         if (err)
1594                 goto free_crypto;
1595
1596         err = register_filesystem(&f2fs_fs_type);
1597         if (err)
1598                 goto free_shrinker;
1599         err = f2fs_create_root_stats();
1600         if (err)
1601                 goto free_filesystem;
1602         f2fs_proc_root = proc_mkdir("fs/f2fs", NULL);
1603         return 0;
1604
1605 free_filesystem:
1606         unregister_filesystem(&f2fs_fs_type);
1607 free_shrinker:
1608         unregister_shrinker(&f2fs_shrinker_info);
1609 free_crypto:
1610         f2fs_exit_crypto();
1611 free_kset:
1612         kset_unregister(f2fs_kset);
1613 free_extent_cache:
1614         destroy_extent_cache();
1615 free_checkpoint_caches:
1616         destroy_checkpoint_caches();
1617 free_segment_manager_caches:
1618         destroy_segment_manager_caches();
1619 free_node_manager_caches:
1620         destroy_node_manager_caches();
1621 free_inodecache:
1622         destroy_inodecache();
1623 fail:
1624         return err;
1625 }
1626
1627 static void __exit exit_f2fs_fs(void)
1628 {
1629         remove_proc_entry("fs/f2fs", NULL);
1630         f2fs_destroy_root_stats();
1631         unregister_shrinker(&f2fs_shrinker_info);
1632         unregister_filesystem(&f2fs_fs_type);
1633         f2fs_exit_crypto();
1634         destroy_extent_cache();
1635         destroy_checkpoint_caches();
1636         destroy_segment_manager_caches();
1637         destroy_node_manager_caches();
1638         destroy_inodecache();
1639         kset_unregister(f2fs_kset);
1640         f2fs_destroy_trace_ios();
1641 }
1642
1643 module_init(init_f2fs_fs)
1644 module_exit(exit_f2fs_fs)
1645
1646 MODULE_AUTHOR("Samsung Electronics's Praesto Team");
1647 MODULE_DESCRIPTION("Flash Friendly File System");
1648 MODULE_LICENSE("GPL");