- fix a bug when mkfs'ing a file (rhbz# 871778)
This commit is contained in:
parent
051fd1d0e7
commit
96158b59ff
|
@ -1,6 +1,25 @@
|
||||||
diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/Makefile.patch4 btrfs-progs-0.20.rc1.20121017git91d9eec/Makefile
|
From fe4e9b20d9ffffbb6aade4083caa71d65f16230a Mon Sep 17 00:00:00 2001
|
||||||
--- btrfs-progs-0.20.rc1.20121017git91d9eec/Makefile.patch4 2012-10-04 20:35:31.000000000 -0400
|
From: Josef Bacik <jbacik@fusionio.com>
|
||||||
+++ btrfs-progs-0.20.rc1.20121017git91d9eec/Makefile 2012-10-17 13:48:02.331453645 -0400
|
Date: Fri, 20 Jul 2012 11:09:43 -0400
|
||||||
|
Subject: [PATCH] Btrfs-progs: detect if the disk we are formatting is a ssd
|
||||||
|
|
||||||
|
SSD's do not gain anything by having metadata DUP turned on. The underlying
|
||||||
|
file system that is a part of all SSD's could easily map duplicate metadat
|
||||||
|
blocks into the same erase block which effectively eliminates the benefit of
|
||||||
|
duplicating the metadata on disk. So detect if we are formatting a single
|
||||||
|
SSD drive and if we are do not use DUP. Thanks,
|
||||||
|
|
||||||
|
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
|
||||||
|
---
|
||||||
|
Makefile | 2 +-
|
||||||
|
man/mkfs.btrfs.8.in | 5 +++-
|
||||||
|
mkfs.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||||
|
3 files changed, 65 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Makefile b/Makefile
|
||||||
|
index 4894903..c7fd97d 100644
|
||||||
|
--- a/Makefile
|
||||||
|
+++ b/Makefile
|
||||||
@@ -67,7 +67,7 @@ btrfsck: $(objects) btrfsck.o
|
@@ -67,7 +67,7 @@ btrfsck: $(objects) btrfsck.o
|
||||||
$(CC) $(CFLAGS) -o btrfsck btrfsck.o $(objects) $(LDFLAGS) $(LIBS)
|
$(CC) $(CFLAGS) -o btrfsck btrfsck.o $(objects) $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
@ -10,9 +29,10 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/Makefile.patch4 btrfs-progs-0.2
|
||||||
|
|
||||||
btrfs-debug-tree: $(objects) debug-tree.o
|
btrfs-debug-tree: $(objects) debug-tree.o
|
||||||
$(CC) $(CFLAGS) -o btrfs-debug-tree $(objects) debug-tree.o $(LDFLAGS) $(LIBS)
|
$(CC) $(CFLAGS) -o btrfs-debug-tree $(objects) debug-tree.o $(LDFLAGS) $(LIBS)
|
||||||
diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/man/mkfs.btrfs.8.in.patch4 btrfs-progs-0.20.rc1.20121017git91d9eec/man/mkfs.btrfs.8.in
|
diff --git a/man/mkfs.btrfs.8.in b/man/mkfs.btrfs.8.in
|
||||||
--- btrfs-progs-0.20.rc1.20121017git91d9eec/man/mkfs.btrfs.8.in.patch4 2012-10-04 20:35:31.000000000 -0400
|
index 72025ed..b7bcc1b 100644
|
||||||
+++ btrfs-progs-0.20.rc1.20121017git91d9eec/man/mkfs.btrfs.8.in 2012-10-17 13:48:02.331453645 -0400
|
--- a/man/mkfs.btrfs.8.in
|
||||||
|
+++ b/man/mkfs.btrfs.8.in
|
||||||
@@ -47,7 +47,10 @@ Specify a label for the filesystem.
|
@@ -47,7 +47,10 @@ Specify a label for the filesystem.
|
||||||
.TP
|
.TP
|
||||||
\fB\-m\fR, \fB\-\-metadata \fIprofile\fR
|
\fB\-m\fR, \fB\-\-metadata \fIprofile\fR
|
||||||
|
@ -25,9 +45,10 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/man/mkfs.btrfs.8.in.patch4 btrf
|
||||||
.TP
|
.TP
|
||||||
\fB\-M\fR, \fB\-\-mixed\fR
|
\fB\-M\fR, \fB\-\-mixed\fR
|
||||||
Mix data and metadata chunks together for more efficient space
|
Mix data and metadata chunks together for more efficient space
|
||||||
diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c
|
diff --git a/mkfs.c b/mkfs.c
|
||||||
--- btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 2012-10-17 13:48:02.329453660 -0400
|
index 47f0c9c..72f10fa 100644
|
||||||
+++ btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c 2012-10-17 13:53:36.954806793 -0400
|
--- a/mkfs.c
|
||||||
|
+++ b/mkfs.c
|
||||||
@@ -37,6 +37,7 @@
|
@@ -37,6 +37,7 @@
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -36,7 +57,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
#include "kerncompat.h"
|
#include "kerncompat.h"
|
||||||
#include "ctree.h"
|
#include "ctree.h"
|
||||||
#include "disk-io.h"
|
#include "disk-io.h"
|
||||||
@@ -234,7 +235,7 @@ static int create_one_raid_group(struct
|
@@ -234,7 +235,7 @@ static int create_one_raid_group(struct btrfs_trans_handle *trans,
|
||||||
static int create_raid_groups(struct btrfs_trans_handle *trans,
|
static int create_raid_groups(struct btrfs_trans_handle *trans,
|
||||||
struct btrfs_root *root, u64 data_profile,
|
struct btrfs_root *root, u64 data_profile,
|
||||||
int data_profile_opt, u64 metadata_profile,
|
int data_profile_opt, u64 metadata_profile,
|
||||||
|
@ -45,7 +66,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
{
|
{
|
||||||
u64 num_devices = btrfs_super_num_devices(&root->fs_info->super_copy);
|
u64 num_devices = btrfs_super_num_devices(&root->fs_info->super_copy);
|
||||||
u64 allowed;
|
u64 allowed;
|
||||||
@@ -245,8 +246,12 @@ static int create_raid_groups(struct btr
|
@@ -245,8 +246,12 @@ static int create_raid_groups(struct btrfs_trans_handle *trans,
|
||||||
* For mixed groups defaults are single/single.
|
* For mixed groups defaults are single/single.
|
||||||
*/
|
*/
|
||||||
if (!metadata_profile_opt && !mixed) {
|
if (!metadata_profile_opt && !mixed) {
|
||||||
|
@ -59,7 +80,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
}
|
}
|
||||||
if (!data_profile_opt && !mixed) {
|
if (!data_profile_opt && !mixed) {
|
||||||
data_profile = (num_devices > 1) ?
|
data_profile = (num_devices > 1) ?
|
||||||
@@ -1215,6 +1220,49 @@ static int check_leaf_or_node_size(u32 s
|
@@ -1222,6 +1227,54 @@ static int check_leaf_or_node_size(u32 size, u32 sectorsize)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +103,12 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
+ * reason on F17 at least so we'll do this trickery
|
+ * reason on F17 at least so we'll do this trickery
|
||||||
+ */
|
+ */
|
||||||
+ disk = blkid_probe_get_wholedisk_devno(probe);
|
+ disk = blkid_probe_get_wholedisk_devno(probe);
|
||||||
|
+ if (!disk)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
+ devname = blkid_devno_to_devname(disk);
|
+ devname = blkid_devno_to_devname(disk);
|
||||||
|
+ if (!devname)
|
||||||
|
+ return 0;
|
||||||
+
|
+
|
||||||
+ dev = strrchr(devname, '/');
|
+ dev = strrchr(devname, '/');
|
||||||
+ dev++;
|
+ dev++;
|
||||||
|
@ -109,7 +135,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
int main(int ac, char **av)
|
int main(int ac, char **av)
|
||||||
{
|
{
|
||||||
char *file;
|
char *file;
|
||||||
@@ -1241,6 +1289,7 @@ int main(int ac, char **av)
|
@@ -1248,6 +1301,7 @@ int main(int ac, char **av)
|
||||||
int data_profile_opt = 0;
|
int data_profile_opt = 0;
|
||||||
int metadata_profile_opt = 0;
|
int metadata_profile_opt = 0;
|
||||||
int nodiscard = 0;
|
int nodiscard = 0;
|
||||||
|
@ -117,7 +143,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
|
|
||||||
char *source_dir = NULL;
|
char *source_dir = NULL;
|
||||||
int source_dir_set = 0;
|
int source_dir_set = 0;
|
||||||
@@ -1360,6 +1409,9 @@ int main(int ac, char **av)
|
@@ -1367,6 +1421,9 @@ int main(int ac, char **av)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,7 +153,7 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
if (mixed) {
|
if (mixed) {
|
||||||
if (metadata_profile != data_profile) {
|
if (metadata_profile != data_profile) {
|
||||||
fprintf(stderr, "With mixed block groups data and metadata "
|
fprintf(stderr, "With mixed block groups data and metadata "
|
||||||
@@ -1445,7 +1497,7 @@ raid_groups:
|
@@ -1452,7 +1509,7 @@ raid_groups:
|
||||||
if (!source_dir_set) {
|
if (!source_dir_set) {
|
||||||
ret = create_raid_groups(trans, root, data_profile,
|
ret = create_raid_groups(trans, root, data_profile,
|
||||||
data_profile_opt, metadata_profile,
|
data_profile_opt, metadata_profile,
|
||||||
|
@ -136,3 +162,6 @@ diff -up btrfs-progs-0.20.rc1.20121017git91d9eec/mkfs.c.patch4 btrfs-progs-0.20.
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.7.6
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Name: btrfs-progs
|
Name: btrfs-progs
|
||||||
Version: 0.20.rc1.20121017git91d9eec
|
Version: 0.20.rc1.20121017git91d9eec
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: Userspace programs for btrfs
|
Summary: Userspace programs for btrfs
|
||||||
|
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
|
@ -68,6 +68,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||||
%{_mandir}/man8/btrfs.8.gz
|
%{_mandir}/man8/btrfs.8.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Nov 1 2012 Josef Bacik <josef@toxicpanda.com> 0.20.rc1.20121017git91d9eec-2
|
||||||
|
- fix a bug when mkfs'ing a file (rhbz# 871778)
|
||||||
|
|
||||||
* Wed Oct 17 2012 Josef Bacik <josef@toxicpanda.com> 0.20.rc1.20121017git91d9eec-1
|
* Wed Oct 17 2012 Josef Bacik <josef@toxicpanda.com> 0.20.rc1.20121017git91d9eec-1
|
||||||
- update to latest btrfs-progs
|
- update to latest btrfs-progs
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue