76eecd13db1939d03f13106e33e66a27549e25fa
[platform/adaptation/renesas_rcar/renesas_kernel.git] / fs / btrfs / super.c
1 /*
2  * Copyright (C) 2007 Oracle.  All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public
6  * License v2 as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public
14  * License along with this program; if not, write to the
15  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16  * Boston, MA 021110-1307, USA.
17  */
18
19 #include <linux/blkdev.h>
20 #include <linux/module.h>
21 #include <linux/buffer_head.h>
22 #include <linux/fs.h>
23 #include <linux/pagemap.h>
24 #include <linux/highmem.h>
25 #include <linux/time.h>
26 #include <linux/init.h>
27 #include <linux/seq_file.h>
28 #include <linux/string.h>
29 #include <linux/backing-dev.h>
30 #include <linux/mount.h>
31 #include <linux/mpage.h>
32 #include <linux/swap.h>
33 #include <linux/writeback.h>
34 #include <linux/statfs.h>
35 #include <linux/compat.h>
36 #include <linux/parser.h>
37 #include <linux/ctype.h>
38 #include <linux/namei.h>
39 #include <linux/miscdevice.h>
40 #include <linux/magic.h>
41 #include <linux/slab.h>
42 #include <linux/cleancache.h>
43 #include <linux/ratelimit.h>
44 #include <linux/btrfs.h>
45 #include "delayed-inode.h"
46 #include "ctree.h"
47 #include "disk-io.h"
48 #include "transaction.h"
49 #include "btrfs_inode.h"
50 #include "print-tree.h"
51 #include "xattr.h"
52 #include "volumes.h"
53 #include "export.h"
54 #include "compression.h"
55 #include "rcu-string.h"
56 #include "dev-replace.h"
57 #include "free-space-cache.h"
58 #include "backref.h"
59 #include "tests/btrfs-tests.h"
60
61 #define CREATE_TRACE_POINTS
62 #include <trace/events/btrfs.h>
63
64 static const struct super_operations btrfs_super_ops;
65 static struct file_system_type btrfs_fs_type;
66
67 static const char *btrfs_decode_error(int errno)
68 {
69         char *errstr = "unknown";
70
71         switch (errno) {
72         case -EIO:
73                 errstr = "IO failure";
74                 break;
75         case -ENOMEM:
76                 errstr = "Out of memory";
77                 break;
78         case -EROFS:
79                 errstr = "Readonly filesystem";
80                 break;
81         case -EEXIST:
82                 errstr = "Object already exists";
83                 break;
84         case -ENOSPC:
85                 errstr = "No space left";
86                 break;
87         case -ENOENT:
88                 errstr = "No such entry";
89                 break;
90         }
91
92         return errstr;
93 }
94
95 static void save_error_info(struct btrfs_fs_info *fs_info)
96 {
97         /*
98          * today we only save the error info into ram.  Long term we'll
99          * also send it down to the disk
100          */
101         set_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state);
102 }
103
104 /* btrfs handle error by forcing the filesystem readonly */
105 static void btrfs_handle_error(struct btrfs_fs_info *fs_info)
106 {
107         struct super_block *sb = fs_info->sb;
108
109         if (sb->s_flags & MS_RDONLY)
110                 return;
111
112         if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) {
113                 sb->s_flags |= MS_RDONLY;
114                 btrfs_info(fs_info, "forced readonly");
115                 /*
116                  * Note that a running device replace operation is not
117                  * canceled here although there is no way to update
118                  * the progress. It would add the risk of a deadlock,
119                  * therefore the canceling is ommited. The only penalty
120                  * is that some I/O remains active until the procedure
121                  * completes. The next time when the filesystem is
122                  * mounted writeable again, the device replace
123                  * operation continues.
124                  */
125         }
126 }
127
128 #ifdef CONFIG_PRINTK
129 /*
130  * __btrfs_std_error decodes expected errors from the caller and
131  * invokes the approciate error response.
132  */
133 void __btrfs_std_error(struct btrfs_fs_info *fs_info, const char *function,
134                        unsigned int line, int errno, const char *fmt, ...)
135 {
136         struct super_block *sb = fs_info->sb;
137         const char *errstr;
138
139         /*
140          * Special case: if the error is EROFS, and we're already
141          * under MS_RDONLY, then it is safe here.
142          */
143         if (errno == -EROFS && (sb->s_flags & MS_RDONLY))
144                 return;
145
146         errstr = btrfs_decode_error(errno);
147         if (fmt) {
148                 struct va_format vaf;
149                 va_list args;
150
151                 va_start(args, fmt);
152                 vaf.fmt = fmt;
153                 vaf.va = &args;
154
155                 printk(KERN_CRIT
156                         "BTRFS: error (device %s) in %s:%d: errno=%d %s (%pV)\n",
157                         sb->s_id, function, line, errno, errstr, &vaf);
158                 va_end(args);
159         } else {
160                 printk(KERN_CRIT "BTRFS: error (device %s) in %s:%d: errno=%d %s\n",
161                         sb->s_id, function, line, errno, errstr);
162         }
163
164         /* Don't go through full error handling during mount */
165         save_error_info(fs_info);
166         if (sb->s_flags & MS_BORN)
167                 btrfs_handle_error(fs_info);
168 }
169
170 static const char * const logtypes[] = {
171         "emergency",
172         "alert",
173         "critical",
174         "error",
175         "warning",
176         "notice",
177         "info",
178         "debug",
179 };
180
181 void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
182 {
183         struct super_block *sb = fs_info->sb;
184         char lvl[4];
185         struct va_format vaf;
186         va_list args;
187         const char *type = logtypes[4];
188         int kern_level;
189
190         va_start(args, fmt);
191
192         kern_level = printk_get_level(fmt);
193         if (kern_level) {
194                 size_t size = printk_skip_level(fmt) - fmt;
195                 memcpy(lvl, fmt,  size);
196                 lvl[size] = '\0';
197                 fmt += size;
198                 type = logtypes[kern_level - '0'];
199         } else
200                 *lvl = '\0';
201
202         vaf.fmt = fmt;
203         vaf.va = &args;
204
205         printk("%sBTRFS %s (device %s): %pV\n", lvl, type, sb->s_id, &vaf);
206
207         va_end(args);
208 }
209
210 #else
211
212 void __btrfs_std_error(struct btrfs_fs_info *fs_info, const char *function,
213                        unsigned int line, int errno, const char *fmt, ...)
214 {
215         struct super_block *sb = fs_info->sb;
216
217         /*
218          * Special case: if the error is EROFS, and we're already
219          * under MS_RDONLY, then it is safe here.
220          */
221         if (errno == -EROFS && (sb->s_flags & MS_RDONLY))
222                 return;
223
224         /* Don't go through full error handling during mount */
225         if (sb->s_flags & MS_BORN) {
226                 save_error_info(fs_info);
227                 btrfs_handle_error(fs_info);
228         }
229 }
230 #endif
231
232 /*
233  * We only mark the transaction aborted and then set the file system read-only.
234  * This will prevent new transactions from starting or trying to join this
235  * one.
236  *
237  * This means that error recovery at the call site is limited to freeing
238  * any local memory allocations and passing the error code up without
239  * further cleanup. The transaction should complete as it normally would
240  * in the call path but will return -EIO.
241  *
242  * We'll complete the cleanup in btrfs_end_transaction and
243  * btrfs_commit_transaction.
244  */
245 void __btrfs_abort_transaction(struct btrfs_trans_handle *trans,
246                                struct btrfs_root *root, const char *function,
247                                unsigned int line, int errno)
248 {
249         /*
250          * Report first abort since mount
251          */
252         if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED,
253                                 &root->fs_info->fs_state)) {
254                 WARN(1, KERN_DEBUG "BTRFS: Transaction aborted (error %d)\n",
255                                 errno);
256         }
257         trans->aborted = errno;
258         /* Nothing used. The other threads that have joined this
259          * transaction may be able to continue. */
260         if (!trans->blocks_used) {
261                 const char *errstr;
262
263                 errstr = btrfs_decode_error(errno);
264                 btrfs_warn(root->fs_info,
265                            "%s:%d: Aborting unused transaction(%s).",
266                            function, line, errstr);
267                 return;
268         }
269         ACCESS_ONCE(trans->transaction->aborted) = errno;
270         /* Wake up anybody who may be waiting on this transaction */
271         wake_up(&root->fs_info->transaction_wait);
272         wake_up(&root->fs_info->transaction_blocked_wait);
273         __btrfs_std_error(root->fs_info, function, line, errno, NULL);
274 }
275 /*
276  * __btrfs_panic decodes unexpected, fatal errors from the caller,
277  * issues an alert, and either panics or BUGs, depending on mount options.
278  */
279 void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function,
280                    unsigned int line, int errno, const char *fmt, ...)
281 {
282         char *s_id = "<unknown>";
283         const char *errstr;
284         struct va_format vaf = { .fmt = fmt };
285         va_list args;
286
287         if (fs_info)
288                 s_id = fs_info->sb->s_id;
289
290         va_start(args, fmt);
291         vaf.va = &args;
292
293         errstr = btrfs_decode_error(errno);
294         if (fs_info && (fs_info->mount_opt & BTRFS_MOUNT_PANIC_ON_FATAL_ERROR))
295                 panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (errno=%d %s)\n",
296                         s_id, function, line, &vaf, errno, errstr);
297
298         btrfs_crit(fs_info, "panic in %s:%d: %pV (errno=%d %s)",
299                    function, line, &vaf, errno, errstr);
300         va_end(args);
301         /* Caller calls BUG() */
302 }
303
304 static void btrfs_put_super(struct super_block *sb)
305 {
306         (void)close_ctree(btrfs_sb(sb)->tree_root);
307         /* FIXME: need to fix VFS to return error? */
308         /* AV: return it _where_?  ->put_super() can be triggered by any number
309          * of async events, up to and including delivery of SIGKILL to the
310          * last process that kept it busy.  Or segfault in the aforementioned
311          * process...  Whom would you report that to?
312          */
313 }
314
315 enum {
316         Opt_degraded, Opt_subvol, Opt_subvolid, Opt_device, Opt_nodatasum,
317         Opt_nodatacow, Opt_max_inline, Opt_alloc_start, Opt_nobarrier, Opt_ssd,
318         Opt_nossd, Opt_ssd_spread, Opt_thread_pool, Opt_noacl, Opt_compress,
319         Opt_compress_type, Opt_compress_force, Opt_compress_force_type,
320         Opt_notreelog, Opt_ratio, Opt_flushoncommit, Opt_discard,
321         Opt_space_cache, Opt_clear_cache, Opt_user_subvol_rm_allowed,
322         Opt_enospc_debug, Opt_subvolrootid, Opt_defrag, Opt_inode_cache,
323         Opt_no_space_cache, Opt_recovery, Opt_skip_balance,
324         Opt_check_integrity, Opt_check_integrity_including_extent_data,
325         Opt_check_integrity_print_mask, Opt_fatal_errors, Opt_rescan_uuid_tree,
326         Opt_commit_interval, Opt_barrier, Opt_nodefrag, Opt_nodiscard,
327         Opt_noenospc_debug, Opt_noflushoncommit, Opt_acl,
328         Opt_err,
329 };
330
331 static match_table_t tokens = {
332         {Opt_degraded, "degraded"},
333         {Opt_subvol, "subvol=%s"},
334         {Opt_subvolid, "subvolid=%s"},
335         {Opt_device, "device=%s"},
336         {Opt_nodatasum, "nodatasum"},
337         {Opt_nodatacow, "nodatacow"},
338         {Opt_nobarrier, "nobarrier"},
339         {Opt_barrier, "barrier"},
340         {Opt_max_inline, "max_inline=%s"},
341         {Opt_alloc_start, "alloc_start=%s"},
342         {Opt_thread_pool, "thread_pool=%d"},
343         {Opt_compress, "compress"},
344         {Opt_compress_type, "compress=%s"},
345         {Opt_compress_force, "compress-force"},
346         {Opt_compress_force_type, "compress-force=%s"},
347         {Opt_ssd, "ssd"},
348         {Opt_ssd_spread, "ssd_spread"},
349         {Opt_nossd, "nossd"},
350         {Opt_acl, "acl"},
351         {Opt_noacl, "noacl"},
352         {Opt_notreelog, "notreelog"},
353         {Opt_flushoncommit, "flushoncommit"},
354         {Opt_noflushoncommit, "noflushoncommit"},
355         {Opt_ratio, "metadata_ratio=%d"},
356         {Opt_discard, "discard"},
357         {Opt_nodiscard, "nodiscard"},
358         {Opt_space_cache, "space_cache"},
359         {Opt_clear_cache, "clear_cache"},
360         {Opt_user_subvol_rm_allowed, "user_subvol_rm_allowed"},
361         {Opt_enospc_debug, "enospc_debug"},
362         {Opt_noenospc_debug, "noenospc_debug"},
363         {Opt_subvolrootid, "subvolrootid=%d"},
364         {Opt_defrag, "autodefrag"},
365         {Opt_nodefrag, "noautodefrag"},
366         {Opt_inode_cache, "inode_cache"},
367         {Opt_no_space_cache, "nospace_cache"},
368         {Opt_recovery, "recovery"},
369         {Opt_skip_balance, "skip_balance"},
370         {Opt_check_integrity, "check_int"},
371         {Opt_check_integrity_including_extent_data, "check_int_data"},
372         {Opt_check_integrity_print_mask, "check_int_print_mask=%d"},
373         {Opt_rescan_uuid_tree, "rescan_uuid_tree"},
374         {Opt_fatal_errors, "fatal_errors=%s"},
375         {Opt_commit_interval, "commit=%d"},
376         {Opt_err, NULL},
377 };
378
379 /*
380  * Regular mount options parser.  Everything that is needed only when
381  * reading in a new superblock is parsed here.
382  * XXX JDM: This needs to be cleaned up for remount.
383  */
384 int btrfs_parse_options(struct btrfs_root *root, char *options)
385 {
386         struct btrfs_fs_info *info = root->fs_info;
387         substring_t args[MAX_OPT_ARGS];
388         char *p, *num, *orig = NULL;
389         u64 cache_gen;
390         int intarg;
391         int ret = 0;
392         char *compress_type;
393         bool compress_force = false;
394
395         cache_gen = btrfs_super_cache_generation(root->fs_info->super_copy);
396         if (cache_gen)
397                 btrfs_set_opt(info->mount_opt, SPACE_CACHE);
398
399         if (!options)
400                 goto out;
401
402         /*
403          * strsep changes the string, duplicate it because parse_options
404          * gets called twice
405          */
406         options = kstrdup(options, GFP_NOFS);
407         if (!options)
408                 return -ENOMEM;
409
410         orig = options;
411
412         while ((p = strsep(&options, ",")) != NULL) {
413                 int token;
414                 if (!*p)
415                         continue;
416
417                 token = match_token(p, tokens, args);
418                 switch (token) {
419                 case Opt_degraded:
420                         btrfs_info(root->fs_info, "allowing degraded mounts");
421                         btrfs_set_opt(info->mount_opt, DEGRADED);
422                         break;
423                 case Opt_subvol:
424                 case Opt_subvolid:
425                 case Opt_subvolrootid:
426                 case Opt_device:
427                         /*
428                          * These are parsed by btrfs_parse_early_options
429                          * and can be happily ignored here.
430                          */
431                         break;
432                 case Opt_nodatasum:
433                         btrfs_info(root->fs_info, "setting nodatasum");
434                         btrfs_set_opt(info->mount_opt, NODATASUM);
435                         break;
436                 case Opt_nodatacow:
437                         if (!btrfs_test_opt(root, COMPRESS) ||
438                                 !btrfs_test_opt(root, FORCE_COMPRESS)) {
439                                         btrfs_info(root->fs_info,
440                                                 "setting nodatacow, compression disabled");
441                         } else {
442                                 btrfs_info(root->fs_info, "setting nodatacow");
443                         }
444                         btrfs_clear_opt(info->mount_opt, COMPRESS);
445                         btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS);
446                         btrfs_set_opt(info->mount_opt, NODATACOW);
447                         btrfs_set_opt(info->mount_opt, NODATASUM);
448                         break;
449                 case Opt_compress_force:
450                 case Opt_compress_force_type:
451                         compress_force = true;
452                         /* Fallthrough */
453                 case Opt_compress:
454                 case Opt_compress_type:
455                         if (token == Opt_compress ||
456                             token == Opt_compress_force ||
457                             strcmp(args[0].from, "zlib") == 0) {
458                                 compress_type = "zlib";
459                                 info->compress_type = BTRFS_COMPRESS_ZLIB;
460                                 btrfs_set_opt(info->mount_opt, COMPRESS);
461                                 btrfs_clear_opt(info->mount_opt, NODATACOW);
462                                 btrfs_clear_opt(info->mount_opt, NODATASUM);
463                         } else if (strcmp(args[0].from, "lzo") == 0) {
464                                 compress_type = "lzo";
465                                 info->compress_type = BTRFS_COMPRESS_LZO;
466                                 btrfs_set_opt(info->mount_opt, COMPRESS);
467                                 btrfs_clear_opt(info->mount_opt, NODATACOW);
468                                 btrfs_clear_opt(info->mount_opt, NODATASUM);
469                                 btrfs_set_fs_incompat(info, COMPRESS_LZO);
470                         } else if (strncmp(args[0].from, "no", 2) == 0) {
471                                 compress_type = "no";
472                                 btrfs_clear_opt(info->mount_opt, COMPRESS);
473                                 btrfs_clear_opt(info->mount_opt, FORCE_COMPRESS);
474                                 compress_force = false;
475                         } else {
476                                 ret = -EINVAL;
477                                 goto out;
478                         }
479
480                         if (compress_force) {
481                                 btrfs_set_opt(info->mount_opt, FORCE_COMPRESS);
482                                 btrfs_info(root->fs_info, "force %s compression",
483                                         compress_type);
484                         } else if (btrfs_test_opt(root, COMPRESS)) {
485                                 pr_info("btrfs: use %s compression\n",
486                                         compress_type);
487                         }
488                         break;
489                 case Opt_ssd:
490                         btrfs_info(root->fs_info, "use ssd allocation scheme");
491                         btrfs_set_opt(info->mount_opt, SSD);
492                         break;
493                 case Opt_ssd_spread:
494                         btrfs_info(root->fs_info, "use spread ssd allocation scheme");
495                         btrfs_set_opt(info->mount_opt, SSD);
496                         btrfs_set_opt(info->mount_opt, SSD_SPREAD);
497                         break;
498                 case Opt_nossd:
499                         btrfs_info(root->fs_info, "not using ssd allocation scheme");
500                         btrfs_set_opt(info->mount_opt, NOSSD);
501                         btrfs_clear_opt(info->mount_opt, SSD);
502                         btrfs_clear_opt(info->mount_opt, SSD_SPREAD);
503                         break;
504                 case Opt_barrier:
505                         if (btrfs_test_opt(root, NOBARRIER))
506                                 btrfs_info(root->fs_info, "turning on barriers");
507                         btrfs_clear_opt(info->mount_opt, NOBARRIER);
508                         break;
509                 case Opt_nobarrier:
510                         btrfs_info(root->fs_info, "turning off barriers");
511                         btrfs_set_opt(info->mount_opt, NOBARRIER);
512                         break;
513                 case Opt_thread_pool:
514                         ret = match_int(&args[0], &intarg);
515                         if (ret) {
516                                 goto out;
517                         } else if (intarg > 0) {
518                                 info->thread_pool_size = intarg;
519                         } else {
520                                 ret = -EINVAL;
521                                 goto out;
522                         }
523                         break;
524                 case Opt_max_inline:
525                         num = match_strdup(&args[0]);
526                         if (num) {
527                                 info->max_inline = memparse(num, NULL);
528                                 kfree(num);
529
530                                 if (info->max_inline) {
531                                         info->max_inline = max_t(u64,
532                                                 info->max_inline,
533                                                 root->sectorsize);
534                                 }
535                                 btrfs_info(root->fs_info, "max_inline at %llu",
536                                         info->max_inline);
537                         } else {
538                                 ret = -ENOMEM;
539                                 goto out;
540                         }
541                         break;
542                 case Opt_alloc_start:
543                         num = match_strdup(&args[0]);
544                         if (num) {
545                                 mutex_lock(&info->chunk_mutex);
546                                 info->alloc_start = memparse(num, NULL);
547                                 mutex_unlock(&info->chunk_mutex);
548                                 kfree(num);
549                                 btrfs_info(root->fs_info, "allocations start at %llu",
550                                         info->alloc_start);
551                         } else {
552                                 ret = -ENOMEM;
553                                 goto out;
554                         }
555                         break;
556                 case Opt_acl:
557                         root->fs_info->sb->s_flags |= MS_POSIXACL;
558                         break;
559                 case Opt_noacl:
560                         root->fs_info->sb->s_flags &= ~MS_POSIXACL;
561                         break;
562                 case Opt_notreelog:
563                         btrfs_info(root->fs_info, "disabling tree log");
564                         btrfs_set_opt(info->mount_opt, NOTREELOG);
565                         break;
566                 case Opt_flushoncommit:
567                         btrfs_info(root->fs_info, "turning on flush-on-commit");
568                         btrfs_set_opt(info->mount_opt, FLUSHONCOMMIT);
569                         break;
570                 case Opt_noflushoncommit:
571                         if (btrfs_test_opt(root, FLUSHONCOMMIT))
572                                 btrfs_info(root->fs_info, "turning off flush-on-commit");
573                         btrfs_clear_opt(info->mount_opt, FLUSHONCOMMIT);
574                         break;
575                 case Opt_ratio:
576                         ret = match_int(&args[0], &intarg);
577                         if (ret) {
578                                 goto out;
579                         } else if (intarg >= 0) {
580                                 info->metadata_ratio = intarg;
581                                 btrfs_info(root->fs_info, "metadata ratio %d",
582                                        info->metadata_ratio);
583                         } else {
584                                 ret = -EINVAL;
585                                 goto out;
586                         }
587                         break;
588                 case Opt_discard:
589                         btrfs_set_opt(info->mount_opt, DISCARD);
590                         break;
591                 case Opt_nodiscard:
592                         btrfs_clear_opt(info->mount_opt, DISCARD);
593                         break;
594                 case Opt_space_cache:
595                         btrfs_set_opt(info->mount_opt, SPACE_CACHE);
596                         break;
597                 case Opt_rescan_uuid_tree:
598                         btrfs_set_opt(info->mount_opt, RESCAN_UUID_TREE);
599                         break;
600                 case Opt_no_space_cache:
601                         btrfs_info(root->fs_info, "disabling disk space caching");
602                         btrfs_clear_opt(info->mount_opt, SPACE_CACHE);
603                         break;
604                 case Opt_inode_cache:
605                         btrfs_info(root->fs_info, "enabling inode map caching");
606                         btrfs_set_opt(info->mount_opt, INODE_MAP_CACHE);
607                         break;
608                 case Opt_clear_cache:
609                         btrfs_info(root->fs_info, "force clearing of disk cache");
610                         btrfs_set_opt(info->mount_opt, CLEAR_CACHE);
611                         break;
612                 case Opt_user_subvol_rm_allowed:
613                         btrfs_set_opt(info->mount_opt, USER_SUBVOL_RM_ALLOWED);
614                         break;
615                 case Opt_enospc_debug:
616                         btrfs_set_opt(info->mount_opt, ENOSPC_DEBUG);
617                         break;
618                 case Opt_noenospc_debug:
619                         btrfs_clear_opt(info->mount_opt, ENOSPC_DEBUG);
620                         break;
621                 case Opt_defrag:
622                         btrfs_info(root->fs_info, "enabling auto defrag");
623                         btrfs_set_opt(info->mount_opt, AUTO_DEFRAG);
624                         break;
625                 case Opt_nodefrag:
626                         if (btrfs_test_opt(root, AUTO_DEFRAG))
627                                 btrfs_info(root->fs_info, "disabling auto defrag");
628                         btrfs_clear_opt(info->mount_opt, AUTO_DEFRAG);
629                         break;
630                 case Opt_recovery:
631                         btrfs_info(root->fs_info, "enabling auto recovery");
632                         btrfs_set_opt(info->mount_opt, RECOVERY);
633                         break;
634                 case Opt_skip_balance:
635                         btrfs_set_opt(info->mount_opt, SKIP_BALANCE);
636                         break;
637 #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
638                 case Opt_check_integrity_including_extent_data:
639                         btrfs_info(root->fs_info,
640                                    "enabling check integrity including extent data");
641                         btrfs_set_opt(info->mount_opt,
642                                       CHECK_INTEGRITY_INCLUDING_EXTENT_DATA);
643                         btrfs_set_opt(info->mount_opt, CHECK_INTEGRITY);
644                         break;
645                 case Opt_check_integrity:
646                         btrfs_info(root->fs_info, "enabling check integrity");
647                         btrfs_set_opt(info->mount_opt, CHECK_INTEGRITY);
648                         break;
649                 case Opt_check_integrity_print_mask:
650                         ret = match_int(&args[0], &intarg);
651                         if (ret) {
652                                 goto out;
653                         } else if (intarg >= 0) {
654                                 info->check_integrity_print_mask = intarg;
655                                 btrfs_info(root->fs_info, "check_integrity_print_mask 0x%x",
656                                        info->check_integrity_print_mask);
657                         } else {
658                                 ret = -EINVAL;
659                                 goto out;
660                         }
661                         break;
662 #else
663                 case Opt_check_integrity_including_extent_data:
664                 case Opt_check_integrity:
665                 case Opt_check_integrity_print_mask:
666                         btrfs_err(root->fs_info,
667                                 "support for check_integrity* not compiled in!");
668                         ret = -EINVAL;
669                         goto out;
670 #endif
671                 case Opt_fatal_errors:
672                         if (strcmp(args[0].from, "panic") == 0)
673                                 btrfs_set_opt(info->mount_opt,
674                                               PANIC_ON_FATAL_ERROR);
675                         else if (strcmp(args[0].from, "bug") == 0)
676                                 btrfs_clear_opt(info->mount_opt,
677                                               PANIC_ON_FATAL_ERROR);
678                         else {
679                                 ret = -EINVAL;
680                                 goto out;
681                         }
682                         break;
683                 case Opt_commit_interval:
684                         intarg = 0;
685                         ret = match_int(&args[0], &intarg);
686                         if (ret < 0) {
687                                 btrfs_err(root->fs_info, "invalid commit interval");
688                                 ret = -EINVAL;
689                                 goto out;
690                         }
691                         if (intarg > 0) {
692                                 if (intarg > 300) {
693                                         btrfs_warn(root->fs_info, "excessive commit interval %d",
694                                                         intarg);
695                                 }
696                                 info->commit_interval = intarg;
697                         } else {
698                                 btrfs_info(root->fs_info, "using default commit interval %ds",
699                                     BTRFS_DEFAULT_COMMIT_INTERVAL);
700                                 info->commit_interval = BTRFS_DEFAULT_COMMIT_INTERVAL;
701                         }
702                         break;
703                 case Opt_err:
704                         btrfs_info(root->fs_info, "unrecognized mount option '%s'", p);
705                         ret = -EINVAL;
706                         goto out;
707                 default:
708                         break;
709                 }
710         }
711 out:
712         if (!ret && btrfs_test_opt(root, SPACE_CACHE))
713                 btrfs_info(root->fs_info, "disk space caching is enabled");
714         kfree(orig);
715         return ret;
716 }
717
718 /*
719  * Parse mount options that are required early in the mount process.
720  *
721  * All other options will be parsed on much later in the mount process and
722  * only when we need to allocate a new super block.
723  */
724 static int btrfs_parse_early_options(const char *options, fmode_t flags,
725                 void *holder, char **subvol_name, u64 *subvol_objectid,
726                 struct btrfs_fs_devices **fs_devices)
727 {
728         substring_t args[MAX_OPT_ARGS];
729         char *device_name, *opts, *orig, *p;
730         char *num = NULL;
731         int error = 0;
732
733         if (!options)
734                 return 0;
735
736         /*
737          * strsep changes the string, duplicate it because parse_options
738          * gets called twice
739          */
740         opts = kstrdup(options, GFP_KERNEL);
741         if (!opts)
742                 return -ENOMEM;
743         orig = opts;
744
745         while ((p = strsep(&opts, ",")) != NULL) {
746                 int token;
747                 if (!*p)
748                         continue;
749
750                 token = match_token(p, tokens, args);
751                 switch (token) {
752                 case Opt_subvol:
753                         kfree(*subvol_name);
754                         *subvol_name = match_strdup(&args[0]);
755                         if (!*subvol_name) {
756                                 error = -ENOMEM;
757                                 goto out;
758                         }
759                         break;
760                 case Opt_subvolid:
761                         num = match_strdup(&args[0]);
762                         if (num) {
763                                 *subvol_objectid = memparse(num, NULL);
764                                 kfree(num);
765                                 /* we want the original fs_tree */
766                                 if (!*subvol_objectid)
767                                         *subvol_objectid =
768                                                 BTRFS_FS_TREE_OBJECTID;
769                         } else {
770                                 error = -EINVAL;
771                                 goto out;
772                         }
773                         break;
774                 case Opt_subvolrootid:
775                         printk(KERN_WARNING
776                                 "BTRFS: 'subvolrootid' mount option is deprecated and has "
777                                 "no effect\n");
778                         break;
779                 case Opt_device:
780                         device_name = match_strdup(&args[0]);
781                         if (!device_name) {
782                                 error = -ENOMEM;
783                                 goto out;
784                         }
785                         error = btrfs_scan_one_device(device_name,
786                                         flags, holder, fs_devices);
787                         kfree(device_name);
788                         if (error)
789                                 goto out;
790                         break;
791                 default:
792                         break;
793                 }
794         }
795
796 out:
797         kfree(orig);
798         return error;
799 }
800
801 static struct dentry *get_default_root(struct super_block *sb,
802                                        u64 subvol_objectid)
803 {
804         struct btrfs_fs_info *fs_info = btrfs_sb(sb);
805         struct btrfs_root *root = fs_info->tree_root;
806         struct btrfs_root *new_root;
807         struct btrfs_dir_item *di;
808         struct btrfs_path *path;
809         struct btrfs_key location;
810         struct inode *inode;
811         u64 dir_id;
812         int new = 0;
813
814         /*
815          * We have a specific subvol we want to mount, just setup location and
816          * go look up the root.
817          */
818         if (subvol_objectid) {
819                 location.objectid = subvol_objectid;
820                 location.type = BTRFS_ROOT_ITEM_KEY;
821                 location.offset = (u64)-1;
822                 goto find_root;
823         }
824
825         path = btrfs_alloc_path();
826         if (!path)
827                 return ERR_PTR(-ENOMEM);
828         path->leave_spinning = 1;
829
830         /*
831          * Find the "default" dir item which points to the root item that we
832          * will mount by default if we haven't been given a specific subvolume
833          * to mount.
834          */
835         dir_id = btrfs_super_root_dir(fs_info->super_copy);
836         di = btrfs_lookup_dir_item(NULL, root, path, dir_id, "default", 7, 0);
837         if (IS_ERR(di)) {
838                 btrfs_free_path(path);
839                 return ERR_CAST(di);
840         }
841         if (!di) {
842                 /*
843                  * Ok the default dir item isn't there.  This is weird since
844                  * it's always been there, but don't freak out, just try and
845                  * mount to root most subvolume.
846                  */
847                 btrfs_free_path(path);
848                 dir_id = BTRFS_FIRST_FREE_OBJECTID;
849                 new_root = fs_info->fs_root;
850                 goto setup_root;
851         }
852
853         btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location);
854         btrfs_free_path(path);
855
856 find_root:
857         new_root = btrfs_read_fs_root_no_name(fs_info, &location);
858         if (IS_ERR(new_root))
859                 return ERR_CAST(new_root);
860
861         dir_id = btrfs_root_dirid(&new_root->root_item);
862 setup_root:
863         location.objectid = dir_id;
864         location.type = BTRFS_INODE_ITEM_KEY;
865         location.offset = 0;
866
867         inode = btrfs_iget(sb, &location, new_root, &new);
868         if (IS_ERR(inode))
869                 return ERR_CAST(inode);
870
871         /*
872          * If we're just mounting the root most subvol put the inode and return
873          * a reference to the dentry.  We will have already gotten a reference
874          * to the inode in btrfs_fill_super so we're good to go.
875          */
876         if (!new && sb->s_root->d_inode == inode) {
877                 iput(inode);
878                 return dget(sb->s_root);
879         }
880
881         return d_obtain_alias(inode);
882 }
883
884 static int btrfs_fill_super(struct super_block *sb,
885                             struct btrfs_fs_devices *fs_devices,
886                             void *data, int silent)
887 {
888         struct inode *inode;
889         struct btrfs_fs_info *fs_info = btrfs_sb(sb);
890         struct btrfs_key key;
891         int err;
892
893         sb->s_maxbytes = MAX_LFS_FILESIZE;
894         sb->s_magic = BTRFS_SUPER_MAGIC;
895         sb->s_op = &btrfs_super_ops;
896         sb->s_d_op = &btrfs_dentry_operations;
897         sb->s_export_op = &btrfs_export_ops;
898         sb->s_xattr = btrfs_xattr_handlers;
899         sb->s_time_gran = 1;
900 #ifdef CONFIG_BTRFS_FS_POSIX_ACL
901         sb->s_flags |= MS_POSIXACL;
902 #endif
903         sb->s_flags |= MS_I_VERSION;
904         err = open_ctree(sb, fs_devices, (char *)data);
905         if (err) {
906                 printk(KERN_ERR "BTRFS: open_ctree failed\n");
907                 return err;
908         }
909
910         key.objectid = BTRFS_FIRST_FREE_OBJECTID;
911         key.type = BTRFS_INODE_ITEM_KEY;
912         key.offset = 0;
913         inode = btrfs_iget(sb, &key, fs_info->fs_root, NULL);
914         if (IS_ERR(inode)) {
915                 err = PTR_ERR(inode);
916                 goto fail_close;
917         }
918
919         sb->s_root = d_make_root(inode);
920         if (!sb->s_root) {
921                 err = -ENOMEM;
922                 goto fail_close;
923         }
924
925         save_mount_options(sb, data);
926         cleancache_init_fs(sb);
927         sb->s_flags |= MS_ACTIVE;
928         return 0;
929
930 fail_close:
931         close_ctree(fs_info->tree_root);
932         return err;
933 }
934
935 int btrfs_sync_fs(struct super_block *sb, int wait)
936 {
937         struct btrfs_trans_handle *trans;
938         struct btrfs_fs_info *fs_info = btrfs_sb(sb);
939         struct btrfs_root *root = fs_info->tree_root;
940
941         trace_btrfs_sync_fs(wait);
942
943         if (!wait) {
944                 filemap_flush(fs_info->btree_inode->i_mapping);
945                 return 0;
946         }
947
948         btrfs_wait_ordered_roots(fs_info, -1);
949
950         trans = btrfs_attach_transaction_barrier(root);
951         if (IS_ERR(trans)) {
952                 /* no transaction, don't bother */
953                 if (PTR_ERR(trans) == -ENOENT)
954                         return 0;
955                 return PTR_ERR(trans);
956         }
957         return btrfs_commit_transaction(trans, root);
958 }
959
960 static int btrfs_show_options(struct seq_file *seq, struct dentry *dentry)
961 {
962         struct btrfs_fs_info *info = btrfs_sb(dentry->d_sb);
963         struct btrfs_root *root = info->tree_root;
964         char *compress_type;
965
966         if (btrfs_test_opt(root, DEGRADED))
967                 seq_puts(seq, ",degraded");
968         if (btrfs_test_opt(root, NODATASUM))
969                 seq_puts(seq, ",nodatasum");
970         if (btrfs_test_opt(root, NODATACOW))
971                 seq_puts(seq, ",nodatacow");
972         if (btrfs_test_opt(root, NOBARRIER))
973                 seq_puts(seq, ",nobarrier");
974         if (info->max_inline != 8192 * 1024)
975                 seq_printf(seq, ",max_inline=%llu", info->max_inline);
976         if (info->alloc_start != 0)
977                 seq_printf(seq, ",alloc_start=%llu", info->alloc_start);
978         if (info->thread_pool_size !=  min_t(unsigned long,
979                                              num_online_cpus() + 2, 8))
980                 seq_printf(seq, ",thread_pool=%d", info->thread_pool_size);
981         if (btrfs_test_opt(root, COMPRESS)) {
982                 if (info->compress_type == BTRFS_COMPRESS_ZLIB)
983                         compress_type = "zlib";
984                 else
985                         compress_type = "lzo";
986                 if (btrfs_test_opt(root, FORCE_COMPRESS))
987                         seq_printf(seq, ",compress-force=%s", compress_type);
988                 else
989                         seq_printf(seq, ",compress=%s", compress_type);
990         }
991         if (btrfs_test_opt(root, NOSSD))
992                 seq_puts(seq, ",nossd");
993         if (btrfs_test_opt(root, SSD_SPREAD))
994                 seq_puts(seq, ",ssd_spread");
995         else if (btrfs_test_opt(root, SSD))
996                 seq_puts(seq, ",ssd");
997         if (btrfs_test_opt(root, NOTREELOG))
998                 seq_puts(seq, ",notreelog");
999         if (btrfs_test_opt(root, FLUSHONCOMMIT))
1000                 seq_puts(seq, ",flushoncommit");
1001         if (btrfs_test_opt(root, DISCARD))
1002                 seq_puts(seq, ",discard");
1003         if (!(root->fs_info->sb->s_flags & MS_POSIXACL))
1004                 seq_puts(seq, ",noacl");
1005         if (btrfs_test_opt(root, SPACE_CACHE))
1006                 seq_puts(seq, ",space_cache");
1007         else
1008                 seq_puts(seq, ",nospace_cache");
1009         if (btrfs_test_opt(root, RESCAN_UUID_TREE))
1010                 seq_puts(seq, ",rescan_uuid_tree");
1011         if (btrfs_test_opt(root, CLEAR_CACHE))
1012                 seq_puts(seq, ",clear_cache");
1013         if (btrfs_test_opt(root, USER_SUBVOL_RM_ALLOWED))
1014                 seq_puts(seq, ",user_subvol_rm_allowed");
1015         if (btrfs_test_opt(root, ENOSPC_DEBUG))
1016                 seq_puts(seq, ",enospc_debug");
1017         if (btrfs_test_opt(root, AUTO_DEFRAG))
1018                 seq_puts(seq, ",autodefrag");
1019         if (btrfs_test_opt(root, INODE_MAP_CACHE))
1020                 seq_puts(seq, ",inode_cache");
1021         if (btrfs_test_opt(root, SKIP_BALANCE))
1022                 seq_puts(seq, ",skip_balance");
1023         if (btrfs_test_opt(root, RECOVERY))
1024                 seq_puts(seq, ",recovery");
1025 #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
1026         if (btrfs_test_opt(root, CHECK_INTEGRITY_INCLUDING_EXTENT_DATA))
1027                 seq_puts(seq, ",check_int_data");
1028         else if (btrfs_test_opt(root, CHECK_INTEGRITY))
1029                 seq_puts(seq, ",check_int");
1030         if (info->check_integrity_print_mask)
1031                 seq_printf(seq, ",check_int_print_mask=%d",
1032                                 info->check_integrity_print_mask);
1033 #endif
1034         if (info->metadata_ratio)
1035                 seq_printf(seq, ",metadata_ratio=%d",
1036                                 info->metadata_ratio);
1037         if (btrfs_test_opt(root, PANIC_ON_FATAL_ERROR))
1038                 seq_puts(seq, ",fatal_errors=panic");
1039         if (info->commit_interval != BTRFS_DEFAULT_COMMIT_INTERVAL)
1040                 seq_printf(seq, ",commit=%d", info->commit_interval);
1041         return 0;
1042 }
1043
1044 static int btrfs_test_super(struct super_block *s, void *data)
1045 {
1046         struct btrfs_fs_info *p = data;
1047         struct btrfs_fs_info *fs_info = btrfs_sb(s);
1048
1049         return fs_info->fs_devices == p->fs_devices;
1050 }
1051
1052 static int btrfs_set_super(struct super_block *s, void *data)
1053 {
1054         int err = set_anon_super(s, data);
1055         if (!err)
1056                 s->s_fs_info = data;
1057         return err;
1058 }
1059
1060 /*
1061  * subvolumes are identified by ino 256
1062  */
1063 static inline int is_subvolume_inode(struct inode *inode)
1064 {
1065         if (inode && inode->i_ino == BTRFS_FIRST_FREE_OBJECTID)
1066                 return 1;
1067         return 0;
1068 }
1069
1070 /*
1071  * This will strip out the subvol=%s argument for an argument string and add
1072  * subvolid=0 to make sure we get the actual tree root for path walking to the
1073  * subvol we want.
1074  */
1075 static char *setup_root_args(char *args)
1076 {
1077         unsigned len = strlen(args) + 2 + 1;
1078         char *src, *dst, *buf;
1079
1080         /*
1081          * We need the same args as before, but with this substitution:
1082          * s!subvol=[^,]+!subvolid=0!
1083          *
1084          * Since the replacement string is up to 2 bytes longer than the
1085          * original, allocate strlen(args) + 2 + 1 bytes.
1086          */
1087
1088         src = strstr(args, "subvol=");
1089         /* This shouldn't happen, but just in case.. */
1090         if (!src)
1091                 return NULL;
1092
1093         buf = dst = kmalloc(len, GFP_NOFS);
1094         if (!buf)
1095                 return NULL;
1096
1097         /*
1098          * If the subvol= arg is not at the start of the string,
1099          * copy whatever precedes it into buf.
1100          */
1101         if (src != args) {
1102                 *src++ = '\0';
1103                 strcpy(buf, args);
1104                 dst += strlen(args);
1105         }
1106
1107         strcpy(dst, "subvolid=0");
1108         dst += strlen("subvolid=0");
1109
1110         /*
1111          * If there is a "," after the original subvol=... string,
1112          * copy that suffix into our buffer.  Otherwise, we're done.
1113          */
1114         src = strchr(src, ',');
1115         if (src)
1116                 strcpy(dst, src);
1117
1118         return buf;
1119 }
1120
1121 static struct dentry *mount_subvol(const char *subvol_name, int flags,
1122                                    const char *device_name, char *data)
1123 {
1124         struct dentry *root;
1125         struct vfsmount *mnt;
1126         char *newargs;
1127
1128         newargs = setup_root_args(data);
1129         if (!newargs)
1130                 return ERR_PTR(-ENOMEM);
1131         mnt = vfs_kern_mount(&btrfs_fs_type, flags, device_name,
1132                              newargs);
1133         kfree(newargs);
1134         if (IS_ERR(mnt))
1135                 return ERR_CAST(mnt);
1136
1137         root = mount_subtree(mnt, subvol_name);
1138
1139         if (!IS_ERR(root) && !is_subvolume_inode(root->d_inode)) {
1140                 struct super_block *s = root->d_sb;
1141                 dput(root);
1142                 root = ERR_PTR(-EINVAL);
1143                 deactivate_locked_super(s);
1144                 printk(KERN_ERR "BTRFS: '%s' is not a valid subvolume\n",
1145                                 subvol_name);
1146         }
1147
1148         return root;
1149 }
1150
1151 /*
1152  * Find a superblock for the given device / mount point.
1153  *
1154  * Note:  This is based on get_sb_bdev from fs/super.c with a few additions
1155  *        for multiple device setup.  Make sure to keep it in sync.
1156  */
1157 static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags,
1158                 const char *device_name, void *data)
1159 {
1160         struct block_device *bdev = NULL;
1161         struct super_block *s;
1162         struct dentry *root;
1163         struct btrfs_fs_devices *fs_devices = NULL;
1164         struct btrfs_fs_info *fs_info = NULL;
1165         fmode_t mode = FMODE_READ;
1166         char *subvol_name = NULL;
1167         u64 subvol_objectid = 0;
1168         int error = 0;
1169
1170         if (!(flags & MS_RDONLY))
1171                 mode |= FMODE_WRITE;
1172
1173         error = btrfs_parse_early_options(data, mode, fs_type,
1174                                           &subvol_name, &subvol_objectid,
1175                                           &fs_devices);
1176         if (error) {
1177                 kfree(subvol_name);
1178                 return ERR_PTR(error);
1179         }
1180
1181         if (subvol_name) {
1182                 root = mount_subvol(subvol_name, flags, device_name, data);
1183                 kfree(subvol_name);
1184                 return root;
1185         }
1186
1187         error = btrfs_scan_one_device(device_name, mode, fs_type, &fs_devices);
1188         if (error)
1189                 return ERR_PTR(error);
1190
1191         /*
1192          * Setup a dummy root and fs_info for test/set super.  This is because
1193          * we don't actually fill this stuff out until open_ctree, but we need
1194          * it for searching for existing supers, so this lets us do that and
1195          * then open_ctree will properly initialize everything later.
1196          */
1197         fs_info = kzalloc(sizeof(struct btrfs_fs_info), GFP_NOFS);
1198         if (!fs_info)
1199                 return ERR_PTR(-ENOMEM);
1200
1201         fs_info->fs_devices = fs_devices;
1202
1203         fs_info->super_copy = kzalloc(BTRFS_SUPER_INFO_SIZE, GFP_NOFS);
1204         fs_info->super_for_commit = kzalloc(BTRFS_SUPER_INFO_SIZE, GFP_NOFS);
1205         if (!fs_info->super_copy || !fs_info->super_for_commit) {
1206                 error = -ENOMEM;
1207                 goto error_fs_info;
1208         }
1209
1210         error = btrfs_open_devices(fs_devices, mode, fs_type);
1211         if (error)
1212                 goto error_fs_info;
1213
1214         if (!(flags & MS_RDONLY) && fs_devices->rw_devices == 0) {
1215                 error = -EACCES;
1216                 goto error_close_devices;
1217         }
1218
1219         bdev = fs_devices->latest_bdev;
1220         s = sget(fs_type, btrfs_test_super, btrfs_set_super, flags | MS_NOSEC,
1221                  fs_info);
1222         if (IS_ERR(s)) {
1223                 error = PTR_ERR(s);
1224                 goto error_close_devices;
1225         }
1226
1227         if (s->s_root) {
1228                 btrfs_close_devices(fs_devices);
1229                 free_fs_info(fs_info);
1230                 if ((flags ^ s->s_flags) & MS_RDONLY)
1231                         error = -EBUSY;
1232         } else {
1233                 char b[BDEVNAME_SIZE];
1234
1235                 strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id));
1236                 btrfs_sb(s)->bdev_holder = fs_type;
1237                 error = btrfs_fill_super(s, fs_devices, data,
1238                                          flags & MS_SILENT ? 1 : 0);
1239         }
1240
1241         root = !error ? get_default_root(s, subvol_objectid) : ERR_PTR(error);
1242         if (IS_ERR(root))
1243                 deactivate_locked_super(s);
1244
1245         return root;
1246
1247 error_close_devices:
1248         btrfs_close_devices(fs_devices);
1249 error_fs_info:
1250         free_fs_info(fs_info);
1251         return ERR_PTR(error);
1252 }
1253
1254 static void btrfs_set_max_workers(struct btrfs_workers *workers, int new_limit)
1255 {
1256         spin_lock_irq(&workers->lock);
1257         workers->max_workers = new_limit;
1258         spin_unlock_irq(&workers->lock);
1259 }
1260
1261 static void btrfs_resize_thread_pool(struct btrfs_fs_info *fs_info,
1262                                      int new_pool_size, int old_pool_size)
1263 {
1264         if (new_pool_size == old_pool_size)
1265                 return;
1266
1267         fs_info->thread_pool_size = new_pool_size;
1268
1269         btrfs_info(fs_info, "resize thread pool %d -> %d",
1270                old_pool_size, new_pool_size);
1271
1272         btrfs_set_max_workers(&fs_info->generic_worker, new_pool_size);
1273         btrfs_set_max_workers(&fs_info->workers, new_pool_size);
1274         btrfs_set_max_workers(&fs_info->delalloc_workers, new_pool_size);
1275         btrfs_set_max_workers(&fs_info->submit_workers, new_pool_size);
1276         btrfs_set_max_workers(&fs_info->caching_workers, new_pool_size);
1277         btrfs_set_max_workers(&fs_info->fixup_workers, new_pool_size);
1278         btrfs_set_max_workers(&fs_info->endio_workers, new_pool_size);
1279         btrfs_set_max_workers(&fs_info->endio_meta_workers, new_pool_size);
1280         btrfs_set_max_workers(&fs_info->endio_meta_write_workers, new_pool_size);
1281         btrfs_set_max_workers(&fs_info->endio_write_workers, new_pool_size);
1282         btrfs_set_max_workers(&fs_info->endio_freespace_worker, new_pool_size);
1283         btrfs_set_max_workers(&fs_info->delayed_workers, new_pool_size);
1284         btrfs_set_max_workers(&fs_info->readahead_workers, new_pool_size);
1285         btrfs_set_max_workers(&fs_info->scrub_wr_completion_workers,
1286                               new_pool_size);
1287 }
1288
1289 static inline void btrfs_remount_prepare(struct btrfs_fs_info *fs_info)
1290 {
1291         set_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state);
1292 }
1293
1294 static inline void btrfs_remount_begin(struct btrfs_fs_info *fs_info,
1295                                        unsigned long old_opts, int flags)
1296 {
1297         if (btrfs_raw_test_opt(old_opts, AUTO_DEFRAG) &&
1298             (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) ||
1299              (flags & MS_RDONLY))) {
1300                 /* wait for any defraggers to finish */
1301                 wait_event(fs_info->transaction_wait,
1302                            (atomic_read(&fs_info->defrag_running) == 0));
1303                 if (flags & MS_RDONLY)
1304                         sync_filesystem(fs_info->sb);
1305         }
1306 }
1307
1308 static inline void btrfs_remount_cleanup(struct btrfs_fs_info *fs_info,
1309                                          unsigned long old_opts)
1310 {
1311         /*
1312          * We need cleanup all defragable inodes if the autodefragment is
1313          * close or the fs is R/O.
1314          */
1315         if (btrfs_raw_test_opt(old_opts, AUTO_DEFRAG) &&
1316             (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) ||
1317              (fs_info->sb->s_flags & MS_RDONLY))) {
1318                 btrfs_cleanup_defrag_inodes(fs_info);
1319         }
1320
1321         clear_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state);
1322 }
1323
1324 static int btrfs_remount(struct super_block *sb, int *flags, char *data)
1325 {
1326         struct btrfs_fs_info *fs_info = btrfs_sb(sb);
1327         struct btrfs_root *root = fs_info->tree_root;
1328         unsigned old_flags = sb->s_flags;
1329         unsigned long old_opts = fs_info->mount_opt;
1330         unsigned long old_compress_type = fs_info->compress_type;
1331         u64 old_max_inline = fs_info->max_inline;
1332         u64 old_alloc_start = fs_info->alloc_start;
1333         int old_thread_pool_size = fs_info->thread_pool_size;
1334         unsigned int old_metadata_ratio = fs_info->metadata_ratio;
1335         int ret;
1336
1337         btrfs_remount_prepare(fs_info);
1338
1339         ret = btrfs_parse_options(root, data);
1340         if (ret) {
1341                 ret = -EINVAL;
1342                 goto restore;
1343         }
1344
1345         btrfs_remount_begin(fs_info, old_opts, *flags);
1346         btrfs_resize_thread_pool(fs_info,
1347                 fs_info->thread_pool_size, old_thread_pool_size);
1348
1349         if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
1350                 goto out;
1351
1352         if (*flags & MS_RDONLY) {
1353                 /*
1354                  * this also happens on 'umount -rf' or on shutdown, when
1355                  * the filesystem is busy.
1356                  */
1357
1358                 /* wait for the uuid_scan task to finish */
1359                 down(&fs_info->uuid_tree_rescan_sem);
1360                 /* avoid complains from lockdep et al. */
1361                 up(&fs_info->uuid_tree_rescan_sem);
1362
1363                 sb->s_flags |= MS_RDONLY;
1364
1365                 btrfs_dev_replace_suspend_for_unmount(fs_info);
1366                 btrfs_scrub_cancel(fs_info);
1367                 btrfs_pause_balance(fs_info);
1368
1369                 ret = btrfs_commit_super(root);
1370                 if (ret)
1371                         goto restore;
1372         } else {
1373                 if (test_bit(BTRFS_FS_STATE_ERROR, &root->fs_info->fs_state)) {
1374                         btrfs_err(fs_info,
1375                                 "Remounting read-write after error is not allowed");
1376                         ret = -EINVAL;
1377                         goto restore;
1378                 }
1379                 if (fs_info->fs_devices->rw_devices == 0) {
1380                         ret = -EACCES;
1381                         goto restore;
1382                 }
1383
1384                 if (fs_info->fs_devices->missing_devices >
1385                      fs_info->num_tolerated_disk_barrier_failures &&
1386                     !(*flags & MS_RDONLY)) {
1387                         btrfs_warn(fs_info,
1388                                 "too many missing devices, writeable remount is not allowed");
1389                         ret = -EACCES;
1390                         goto restore;
1391                 }
1392
1393                 if (btrfs_super_log_root(fs_info->super_copy) != 0) {
1394                         ret = -EINVAL;
1395                         goto restore;
1396                 }
1397
1398                 ret = btrfs_cleanup_fs_roots(fs_info);
1399                 if (ret)
1400                         goto restore;
1401
1402                 /* recover relocation */
1403                 ret = btrfs_recover_relocation(root);
1404                 if (ret)
1405                         goto restore;
1406
1407                 ret = btrfs_resume_balance_async(fs_info);
1408                 if (ret)
1409                         goto restore;
1410
1411                 ret = btrfs_resume_dev_replace_async(fs_info);
1412                 if (ret) {
1413                         btrfs_warn(fs_info, "failed to resume dev_replace");
1414                         goto restore;
1415                 }
1416
1417                 if (!fs_info->uuid_root) {
1418                         btrfs_info(fs_info, "creating UUID tree");
1419                         ret = btrfs_create_uuid_tree(fs_info);
1420                         if (ret) {
1421                                 btrfs_warn(fs_info, "failed to create the UUID tree %d", ret);
1422                                 goto restore;
1423                         }
1424                 }
1425                 sb->s_flags &= ~MS_RDONLY;
1426         }
1427 out:
1428         btrfs_remount_cleanup(fs_info, old_opts);
1429         return 0;
1430
1431 restore:
1432         /* We've hit an error - don't reset MS_RDONLY */
1433         if (sb->s_flags & MS_RDONLY)
1434                 old_flags |= MS_RDONLY;
1435         sb->s_flags = old_flags;
1436         fs_info->mount_opt = old_opts;
1437         fs_info->compress_type = old_compress_type;
1438         fs_info->max_inline = old_max_inline;
1439         mutex_lock(&fs_info->chunk_mutex);
1440         fs_info->alloc_start = old_alloc_start;
1441         mutex_unlock(&fs_info->chunk_mutex);
1442         btrfs_resize_thread_pool(fs_info,
1443                 old_thread_pool_size, fs_info->thread_pool_size);
1444         fs_info->metadata_ratio = old_metadata_ratio;
1445         btrfs_remount_cleanup(fs_info, old_opts);
1446         return ret;
1447 }
1448
1449 /* Used to sort the devices by max_avail(descending sort) */
1450 static int btrfs_cmp_device_free_bytes(const void *dev_info1,
1451                                        const void *dev_info2)
1452 {
1453         if (((struct btrfs_device_info *)dev_info1)->max_avail >
1454             ((struct btrfs_device_info *)dev_info2)->max_avail)
1455                 return -1;
1456         else if (((struct btrfs_device_info *)dev_info1)->max_avail <
1457                  ((struct btrfs_device_info *)dev_info2)->max_avail)
1458                 return 1;
1459         else
1460         return 0;
1461 }
1462
1463 /*
1464  * sort the devices by max_avail, in which max free extent size of each device
1465  * is stored.(Descending Sort)
1466  */
1467 static inline void btrfs_descending_sort_devices(
1468                                         struct btrfs_device_info *devices,
1469                                         size_t nr_devices)
1470 {
1471         sort(devices, nr_devices, sizeof(struct btrfs_device_info),
1472              btrfs_cmp_device_free_bytes, NULL);
1473 }
1474
1475 /*
1476  * The helper to calc the free space on the devices that can be used to store
1477  * file data.
1478  */
1479 static int btrfs_calc_avail_data_space(struct btrfs_root *root, u64 *free_bytes)
1480 {
1481         struct btrfs_fs_info *fs_info = root->fs_info;
1482         struct btrfs_device_info *devices_info;
1483         struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
1484         struct btrfs_device *device;
1485         u64 skip_space;
1486         u64 type;
1487         u64 avail_space;
1488         u64 used_space;
1489         u64 min_stripe_size;
1490         int min_stripes = 1, num_stripes = 1;
1491         int i = 0, nr_devices;
1492         int ret;
1493
1494         nr_devices = fs_info->fs_devices->open_devices;
1495         BUG_ON(!nr_devices);
1496
1497         devices_info = kmalloc_array(nr_devices, sizeof(*devices_info),
1498                                GFP_NOFS);
1499         if (!devices_info)
1500                 return -ENOMEM;
1501
1502         /* calc min stripe number for data space alloction */
1503         type = btrfs_get_alloc_profile(root, 1);
1504         if (type & BTRFS_BLOCK_GROUP_RAID0) {
1505                 min_stripes = 2;
1506                 num_stripes = nr_devices;
1507         } else if (type & BTRFS_BLOCK_GROUP_RAID1) {
1508                 min_stripes = 2;
1509                 num_stripes = 2;
1510         } else if (type & BTRFS_BLOCK_GROUP_RAID10) {
1511                 min_stripes = 4;
1512                 num_stripes = 4;
1513         }
1514
1515         if (type & BTRFS_BLOCK_GROUP_DUP)
1516                 min_stripe_size = 2 * BTRFS_STRIPE_LEN;
1517         else
1518                 min_stripe_size = BTRFS_STRIPE_LEN;
1519
1520         list_for_each_entry(device, &fs_devices->devices, dev_list) {
1521                 if (!device->in_fs_metadata || !device->bdev ||
1522                     device->is_tgtdev_for_dev_replace)
1523                         continue;
1524
1525                 avail_space = device->total_bytes - device->bytes_used;
1526
1527                 /* align with stripe_len */
1528                 do_div(avail_space, BTRFS_STRIPE_LEN);
1529                 avail_space *= BTRFS_STRIPE_LEN;
1530
1531                 /*
1532                  * In order to avoid overwritting the superblock on the drive,
1533                  * btrfs starts at an offset of at least 1MB when doing chunk
1534                  * allocation.
1535                  */
1536                 skip_space = 1024 * 1024;
1537
1538                 /* user can set the offset in fs_info->alloc_start. */
1539                 if (fs_info->alloc_start + BTRFS_STRIPE_LEN <=
1540                     device->total_bytes)
1541                         skip_space = max(fs_info->alloc_start, skip_space);
1542
1543                 /*
1544                  * btrfs can not use the free space in [0, skip_space - 1],
1545                  * we must subtract it from the total. In order to implement
1546                  * it, we account the used space in this range first.
1547                  */
1548                 ret = btrfs_account_dev_extents_size(device, 0, skip_space - 1,
1549                                                      &used_space);
1550                 if (ret) {
1551                         kfree(devices_info);
1552                         return ret;
1553                 }
1554
1555                 /* calc the free space in [0, skip_space - 1] */
1556                 skip_space -= used_space;
1557
1558                 /*
1559                  * we can use the free space in [0, skip_space - 1], subtract
1560                  * it from the total.
1561                  */
1562                 if (avail_space && avail_space >= skip_space)
1563                         avail_space -= skip_space;
1564                 else
1565                         avail_space = 0;
1566
1567                 if (avail_space < min_stripe_size)
1568                         continue;
1569
1570                 devices_info[i].dev = device;
1571                 devices_info[i].max_avail = avail_space;
1572
1573                 i++;
1574         }
1575
1576         nr_devices = i;
1577
1578         btrfs_descending_sort_devices(devices_info, nr_devices);
1579
1580         i = nr_devices - 1;
1581         avail_space = 0;
1582         while (nr_devices >= min_stripes) {
1583                 if (num_stripes > nr_devices)
1584                         num_stripes = nr_devices;
1585
1586                 if (devices_info[i].max_avail >= min_stripe_size) {
1587                         int j;
1588                         u64 alloc_size;
1589
1590                         avail_space += devices_info[i].max_avail * num_stripes;
1591                         alloc_size = devices_info[i].max_avail;
1592                         for (j = i + 1 - num_stripes; j <= i; j++)
1593                                 devices_info[j].max_avail -= alloc_size;
1594                 }
1595                 i--;
1596                 nr_devices--;
1597         }
1598
1599         kfree(devices_info);
1600         *free_bytes = avail_space;
1601         return 0;
1602 }
1603
1604 static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
1605 {
1606         struct btrfs_fs_info *fs_info = btrfs_sb(dentry->d_sb);
1607         struct btrfs_super_block *disk_super = fs_info->super_copy;
1608         struct list_head *head = &fs_info->space_info;
1609         struct btrfs_space_info *found;
1610         u64 total_used = 0;
1611         u64 total_free_data = 0;
1612         int bits = dentry->d_sb->s_blocksize_bits;
1613         __be32 *fsid = (__be32 *)fs_info->fsid;
1614         int ret;
1615
1616         /* holding chunk_muext to avoid allocating new chunks */
1617         mutex_lock(&fs_info->chunk_mutex);
1618         rcu_read_lock();
1619         list_for_each_entry_rcu(found, head, list) {
1620                 if (found->flags & BTRFS_BLOCK_GROUP_DATA) {
1621                         total_free_data += found->disk_total - found->disk_used;
1622                         total_free_data -=
1623                                 btrfs_account_ro_block_groups_free_space(found);
1624                 }
1625
1626                 total_used += found->disk_used;
1627         }
1628         rcu_read_unlock();
1629
1630         buf->f_namelen = BTRFS_NAME_LEN;
1631         buf->f_blocks = btrfs_super_total_bytes(disk_super) >> bits;
1632         buf->f_bfree = buf->f_blocks - (total_used >> bits);
1633         buf->f_bsize = dentry->d_sb->s_blocksize;
1634         buf->f_type = BTRFS_SUPER_MAGIC;
1635         buf->f_bavail = total_free_data;
1636         ret = btrfs_calc_avail_data_space(fs_info->tree_root, &total_free_data);
1637         if (ret) {
1638                 mutex_unlock(&fs_info->chunk_mutex);
1639                 return ret;
1640         }
1641         buf->f_bavail += total_free_data;
1642         buf->f_bavail = buf->f_bavail >> bits;
1643         mutex_unlock(&fs_info->chunk_mutex);
1644
1645         /* We treat it as constant endianness (it doesn't matter _which_)
1646            because we want the fsid to come out the same whether mounted
1647            on a big-endian or little-endian host */
1648         buf->f_fsid.val[0] = be32_to_cpu(fsid[0]) ^ be32_to_cpu(fsid[2]);
1649         buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]);
1650         /* Mask in the root object ID too, to disambiguate subvols */
1651         buf->f_fsid.val[0] ^= BTRFS_I(dentry->d_inode)->root->objectid >> 32;
1652         buf->f_fsid.val[1] ^= BTRFS_I(dentry->d_inode)->root->objectid;
1653
1654         return 0;
1655 }
1656
1657 static void btrfs_kill_super(struct super_block *sb)
1658 {
1659         struct btrfs_fs_info *fs_info = btrfs_sb(sb);
1660         kill_anon_super(sb);
1661         free_fs_info(fs_info);
1662 }
1663
1664 static struct file_system_type btrfs_fs_type = {
1665         .owner          = THIS_MODULE,
1666         .name           = "btrfs",
1667         .mount          = btrfs_mount,
1668         .kill_sb        = btrfs_kill_super,
1669         .fs_flags       = FS_REQUIRES_DEV,
1670 };
1671 MODULE_ALIAS_FS("btrfs");
1672
1673 /*
1674  * used by btrfsctl to scan devices when no FS is mounted
1675  */
1676 static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
1677                                 unsigned long arg)
1678 {
1679         struct btrfs_ioctl_vol_args *vol;
1680         struct btrfs_fs_devices *fs_devices;
1681         int ret = -ENOTTY;
1682
1683         if (!capable(CAP_SYS_ADMIN))
1684                 return -EPERM;
1685
1686         vol = memdup_user((void __user *)arg, sizeof(*vol));
1687         if (IS_ERR(vol))
1688                 return PTR_ERR(vol);
1689
1690         switch (cmd) {
1691         case BTRFS_IOC_SCAN_DEV:
1692                 ret = btrfs_scan_one_device(vol->name, FMODE_READ,
1693                                             &btrfs_fs_type, &fs_devices);
1694                 break;
1695         case BTRFS_IOC_DEVICES_READY:
1696                 ret = btrfs_scan_one_device(vol->name, FMODE_READ,
1697                                             &btrfs_fs_type, &fs_devices);
1698                 if (ret)
1699                         break;
1700                 ret = !(fs_devices->num_devices == fs_devices->total_devices);
1701                 break;
1702         }
1703
1704         kfree(vol);
1705         return ret;
1706 }
1707
1708 static int btrfs_freeze(struct super_block *sb)
1709 {
1710         struct btrfs_trans_handle *trans;
1711         struct btrfs_root *root = btrfs_sb(sb)->tree_root;
1712
1713         trans = btrfs_attach_transaction_barrier(root);
1714         if (IS_ERR(trans)) {
1715                 /* no transaction, don't bother */
1716                 if (PTR_ERR(trans) == -ENOENT)
1717                         return 0;
1718                 return PTR_ERR(trans);
1719         }
1720         return btrfs_commit_transaction(trans, root);
1721 }
1722
1723 static int btrfs_unfreeze(struct super_block *sb)
1724 {
1725         return 0;
1726 }
1727
1728 static int btrfs_show_devname(struct seq_file *m, struct dentry *root)
1729 {
1730         struct btrfs_fs_info *fs_info = btrfs_sb(root->d_sb);
1731         struct btrfs_fs_devices *cur_devices;
1732         struct btrfs_device *dev, *first_dev = NULL;
1733         struct list_head *head;
1734         struct rcu_string *name;
1735
1736         mutex_lock(&fs_info->fs_devices->device_list_mutex);
1737         cur_devices = fs_info->fs_devices;
1738         while (cur_devices) {
1739                 head = &cur_devices->devices;
1740                 list_for_each_entry(dev, head, dev_list) {
1741                         if (dev->missing)
1742                                 continue;
1743                         if (!first_dev || dev->devid < first_dev->devid)
1744                                 first_dev = dev;
1745                 }
1746                 cur_devices = cur_devices->seed;
1747         }
1748
1749         if (first_dev) {
1750                 rcu_read_lock();
1751                 name = rcu_dereference(first_dev->name);
1752                 seq_escape(m, name->str, " \t\n\\");
1753                 rcu_read_unlock();
1754         } else {
1755                 WARN_ON(1);
1756         }
1757         mutex_unlock(&fs_info->fs_devices->device_list_mutex);
1758         return 0;
1759 }
1760
1761 static const struct super_operations btrfs_super_ops = {
1762         .drop_inode     = btrfs_drop_inode,
1763         .evict_inode    = btrfs_evict_inode,
1764         .put_super      = btrfs_put_super,
1765         .sync_fs        = btrfs_sync_fs,
1766         .show_options   = btrfs_show_options,
1767         .show_devname   = btrfs_show_devname,
1768         .write_inode    = btrfs_write_inode,
1769         .alloc_inode    = btrfs_alloc_inode,
1770         .destroy_inode  = btrfs_destroy_inode,
1771         .statfs         = btrfs_statfs,
1772         .remount_fs     = btrfs_remount,
1773         .freeze_fs      = btrfs_freeze,
1774         .unfreeze_fs    = btrfs_unfreeze,
1775 };
1776
1777 static const struct file_operations btrfs_ctl_fops = {
1778         .unlocked_ioctl  = btrfs_control_ioctl,
1779         .compat_ioctl = btrfs_control_ioctl,
1780         .owner   = THIS_MODULE,
1781         .llseek = noop_llseek,
1782 };
1783
1784 static struct miscdevice btrfs_misc = {
1785         .minor          = BTRFS_MINOR,
1786         .name           = "btrfs-control",
1787         .fops           = &btrfs_ctl_fops
1788 };
1789
1790 MODULE_ALIAS_MISCDEV(BTRFS_MINOR);
1791 MODULE_ALIAS("devname:btrfs-control");
1792
1793 static int btrfs_interface_init(void)
1794 {
1795         return misc_register(&btrfs_misc);
1796 }
1797
1798 static void btrfs_interface_exit(void)
1799 {
1800         if (misc_deregister(&btrfs_misc) < 0)
1801                 printk(KERN_INFO "BTRFS: misc_deregister failed for control device\n");
1802 }
1803
1804 static void btrfs_print_info(void)
1805 {
1806         printk(KERN_INFO "Btrfs loaded"
1807 #ifdef CONFIG_BTRFS_DEBUG
1808                         ", debug=on"
1809 #endif
1810 #ifdef CONFIG_BTRFS_ASSERT
1811                         ", assert=on"
1812 #endif
1813 #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
1814                         ", integrity-checker=on"
1815 #endif
1816                         "\n");
1817 }
1818
1819 static int btrfs_run_sanity_tests(void)
1820 {
1821         int ret;
1822
1823         ret = btrfs_init_test_fs();
1824         if (ret)
1825                 return ret;
1826
1827         ret = btrfs_test_free_space_cache();
1828         if (ret)
1829                 goto out;
1830         ret = btrfs_test_extent_buffer_operations();
1831         if (ret)
1832                 goto out;
1833         ret = btrfs_test_extent_io();
1834         if (ret)
1835                 goto out;
1836         ret = btrfs_test_inodes();
1837 out:
1838         btrfs_destroy_test_fs();
1839         return ret;
1840 }
1841
1842 static int __init init_btrfs_fs(void)
1843 {
1844         int err;
1845
1846         err = btrfs_init_sysfs();
1847         if (err)
1848                 return err;
1849
1850         btrfs_init_compress();
1851
1852         err = btrfs_init_cachep();
1853         if (err)
1854                 goto free_compress;
1855
1856         err = extent_io_init();
1857         if (err)
1858                 goto free_cachep;
1859
1860         err = extent_map_init();
1861         if (err)
1862                 goto free_extent_io;
1863
1864         err = ordered_data_init();
1865         if (err)
1866                 goto free_extent_map;
1867
1868         err = btrfs_delayed_inode_init();
1869         if (err)
1870                 goto free_ordered_data;
1871
1872         err = btrfs_auto_defrag_init();
1873         if (err)
1874                 goto free_delayed_inode;
1875
1876         err = btrfs_delayed_ref_init();
1877         if (err)
1878                 goto free_auto_defrag;
1879
1880         err = btrfs_prelim_ref_init();
1881         if (err)
1882                 goto free_prelim_ref;
1883
1884         err = btrfs_interface_init();
1885         if (err)
1886                 goto free_delayed_ref;
1887
1888         btrfs_init_lockdep();
1889
1890         btrfs_print_info();
1891
1892         err = btrfs_run_sanity_tests();
1893         if (err)
1894                 goto unregister_ioctl;
1895
1896         err = register_filesystem(&btrfs_fs_type);
1897         if (err)
1898                 goto unregister_ioctl;
1899
1900         return 0;
1901
1902 unregister_ioctl:
1903         btrfs_interface_exit();
1904 free_prelim_ref:
1905         btrfs_prelim_ref_exit();
1906 free_delayed_ref:
1907         btrfs_delayed_ref_exit();
1908 free_auto_defrag:
1909         btrfs_auto_defrag_exit();
1910 free_delayed_inode:
1911         btrfs_delayed_inode_exit();
1912 free_ordered_data:
1913         ordered_data_exit();
1914 free_extent_map:
1915         extent_map_exit();
1916 free_extent_io:
1917         extent_io_exit();
1918 free_cachep:
1919         btrfs_destroy_cachep();
1920 free_compress:
1921         btrfs_exit_compress();
1922         btrfs_exit_sysfs();
1923         return err;
1924 }
1925
1926 static void __exit exit_btrfs_fs(void)
1927 {
1928         btrfs_destroy_cachep();
1929         btrfs_delayed_ref_exit();
1930         btrfs_auto_defrag_exit();
1931         btrfs_delayed_inode_exit();
1932         btrfs_prelim_ref_exit();
1933         ordered_data_exit();
1934         extent_map_exit();
1935         extent_io_exit();
1936         btrfs_interface_exit();
1937         unregister_filesystem(&btrfs_fs_type);
1938         btrfs_exit_sysfs();
1939         btrfs_cleanup_fs_uuids();
1940         btrfs_exit_compress();
1941 }
1942
1943 module_init(init_btrfs_fs)
1944 module_exit(exit_btrfs_fs)
1945
1946 MODULE_LICENSE("GPL");