Displaying 3 results from an estimated 3 matches for "open_cur_inode_file".
2013 Oct 25
1
[PATCH] Btrfs: stop using vfs_read in send
...122,6 @@ struct send_ctx {
struct list_head name_cache_list;
int name_cache_size;
- struct file *cur_inode_filp;
char *read_buf;
};
@@ -2128,77 +2127,6 @@ out:
}
/*
- * Called for regular files when sending extents data. Opens a struct file
- * to read from the file.
- */
-static int open_cur_inode_file(struct send_ctx *sctx)
-{
- int ret = 0;
- struct btrfs_key key;
- struct path path;
- struct inode *inode;
- struct dentry *dentry;
- struct file *filp;
- int new = 0;
-
- if (sctx->cur_inode_filp)
- goto out;
-
- key.objectid = sctx->cur_ino;
- key.type = BTRFS_INODE_ITEM_KEY;
- key.offset...
2013 Apr 07
2
"btrfs send" fails with having too many open fd's
Hi there,
i''m trying to send/receive a snapshot of my home dir for some time now,
but in the end it always fails because the maximum number of open fd''s
is exceeded.
Kern log says:
"6,7226,15012711248,-;VFS: file-max limit 799969 reached"
My setup is as follows:
Kernel: 3.9-rc5
btrfs-progs: compiled from git commit: commit
2013 Nov 12
0
[PATCH] Btrfs: incompatible format change to remove hole extents V4
..._path *p)
{
if (p->reversed) {
@@ -3776,6 +3784,43 @@ out:
return ret;
}
+static int send_hole(struct send_ctx *sctx, u64 end)
+{
+ struct fs_path *p = NULL;
+ u64 offset = sctx->cur_inode_last_extent;
+ u64 len;
+ int ret;
+
+ p = fs_path_alloc();
+ if (!p)
+ return -ENOMEM;
+ ret = open_cur_inode_file(sctx);
+ if (ret < 0)
+ goto out;
+ memset(sctx->read_buf, 0, BTRFS_SEND_READ_SIZE);
+ while (offset < end) {
+ len = min_t(u64, end - offset, BTRFS_SEND_READ_SIZE);
+
+ ret = begin_cmd(sctx, BTRFS_SEND_C_WRITE);
+ if (ret < 0)
+ break;
+ ret = get_cur_path(sctx, sctx->cur_ino...