linux/fs/btrfs
Stefan Behrens 292fd7fc39 Btrfs: don't allow degraded mount if too many devices are missing
The current behavior is to allow mounting or remounting a filesystem
writeable in degraded mode if at least one writeable device is
present.
The next failed write access to a missing device which is above
the tolerance of the configured level of redundancy results in an
read-only enforcement. Even without this, the next time
barrier_all_devices() is called and more devices are missing than
tolerable, the switch to read-only mode takes place.

In order to behave predictably and to provide proper feedback to
the user at mount time, this patch compares the number of missing
devices with the number of devices that are tolerated to be missing
according to the configured RAID level. If more devices are missing
than tolerated, e.g. if two devices are missing in case of RAID1,
only a read-only mount and remount is allowed.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2012-12-12 17:15:18 -05:00
..
acl.c userns: Pass a userns parameter into posix_acl_to_xattr and posix_acl_from_xattr 2012-09-18 01:01:35 -07:00
async-thread.c Btrfs: call the ordered free operation without any locks held 2012-07-25 16:15:07 -04:00
async-thread.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
backref.c Merge branch 'for-chris-fixed' of git://git.jan-o-sch.net/btrfs-unstable 2012-10-25 15:53:10 -04:00
backref.h Btrfs: extended inode refs support for send mechanism 2012-10-25 15:45:16 -04:00
btrfs_inode.h Btrfs: fix a bug in checking whether a inode is already in log 2012-10-01 15:19:06 -04:00
check-integrity.c Btrfs: detect corrupted filesystem after write I/O errors 2012-10-09 09:20:10 -04:00
check-integrity.h Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h
compression.c Btrfs: cleanup pages properly when ENOMEM in compression 2012-10-09 09:20:25 -04:00
compression.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ctree.c Btrfs: cleanup unused arguments 2012-12-11 13:31:35 -05:00
ctree.h Btrfs: Fix typo in fs/btrfs 2012-12-12 17:15:17 -05:00
delayed-inode.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
delayed-inode.h Btrfs: flush delayed inodes if we're short on space 2012-07-23 15:41:40 -04:00
delayed-ref.c Btrfs: allow delayed refs to be merged 2012-08-28 16:53:38 -04:00
delayed-ref.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-10-01 09:06:36 -07:00
dir-item.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
disk-io.c Btrfs: don't allow degraded mount if too many devices are missing 2012-12-12 17:15:18 -05:00
disk-io.h Btrfs: make filesystem read-only when submitting barrier fails 2012-10-09 09:20:19 -04:00
export.c ->encode_fh() API change 2012-05-29 23:28:33 -04:00
export.h
extent_io.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2012-10-26 09:34:04 -07:00
extent_io.h btrfs: move inline function code to header file 2012-10-09 09:15:43 -04:00
extent_map.c Btrfs: do not hold the write_lock on the extent tree while logging 2012-10-04 09:39:58 -04:00
extent_map.h Btrfs: do not hold the write_lock on the extent tree while logging 2012-10-04 09:39:58 -04:00
extent-tree.c Btrfs: fill the global reserve when unpinning space 2012-12-11 13:31:36 -05:00
file-item.c btrfs: fix min csum item size warnings in 32bit 2012-10-09 09:15:39 -04:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2012-10-10 10:49:20 +09:00
free-space-cache.c Btrfs: fix unnecessary while loop when search the free space, cache 2012-12-11 13:31:33 -05:00
free-space-cache.h
hash.h btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-item.c btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h
inode.c Btrfs: make delalloc inodes be flushed by multi-task 2012-12-11 13:31:37 -05:00
ioctl.c Btrfs: Remove the invalid shrink size check up from btrfs_shrink_dev() 2012-12-12 17:15:16 -05:00
ioctl.h Merge branch 'send-v2' of git://github.com/ablock84/linux-btrfs into for-linus 2012-07-25 19:19:10 -04:00
Kconfig Btrfs: add config option to enable btrfs integrity check 2011-12-21 19:14:16 +01:00
locking.c Btrfs: fix a misplaced address operator in a condition 2012-08-28 16:53:23 -04:00
locking.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
lzo.c btrfs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:21 +08:00
Makefile Merge branch 'send-v2' of git://github.com/ablock84/linux-btrfs into for-linus 2012-07-25 19:19:10 -04:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
ordered-data.h Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
orphan.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
print-tree.c Btrfs: read device stats on mount, write modified ones during commit 2012-05-30 10:23:41 -04:00
print-tree.h
qgroup.c Btrfs: fix memory leak in btrfs_quota_enable() 2012-10-25 15:45:43 -04:00
rcu-string.h Btrfs: use rcu to protect device->name 2012-06-14 21:29:16 -04:00
reada.c btrfs: reada_extent doesn't need kref for refcount 2012-10-02 21:35:55 -04:00
relocation.c Btrfs: make delalloc inodes be flushed by multi-task 2012-12-11 13:31:37 -05:00
root-tree.c btrfs: move transaction aborts to the point of failure 2012-10-08 20:09:02 -04:00
scrub.c btrfs: Kill some bi_idx references 2012-10-01 15:19:21 -04:00
send.c Btrfs: Send: preserve ownership (uid and gid) also for symlinks. 2012-10-25 15:47:31 -04:00
send.h Btrfs: write_buf is now callable outside send.c 2012-10-04 09:39:55 -04:00
struct-funcs.c Btrfs: rewrite BTRFS_SETGET_FUNCS 2012-07-23 16:28:06 -04:00
super.c Btrfs: don't allow degraded mount if too many devices are missing 2012-12-12 17:15:18 -05:00
sysfs.c
transaction.c Btrfs: make ordered operations be handled by multi-task 2012-12-11 13:31:37 -05:00
transaction.h Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
tree-defrag.c
tree-log.c btrfs: Fix compilation with user namespace support enabled 2012-10-12 15:01:42 -07:00
tree-log.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ulist.c Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
ulist.h Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
version.h
volumes.c Btrfs: Fix typo in fs/btrfs 2012-12-12 17:15:17 -05:00
volumes.h Btrfs: revert checksum error statistic which can cause a BUG() 2012-08-28 16:53:39 -04:00
xattr.c Btrfs: use i_version instead of our own sequence 2012-05-30 10:23:27 -04:00
xattr.h
zlib.c btrfs: fix message printing 2012-10-09 09:19:57 -04:00