From patchwork Mon Mar 22 19:13:29 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sage Weil X-Patchwork-Id: 87491 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o2MJDkFu031925 for ; Mon, 22 Mar 2010 19:13:46 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755156Ab0CVTNn (ORCPT ); Mon, 22 Mar 2010 15:13:43 -0400 Received: from cobra.newdream.net ([66.33.216.30]:38148 "EHLO cobra.newdream.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754887Ab0CVTNi (ORCPT ); Mon, 22 Mar 2010 15:13:38 -0400 Received: from localhost.localdomain (ip-66-33-206-8.dreamhost.com [66.33.206.8]) by cobra.newdream.net (Postfix) with ESMTPA id 506BBBCBEA; Mon, 22 Mar 2010 12:14:43 -0700 (PDT) From: Sage Weil To: linux-btrfs@vger.kernel.org Cc: Sage Weil Subject: [PATCH 4/5] Btrfs: return transid to userspace from SNAP_CREATE_ASYNC ioctl Date: Mon, 22 Mar 2010 12:13:29 -0700 Message-Id: <1269285210-19085-5-git-send-email-sage@newdream.net> X-Mailer: git-send-email 1.6.6.1 In-Reply-To: <1269285210-19085-4-git-send-email-sage@newdream.net> References: <1269285210-19085-1-git-send-email-sage@newdream.net> <1269285210-19085-2-git-send-email-sage@newdream.net> <1269285210-19085-3-git-send-email-sage@newdream.net> <1269285210-19085-4-git-send-email-sage@newdream.net> Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 22 Mar 2010 19:13:47 +0000 (UTC) diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 7ea4ff0..fd824a7 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -885,6 +885,13 @@ static noinline int btrfs_ioctl_snap_create(struct file *file, async ? &transid : NULL); fput(src_file); } + if (!ret && async) { + struct btrfs_ioctl_vol_args __user *user_vol_args = arg; + + if (copy_to_user(&user_vol_args->transid, &transid, + sizeof(transid))) + return -EFAULT; + } out: kfree(vol_args); return ret; diff --git a/fs/btrfs/ioctl.h b/fs/btrfs/ioctl.h index d9169d8..4f7fe37 100644 --- a/fs/btrfs/ioctl.h +++ b/fs/btrfs/ioctl.h @@ -22,12 +22,14 @@ #define BTRFS_IOCTL_MAGIC 0x94 #define BTRFS_VOL_NAME_MAX 255 -#define BTRFS_PATH_NAME_MAX 4087 +#define BTRFS_PATH_NAME_MAX 4071 /* this should be 4k */ struct btrfs_ioctl_vol_args { __s64 fd; char name[BTRFS_PATH_NAME_MAX + 1]; + __u64 transid; + __u64 reserved; }; #define BTRFS_INO_LOOKUP_PATH_MAX 4080