TRUE, /* supports_online_resize_shrink */
},
{
+ "btrfs", /* id */
+ "BTRFS", /* name */
+ TRUE, /* supports_unix_owners */
+ TRUE, /* can_mount */
+ TRUE, /* can_create */
+ 16, /* max_label_len */
+ FALSE, /* supports_label_rename; TODO: this still needs a tool */
+ FALSE, /* supports_online_label_rename*/
+ TRUE, /* supports_fsck */
+ FALSE, /* supports_online_fsck */
+ TRUE, /* supports_resize_enlarge */
+ FALSE, /* supports_online_resize_enlarge */
+ TRUE, /* supports_resize_shrink */
+ FALSE, /* supports_online_resize_shrink */
+ },
+ {
"xfs", /* id */
"XFS", /* name */
TRUE, /* supports_unix_owners */
command_line = g_string_free (s, FALSE);
}
+ else if (strcmp (fstype, "btrfs") == 0)
+ {
+
+ s = g_string_new ("mkfs.btrfs");
+ for (n = 0; options[n] != NULL; n++)
+ {
+ if (g_str_has_prefix (options[n], "label="))
+ {
+ label = strdup (options[n] + sizeof("label=") - 1);
+ if (!validate_and_escape_label (&label, 12))
+ {
+ g_string_free (s, TRUE);
+ goto out;
+ }
+ g_string_append_printf (s, " -L \"%s\"", label);
+ g_free (label);
+ label = NULL;
+ }
+ else if (g_str_has_prefix (options[n], "take_ownership_uid="))
+ {
+ take_ownership_uid = strtol (options[n] + sizeof("take_ownership_uid=") - 1, &endp, 10);
+ if (endp == NULL || *endp != '\0')
+ {
+ g_printerr ("option %s is malformed\n", options[n]);
+ goto out;
+ }
+ }
+ else if (g_str_has_prefix (options[n], "take_ownership_gid="))
+ {
+ take_ownership_gid = strtol (options[n] + sizeof("take_ownership_gid=") - 1, &endp, 10);
+ if (endp == NULL || *endp != '\0')
+ {
+ g_printerr ("option %s is malformed\n", options[n]);
+ goto out;
+ }
+ }
+ else
+ {
+ g_printerr ("option %s not supported\n", options[n]);
+ goto out;
+ }
+ }
+ g_string_append_printf (s, " %s", device);
+ command_line = g_string_free (s, FALSE);
+
+ }
else if (strcmp (fstype, "xfs") == 0)
{
import re
NUM_VDEV = 3 # number of virtual test devices that we need
-VDEV_SIZE = 160000000 # size of virtual test devices
+VDEV_SIZE = 300000000 # size of virtual test devices
test_md_dev = '/dev/md125'
# Those file systems are known to have a broken handling of permissions, in
'''fs: ext4'''
self._do_fs_check('ext4')
+ def test_btrfs(self):
+ '''fs: btrfs'''
+ self._do_fs_check('btrfs')
+
def test_minix(self):
'''fs: minix'''
self._do_fs_check('minix')
self.assertEqual(fs[3], type != 'swap') # can_mount
self.assert_(fs[4]) # can_create
supports_label_rename = fs[6]
- # minix does not support labels; EXFAIL: swap and nilfs2 don't have a program for it
- self.assertEqual(supports_label_rename, type not in ('nilfs2', 'minix', 'swap'))
+ # minix does not support labels; EXFAIL: swap, btrfs, nilfs2 don't have a program for it
+ self.assertEqual(supports_label_rename, type not in ('nilfs2', 'btrfs', 'minix', 'swap'))
break
else:
self.fail('KnownFilesystems does not contain ' + type)