Btrfs: write_buf is now callable outside send.c
authorAnand Jain <anand.jain@oracle.com>
Fri, 14 Sep 2012 06:04:21 +0000 (00:04 -0600)
committerChris Mason <chris.mason@fusionio.com>
Thu, 4 Oct 2012 13:39:55 +0000 (09:39 -0400)
Developing service cmds needs it.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
fs/btrfs/send.c
fs/btrfs/send.h

index c6ef070a8dca3cd2e9ad9237b93138dd17a2727d..c7beb543a4a89300f1e586492b767ea8f9bef683 100644 (file)
@@ -386,7 +386,7 @@ static struct btrfs_path *alloc_path_for_send(void)
        return path;
 }
 
-static int write_buf(struct send_ctx *sctx, const void *buf, u32 len)
+int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off)
 {
        int ret;
        mm_segment_t old_fs;
@@ -396,8 +396,7 @@ static int write_buf(struct send_ctx *sctx, const void *buf, u32 len)
        set_fs(KERNEL_DS);
 
        while (pos < len) {
-               ret = vfs_write(sctx->send_filp, (char *)buf + pos, len - pos,
-                               &sctx->send_off);
+               ret = vfs_write(filp, (char *)buf + pos, len - pos, off);
                /* TODO handle that correctly */
                /*if (ret == -ERESTARTSYS) {
                        continue;
@@ -553,7 +552,8 @@ static int send_header(struct send_ctx *sctx)
        strcpy(hdr.magic, BTRFS_SEND_STREAM_MAGIC);
        hdr.version = cpu_to_le32(BTRFS_SEND_STREAM_VERSION);
 
-       return write_buf(sctx, &hdr, sizeof(hdr));
+       return write_buf(sctx->send_filp, &hdr, sizeof(hdr),
+                                       &sctx->send_off);
 }
 
 /*
@@ -590,7 +590,8 @@ static int send_cmd(struct send_ctx *sctx)
        crc = crc32c(0, (unsigned char *)sctx->send_buf, sctx->send_size);
        hdr->crc = cpu_to_le32(crc);
 
-       ret = write_buf(sctx, sctx->send_buf, sctx->send_size);
+       ret = write_buf(sctx->send_filp, sctx->send_buf, sctx->send_size,
+                                       &sctx->send_off);
 
        sctx->total_send_size += sctx->send_size;
        sctx->cmd_send_size[le16_to_cpu(hdr->cmd)] += sctx->send_size;
index 9934e948e57f91067f5a5e3f9cdf9720939af151..1bf4f32fd4ef28582c6d2401571bf2f7f37617a6 100644 (file)
@@ -130,4 +130,5 @@ enum {
 
 #ifdef __KERNEL__
 long btrfs_ioctl_send(struct file *mnt_file, void __user *arg);
+int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off);
 #endif