[PATCH 5/8] fs/btrfs: Use ERR_CAST

2010-05-22 Thread Julia Lawall
From: Julia Lawall ju...@diku.dk

Use ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more
clear what is the purpose of the operation, which otherwise looks like a
no-op.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// smpl
@@
type T;
T x;
identifier f;
@@

T f (...) { +...
- ERR_PTR(PTR_ERR(x))
+ x
 ...+ }

@@
expression x;
@@

- ERR_PTR(PTR_ERR(x))
+ ERR_CAST(x)
// /smpl

Signed-off-by: Julia Lawall ju...@diku.dk

---
 fs/btrfs/extent_map.c |4 ++--
 fs/btrfs/super.c  |2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff -u -p a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -335,7 +335,7 @@ struct extent_map *lookup_extent_mapping
goto out;
}
if (IS_ERR(rb_node)) {
-   em = ERR_PTR(PTR_ERR(rb_node));
+   em = ERR_CAST(rb_node);
goto out;
}
em = rb_entry(rb_node, struct extent_map, rb_node);
@@ -384,7 +384,7 @@ struct extent_map *search_extent_mapping
goto out;
}
if (IS_ERR(rb_node)) {
-   em = ERR_PTR(PTR_ERR(rb_node));
+   em = ERR_CAST(rb_node);
goto out;
}
em = rb_entry(rb_node, struct extent_map, rb_node);
diff -u -p a/fs/btrfs/super.c b/fs/btrfs/super.c
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -378,7 +378,7 @@ static struct dentry *get_default_root(s
 find_root:
new_root = btrfs_read_fs_root_no_name(root-fs_info, location);
if (IS_ERR(new_root))
-   return ERR_PTR(PTR_ERR(new_root));
+   return ERR_CAST(new_root);
 
if (btrfs_root_refs(new_root-root_item) == 0)
return ERR_PTR(-ENOENT);
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/6] direct-io: do not merge logically non-contiguous requests

2010-05-22 Thread Josef Bacik
On Fri, May 21, 2010 at 06:47:36PM -0700, Mike Fedyk wrote:
 On Fri, May 21, 2010 at 10:03 AM, Josef Bacik jo...@redhat.com wrote:
  Btrfs cannot handle having logically non-contiguous requests submitted.  For
  example if you have
 
  Logical:  [0-4095][HOLE][8192-12287]
  Physical: [0-4095]      [4096-8191]
 
  Normally the DIO code would put these into the same BIO's.  The problem is 
  we
  need to know exactly what offset is associated with what BIO so we can do 
  our
  checksumming and unlocking properly, so putting them in the same BIO doesn't
  work.  So add another check where we submit the current BIO if the physical
  blocks are not contigous OR the logical blocks are not contiguous.
 
  Signed-off-by: Josef Bacik jo...@redhat.com
  ---
 
  V1-V2
  -Be more verbose in the in-code comment
 
   fs/direct-io.c |   20 ++--
   1 files changed, 18 insertions(+), 2 deletions(-)
 
 
 Btrfs has been pretty much self-contained (working well compiled
 against 2.6.32 for example).  Is there a way that this wouldn't just
 start silently breaking for people compiling the latest btrfs with
 dkms against older kernels?

Nope, you have to have these generic patches for DIO to work, so building btrfs
like this will stop working with earlier kernels.  Thanks,

Josef
--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html