mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-17 10:16:53 +00:00
btrfs-progs: sync file-item.h into progs
This patch syncs file-item.h into btrfs-progs. This carries with it an API change for btrfs_del_csums, which takes a root argument in the kernel, so all callsites have been updated accordingly. I didn't sync file-item.c because it carries with it a bunch of bio related helpers which are difficult to adapt to the kernel. Additionally there's a few helpers in the local copy of file-item.c that aren't in the kernel that are required for different tools. This requires more cleanups in both the kernel and progs in order to sync file-item.c, so for now just do file-item.h in order to pull things out of ctree.h. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c979ffd787
commit
f8efe9f724
@ -28,6 +28,7 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/extent_io.h"
|
#include "kernel-shared/extent_io.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
#include "common/help.h"
|
#include "common/help.h"
|
||||||
#include "common/extent-cache.h"
|
#include "common/extent-cache.h"
|
||||||
@ -1098,7 +1099,7 @@ static int delete_csum(struct btrfs_root *root, u64 bytenr, u64 bytes)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = btrfs_del_csums(trans, bytenr, bytes);
|
ret = btrfs_del_csums(trans, root, bytenr, bytes);
|
||||||
if (ret)
|
if (ret)
|
||||||
error("error deleting csums %d", ret);
|
error("error deleting csums %d", ret);
|
||||||
btrfs_commit_transaction(trans, root);
|
btrfs_commit_transaction(trans, root);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "kernel-shared/free-space-tree.h"
|
#include "kernel-shared/free-space-tree.h"
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
#include "check/common.h"
|
#include "check/common.h"
|
||||||
@ -465,6 +466,7 @@ int truncate_free_ino_items(struct btrfs_root *root)
|
|||||||
while (1) {
|
while (1) {
|
||||||
struct extent_buffer *leaf;
|
struct extent_buffer *leaf;
|
||||||
struct btrfs_file_extent_item *fi;
|
struct btrfs_file_extent_item *fi;
|
||||||
|
struct btrfs_root *csum_root;
|
||||||
struct btrfs_key found_key;
|
struct btrfs_key found_key;
|
||||||
u8 found_type;
|
u8 found_type;
|
||||||
|
|
||||||
@ -523,7 +525,10 @@ int truncate_free_ino_items(struct btrfs_root *root)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = btrfs_del_csums(trans, extent_disk_bytenr,
|
csum_root = btrfs_csum_root(trans->fs_info,
|
||||||
|
extent_disk_bytenr);
|
||||||
|
ret = btrfs_del_csums(trans, csum_root,
|
||||||
|
extent_disk_bytenr,
|
||||||
extent_num_bytes);
|
extent_num_bytes);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
btrfs_abort_transaction(trans, ret);
|
btrfs_abort_transaction(trans, ret);
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "kernel-shared/free-space-tree.h"
|
#include "kernel-shared/free-space-tree.h"
|
||||||
#include "kernel-shared/backref.h"
|
#include "kernel-shared/backref.h"
|
||||||
#include "kernel-shared/ulist.h"
|
#include "kernel-shared/ulist.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/defs.h"
|
#include "common/defs.h"
|
||||||
#include "common/extent-cache.h"
|
#include "common/extent-cache.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/backref.h"
|
#include "kernel-shared/backref.h"
|
||||||
#include "kernel-shared/compression.h"
|
#include "kernel-shared/compression.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
@ -1311,7 +1312,7 @@ static int fill_csum_tree_from_one_fs_root(struct btrfs_trans_handle *trans,
|
|||||||
if (type == BTRFS_FILE_EXTENT_PREALLOC) {
|
if (type == BTRFS_FILE_EXTENT_PREALLOC) {
|
||||||
start += btrfs_file_extent_offset(node, fi);
|
start += btrfs_file_extent_offset(node, fi);
|
||||||
len = btrfs_file_extent_num_bytes(node, fi);
|
len = btrfs_file_extent_num_bytes(node, fi);
|
||||||
ret = btrfs_del_csums(trans, start, len);
|
ret = btrfs_del_csums(trans, csum_root, start, len);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -1473,7 +1474,8 @@ static int remove_csum_for_file_extent(u64 ino, u64 offset, u64 rootid, void *ct
|
|||||||
btrfs_release_path(&path);
|
btrfs_release_path(&path);
|
||||||
|
|
||||||
/* Now delete the csum for the preallocated or nodatasum range */
|
/* Now delete the csum for the preallocated or nodatasum range */
|
||||||
ret = btrfs_del_csums(trans, disk_bytenr, disk_len);
|
root = btrfs_csum_root(fs_info, disk_bytenr);
|
||||||
|
ret = btrfs_del_csums(trans, root, disk_bytenr, disk_len);
|
||||||
out:
|
out:
|
||||||
btrfs_release_path(&path);
|
btrfs_release_path(&path);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "kernel-shared/backref.h"
|
#include "kernel-shared/backref.h"
|
||||||
#include "kernel-shared/compression.h"
|
#include "kernel-shared/compression.h"
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "kernel-shared/ctree.h"
|
#include "kernel-shared/ctree.h"
|
||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/extent_io.h"
|
#include "kernel-shared/extent_io.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
#include "common/help.h"
|
#include "common/help.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/extent_io.h"
|
#include "kernel-shared/extent_io.h"
|
||||||
#include "kernel-shared/compression.h"
|
#include "kernel-shared/compression.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
#include "common/help.h"
|
#include "common/help.h"
|
||||||
#include "common/open-utils.h"
|
#include "common/open-utils.h"
|
||||||
|
@ -99,6 +99,7 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "crypto/hash.h"
|
#include "crypto/hash.h"
|
||||||
#include "common/defs.h"
|
#include "common/defs.h"
|
||||||
#include "common/extent-cache.h"
|
#include "common/extent-cache.h"
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "kernel-lib/sizes.h"
|
#include "kernel-lib/sizes.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/extent-cache.h"
|
#include "common/extent-cache.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
#include "convert/common.h"
|
#include "convert/common.h"
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/extent_io.h"
|
#include "kernel-shared/extent_io.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/extent-cache.h"
|
#include "common/extent-cache.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/extent_io.h"
|
#include "kernel-shared/extent_io.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "crypto/crc32c.h"
|
#include "crypto/crc32c.h"
|
||||||
#include "crypto/hash.h"
|
#include "crypto/hash.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
|
@ -431,14 +431,6 @@ static inline u32 BTRFS_NODEPTRS_PER_EXTENT_BUFFER(const struct extent_buffer *e
|
|||||||
return BTRFS_LEAF_DATA_SIZE(eb->fs_info) / sizeof(struct btrfs_key_ptr);
|
return BTRFS_LEAF_DATA_SIZE(eb->fs_info) / sizeof(struct btrfs_key_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BTRFS_FILE_EXTENT_INLINE_DATA_START \
|
|
||||||
(offsetof(struct btrfs_file_extent_item, disk_bytenr))
|
|
||||||
static inline u32 BTRFS_MAX_INLINE_DATA_SIZE(const struct btrfs_fs_info *info)
|
|
||||||
{
|
|
||||||
return BTRFS_MAX_ITEM_SIZE(info) -
|
|
||||||
BTRFS_FILE_EXTENT_INLINE_DATA_START;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline u32 BTRFS_MAX_XATTR_SIZE(const struct btrfs_fs_info *info)
|
static inline u32 BTRFS_MAX_XATTR_SIZE(const struct btrfs_fs_info *info)
|
||||||
{
|
{
|
||||||
return BTRFS_MAX_ITEM_SIZE(info) - sizeof(struct btrfs_dir_item);
|
return BTRFS_MAX_ITEM_SIZE(info) - sizeof(struct btrfs_dir_item);
|
||||||
@ -719,19 +711,6 @@ static inline u8 *btrfs_dev_extent_chunk_tree_uuid(struct btrfs_dev_extent *dev)
|
|||||||
return (u8 *)((unsigned long)dev + ptr);
|
return (u8 *)((unsigned long)dev + ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long btrfs_file_extent_inline_start(struct
|
|
||||||
btrfs_file_extent_item *e)
|
|
||||||
{
|
|
||||||
unsigned long offset = (unsigned long)e;
|
|
||||||
offset += offsetof(struct btrfs_file_extent_item, disk_bytenr);
|
|
||||||
return offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline u32 btrfs_file_extent_calc_inline_size(u32 datasize)
|
|
||||||
{
|
|
||||||
return offsetof(struct btrfs_file_extent_item, disk_bytenr) + datasize;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline u64 btrfs_dev_stats_value(const struct extent_buffer *eb,
|
static inline u64 btrfs_dev_stats_value(const struct extent_buffer *eb,
|
||||||
const struct btrfs_dev_stats_item *ptr,
|
const struct btrfs_dev_stats_item *ptr,
|
||||||
int index)
|
int index)
|
||||||
@ -745,17 +724,6 @@ static inline u64 btrfs_dev_stats_value(const struct extent_buffer *eb,
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* this returns the number of bytes used by the item on disk, minus the
|
|
||||||
* size of any extent headers. If a file is compressed on disk, this is
|
|
||||||
* the compressed size
|
|
||||||
*/
|
|
||||||
static inline u32 btrfs_file_extent_inline_item_len(struct extent_buffer *eb,
|
|
||||||
int nr)
|
|
||||||
{
|
|
||||||
return btrfs_item_size(eb, nr) - BTRFS_FILE_EXTENT_INLINE_DATA_START;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* struct btrfs_ioctl_search_header */
|
/* struct btrfs_ioctl_search_header */
|
||||||
static inline u64 btrfs_search_header_transid(struct btrfs_ioctl_search_header *sh)
|
static inline u64 btrfs_search_header_transid(struct btrfs_ioctl_search_header *sh)
|
||||||
{
|
{
|
||||||
@ -1091,19 +1059,6 @@ int btrfs_del_inode_ref(struct btrfs_trans_handle *trans,
|
|||||||
struct btrfs_root *root, const char *name, int name_len,
|
struct btrfs_root *root, const char *name, int name_len,
|
||||||
u64 ino, u64 parent_ino, u64 *index);
|
u64 ino, u64 parent_ino, u64 *index);
|
||||||
|
|
||||||
/* file-item.c */
|
|
||||||
int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len);
|
|
||||||
int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,
|
|
||||||
struct btrfs_root *root,
|
|
||||||
u64 objectid, u64 pos, u64 offset,
|
|
||||||
u64 disk_num_bytes,
|
|
||||||
u64 num_bytes);
|
|
||||||
int btrfs_insert_inline_extent(struct btrfs_trans_handle *trans,
|
|
||||||
struct btrfs_root *root, u64 objectid,
|
|
||||||
u64 offset, const char *buffer, size_t size);
|
|
||||||
int btrfs_csum_file_block(struct btrfs_trans_handle *trans, u64 alloc_end,
|
|
||||||
u64 bytenr, char *data, size_t len);
|
|
||||||
|
|
||||||
/* uuid-tree.c, interface for mounted mounted filesystem */
|
/* uuid-tree.c, interface for mounted mounted filesystem */
|
||||||
int btrfs_lookup_uuid_subvol_item(int fd, const u8 *uuid, u64 *subvol_id);
|
int btrfs_lookup_uuid_subvol_item(int fd, const u8 *uuid, u64 *subvol_id);
|
||||||
int btrfs_lookup_uuid_received_subvol_item(int fd, const u8 *uuid,
|
int btrfs_lookup_uuid_received_subvol_item(int fd, const u8 *uuid,
|
||||||
|
@ -27,11 +27,12 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/print-tree.h"
|
#include "kernel-shared/print-tree.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "crypto/crc32c.h"
|
|
||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/free-space-cache.h"
|
#include "kernel-shared/free-space-cache.h"
|
||||||
#include "kernel-shared/free-space-tree.h"
|
#include "kernel-shared/free-space-tree.h"
|
||||||
#include "kernel-shared/zoned.h"
|
#include "kernel-shared/zoned.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
|
#include "crypto/crc32c.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
|
||||||
#define PENDING_EXTENT_INSERT 0
|
#define PENDING_EXTENT_INSERT 0
|
||||||
@ -2115,7 +2116,11 @@ static int __free_extent(struct btrfs_trans_handle *trans,
|
|||||||
btrfs_release_path(path);
|
btrfs_release_path(path);
|
||||||
|
|
||||||
if (is_data) {
|
if (is_data) {
|
||||||
ret = btrfs_del_csums(trans, bytenr, num_bytes);
|
struct btrfs_root *csum_root;
|
||||||
|
|
||||||
|
csum_root = btrfs_csum_root(trans->fs_info, bytenr);
|
||||||
|
ret = btrfs_del_csums(trans, csum_root, bytenr,
|
||||||
|
num_bytes);
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/print-tree.h"
|
#include "kernel-shared/print-tree.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "crypto/crc32c.h"
|
#include "crypto/crc32c.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
|
|
||||||
@ -400,7 +401,8 @@ static noinline int truncate_one_csum(struct btrfs_root *root,
|
|||||||
* deletes the csum items from the csum tree for a given
|
* deletes the csum items from the csum tree for a given
|
||||||
* range of bytes.
|
* range of bytes.
|
||||||
*/
|
*/
|
||||||
int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len)
|
int btrfs_del_csums(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
||||||
|
u64 bytenr, u64 len)
|
||||||
{
|
{
|
||||||
struct btrfs_path *path;
|
struct btrfs_path *path;
|
||||||
struct btrfs_key key;
|
struct btrfs_key key;
|
||||||
@ -410,7 +412,6 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len)
|
|||||||
int ret;
|
int ret;
|
||||||
u16 csum_size = trans->fs_info->csum_size;
|
u16 csum_size = trans->fs_info->csum_size;
|
||||||
int blocksize = trans->fs_info->sectorsize;
|
int blocksize = trans->fs_info->sectorsize;
|
||||||
struct btrfs_root *csum_root = btrfs_csum_root(trans->fs_info, bytenr);
|
|
||||||
|
|
||||||
path = btrfs_alloc_path();
|
path = btrfs_alloc_path();
|
||||||
if (!path)
|
if (!path)
|
||||||
@ -421,7 +422,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len)
|
|||||||
key.offset = end_byte - 1;
|
key.offset = end_byte - 1;
|
||||||
key.type = BTRFS_EXTENT_CSUM_KEY;
|
key.type = BTRFS_EXTENT_CSUM_KEY;
|
||||||
|
|
||||||
ret = btrfs_search_slot(trans, csum_root, &key, path, -1, 1);
|
ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
if (path->slots[0] == 0)
|
if (path->slots[0] == 0)
|
||||||
goto out;
|
goto out;
|
||||||
@ -448,7 +449,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len)
|
|||||||
|
|
||||||
/* delete the entire item, it is inside our range */
|
/* delete the entire item, it is inside our range */
|
||||||
if (key.offset >= bytenr && csum_end <= end_byte) {
|
if (key.offset >= bytenr && csum_end <= end_byte) {
|
||||||
ret = btrfs_del_item(trans, csum_root, path);
|
ret = btrfs_del_item(trans, root, path);
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
} else if (key.offset < bytenr && csum_end > end_byte) {
|
} else if (key.offset < bytenr && csum_end > end_byte) {
|
||||||
unsigned long offset;
|
unsigned long offset;
|
||||||
@ -488,13 +489,13 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, u64 bytenr, u64 len)
|
|||||||
* btrfs_split_item returns -EAGAIN when the
|
* btrfs_split_item returns -EAGAIN when the
|
||||||
* item changed size or key
|
* item changed size or key
|
||||||
*/
|
*/
|
||||||
ret = btrfs_split_item(trans, csum_root, path, &key,
|
ret = btrfs_split_item(trans, root, path, &key,
|
||||||
offset);
|
offset);
|
||||||
BUG_ON(ret && ret != -EAGAIN);
|
BUG_ON(ret && ret != -EAGAIN);
|
||||||
|
|
||||||
key.offset = end_byte - 1;
|
key.offset = end_byte - 1;
|
||||||
} else {
|
} else {
|
||||||
ret = truncate_one_csum(csum_root, path, &key, bytenr,
|
ret = truncate_one_csum(root, path, &key, bytenr,
|
||||||
len);
|
len);
|
||||||
BUG_ON(ret);
|
BUG_ON(ret);
|
||||||
}
|
}
|
||||||
|
89
kernel-shared/file-item.h
Normal file
89
kernel-shared/file-item.h
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
|
||||||
|
#ifndef BTRFS_FILE_ITEM_H
|
||||||
|
#define BTRFS_FILE_ITEM_H
|
||||||
|
|
||||||
|
#include "kerncompat.h"
|
||||||
|
#include "kernel-shared/accessors.h"
|
||||||
|
|
||||||
|
struct bio;
|
||||||
|
struct inode;
|
||||||
|
struct btrfs_ordered_sum;
|
||||||
|
struct btrfs_inode;
|
||||||
|
struct extent_map;
|
||||||
|
|
||||||
|
#define BTRFS_FILE_EXTENT_INLINE_DATA_START \
|
||||||
|
(offsetof(struct btrfs_file_extent_item, disk_bytenr))
|
||||||
|
|
||||||
|
static inline u32 BTRFS_MAX_INLINE_DATA_SIZE(const struct btrfs_fs_info *info)
|
||||||
|
{
|
||||||
|
return BTRFS_MAX_ITEM_SIZE(info) -
|
||||||
|
BTRFS_FILE_EXTENT_INLINE_DATA_START;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the number of bytes used by the item on disk, minus the size of any
|
||||||
|
* extent headers. If a file is compressed on disk, this is the compressed
|
||||||
|
* size.
|
||||||
|
*/
|
||||||
|
static inline u32 btrfs_file_extent_inline_item_len(
|
||||||
|
const struct extent_buffer *eb,
|
||||||
|
int nr)
|
||||||
|
{
|
||||||
|
return btrfs_item_size(eb, nr) - BTRFS_FILE_EXTENT_INLINE_DATA_START;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long btrfs_file_extent_inline_start(
|
||||||
|
const struct btrfs_file_extent_item *e)
|
||||||
|
{
|
||||||
|
return (unsigned long)e + BTRFS_FILE_EXTENT_INLINE_DATA_START;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline u32 btrfs_file_extent_calc_inline_size(u32 datasize)
|
||||||
|
{
|
||||||
|
return BTRFS_FILE_EXTENT_INLINE_DATA_START + datasize;
|
||||||
|
}
|
||||||
|
|
||||||
|
int btrfs_del_csums(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root, u64 bytenr, u64 len);
|
||||||
|
blk_status_t btrfs_lookup_bio_sums(struct inode *inode, struct bio *bio, u8 *dst);
|
||||||
|
int btrfs_insert_hole_extent(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root, u64 objectid, u64 pos,
|
||||||
|
u64 num_bytes);
|
||||||
|
int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root,
|
||||||
|
struct btrfs_path *path, u64 objectid,
|
||||||
|
u64 bytenr, int mod);
|
||||||
|
int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root,
|
||||||
|
struct btrfs_ordered_sum *sums);
|
||||||
|
blk_status_t btrfs_csum_one_bio(struct btrfs_inode *inode, struct bio *bio,
|
||||||
|
u64 offset, bool one_ordered);
|
||||||
|
int btrfs_lookup_csums_range(struct btrfs_root *root, u64 start, u64 end,
|
||||||
|
struct list_head *list, int search_commit,
|
||||||
|
bool nowait);
|
||||||
|
void btrfs_extent_item_to_extent_map(struct btrfs_inode *inode,
|
||||||
|
const struct btrfs_path *path,
|
||||||
|
struct btrfs_file_extent_item *fi,
|
||||||
|
struct extent_map *em);
|
||||||
|
int btrfs_inode_clear_file_extent_range(struct btrfs_inode *inode, u64 start,
|
||||||
|
u64 len);
|
||||||
|
int btrfs_inode_set_file_extent_range(struct btrfs_inode *inode, u64 start, u64 len);
|
||||||
|
void btrfs_inode_safe_disk_i_size_write(struct btrfs_inode *inode, u64 new_i_size);
|
||||||
|
u64 btrfs_file_extent_end(const struct btrfs_path *path);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MODIFIED:
|
||||||
|
* - This function doesn't exist in the kernel.
|
||||||
|
*/
|
||||||
|
int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root,
|
||||||
|
u64 objectid, u64 pos, u64 offset,
|
||||||
|
u64 disk_num_bytes, u64 num_bytes);
|
||||||
|
int btrfs_csum_file_block(struct btrfs_trans_handle *trans,
|
||||||
|
u64 alloc_end, u64 bytenr, char *data, size_t len);
|
||||||
|
int btrfs_insert_inline_extent(struct btrfs_trans_handle *trans,
|
||||||
|
struct btrfs_root *root, u64 objectid,
|
||||||
|
u64 offset, const char *buffer, size_t size);
|
||||||
|
|
||||||
|
#endif
|
@ -22,6 +22,7 @@
|
|||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
#include "kernel-shared/compression.h"
|
#include "kernel-shared/compression.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/compression.h"
|
#include "kernel-shared/compression.h"
|
||||||
#include "kernel-shared/accessors.h"
|
#include "kernel-shared/accessors.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
|
||||||
static void print_dir_item_type(struct extent_buffer *eb,
|
static void print_dir_item_type(struct extent_buffer *eb,
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "kernel-shared/volumes.h"
|
#include "kernel-shared/volumes.h"
|
||||||
#include "kernel-shared/disk-io.h"
|
#include "kernel-shared/disk-io.h"
|
||||||
#include "kernel-shared/transaction.h"
|
#include "kernel-shared/transaction.h"
|
||||||
|
#include "kernel-shared/file-item.h"
|
||||||
#include "common/internal.h"
|
#include "common/internal.h"
|
||||||
#include "common/messages.h"
|
#include "common/messages.h"
|
||||||
#include "common/path-utils.h"
|
#include "common/path-utils.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user