Discussion:
btrfs extent_state.private compiler warning (Re: Btrfs: cleanup the read failure record after write or when the inode is freeing)
(too old to reply)
Geert Uytterhoeven
2014-10-19 19:34:47 UTC
Permalink
Raw Message
On Sat, Oct 11, 2014 at 2:08 PM, Linux Kernel Mailing List
Gitweb: http://git.kernel.org/linus/;a=3Dcommit;h=3Df612496bca664=
bff6a09a99a9a7506410b6e876e
Commit: f612496bca664bff6a09a99a9a7506410b6e876e
Btrfs: cleanup the read failure record after write or when the in=
ode is freeing
After the data is written successfully, we should cleanup the rea=
d failure record
in that range because
- If we set data COW for the file, the range that the failure rec=
ord pointed to is
mapped to a new place, so it is invalid.
- If we set no data COW for the file, and if there is no error du=
ring writting,
the corrupted data is corrected, so the failure record can be r=
emoved. And if
some errors happen on the mirrors, we also needn't worry about =
it because the
failure record will be recreated if we read the same place agai=
n.
Sometimes, we may fail to correct the data, so the failure record=
s will be left
in the tree, we need free them when we free the inode or the memo=
ry leak happens.
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
+void btrfs_free_io_failure_record(struct inode *inode, u64 start, u6=
4 end)
+{
+ struct extent_io_tree *failure_tree =3D &BTRFS_I(inode)->io_f=
ailure_tree;
+ struct io_failure_record *failrec;
+ struct extent_state *state, *next;
+ failrec =3D (struct io_failure_record *)state->privat=
e;

On 32-bit:

fs/btrfs/extent_io.c: In function =E2=80=98btrfs_free_io_failure_record=
=E2=80=99:
fs/btrfs/extent_io.c:2166: warning: cast to pointer from integer of
different size

Is there any specific reason extend_state.private is "u64", and not
"unsigned long", or better "void *", or even better
"struct io_failure_record *"?

That would get rid of the (double) cast tricks.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ***@linux-=
m68k.org

In personal conversations with technical people, I call myself a hacker=
=2E But
when I'm talking to journalists I just say "programmer" or something li=
ke that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" =
in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...