When freeing root block of a tree, btrfs_free_extent' parameter
'ref_generation' is from root block itseft. When freeing non-root
block, 'ref_generation' is from its parent. so when converting a
non-root block to root block, we must guarantee its generation is
equal to its parent's generation.
The first problem is that these SETGET macros lose typing information,
and therefore can't see the 'packed' attribute and therefore take
unaligned access SIGBUS signals on sparc64 when trying to derefernce
the member.
The next problem is a similar issue in btrfs_name_hash(). This gets
passed things like &key.offset which is a member of a packed
structure, losing this packed'ness information btrfs_name_hash()
performs a potentially unaligned memory access, again resulting in a
SIGBUS.
Add -D_FORTIFY_SOURCE=2 to the makeflags. It has been very helpful
in finding problems.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Using strncpy avoids a 1 byte overflow into the next field
of the struct. The overflow is harmless, but does
trip automated tools.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
btrfs_find_free_objectid may return a used objectid due to arithmetic
underflow. This bug may happen when parameter 'root' is tree root, so
it may cause serious problems when creating snapshot or sub-volume.
Hello,
This patch fixes two newly found bugs in the converter. The important
one is in create_ext2_image, sub-volume root directory's size not
properly updated after creating the ext2 image file. The other one is
a small bug in xattr support codes. In addition to the fixes, this
patch moves the 'if mounted' check to main() function.
Regards
YZ
---
This patch adds rollback support for the converter, the converter can
roll back a conversion if the image file haven't been modified. In
addition, I rearrange some codes in convert.c and add a few comments.
This patch ports extent buffer to btrfs-progs. extent_map.c contains a
simplified extent map tree and functions that manipulate/manage extent
buffer. extent state related codes are based on corresponding codes in
kernel module, codes that manage extent buffer are from disk-io.c.
Split CFLAGS into CFLAGS (user part) and AM_CFLAGS (not-so-user part;
variable name taken from automake, but otherwise no relation).
Also add LDFLAGS.
This allows me to use `make CFLAGS="-O2 -fPIE" LDFLAGS="-pie"` without
dropping the other important (AM_CFLAGS) flags.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
btrfs-progs/Makefile | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)