mirror of
https://github.com/kdave/btrfs-progs
synced 2025-05-06 09:57:55 +00:00
The function btrfs_record_file_extent() has extra handling that's specific to convert, like allowing the range to be split by block group boundary and image file extent boundary. All of these split can only lead to corruption for non-converted fs. As the only caller out of btrfs-convert is rootdir, which expects the file extent item insert to respect the reserved data extent, and never to be split. Thankfully this is not going to cause huge problem, as btrfs_record_file_extent() has extra checks if the data extent overlaps with any existing one, and if it doesn't the handling will be the same as the kernel. But to avoid abuse, change btrfs_record_file_extent() by: - Rename it to btrfs_convert_file_extent() And add extra comments on that it is specific to btrfs-convert. - Move it to convert/common.[ch] - Introduce a helper insert_reserved_file_extent() for rootdir.c Signed-off-by: Qu Wenruo <wqu@suse.com>
32 lines
972 B
C
32 lines
972 B
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License v2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 021110-1307, USA.
|
|
*/
|
|
|
|
#ifndef _EXTENT_TREE_UTILS_H_
|
|
#define _EXTENT_TREE_UTILS_H_
|
|
|
|
#include "kerncompat.h"
|
|
#include "kernel-lib/bitops.h"
|
|
|
|
struct btrfs_inode_item;
|
|
struct btrfs_path;
|
|
struct btrfs_root;
|
|
struct btrfs_trans_handle;
|
|
|
|
int btrfs_next_extent_item(struct btrfs_root *root, struct btrfs_path *path,
|
|
u64 max_objectid);
|
|
|
|
#endif
|