* [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat
@ 2014-10-16 1:53 Gui Hecheng
2014-10-16 1:53 ` [PATCH] btrfs-progs: fix wrong pad for userspace " Gui Hecheng
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Gui Hecheng @ 2014-10-16 1:53 UTC (permalink / raw)
To: linux-btrfs; +Cc: Gui Hecheng
The @btrfs_ioctl_get_dev_stats fails to pad to 1k as descripted,
actually it valuates to 1032 bytes.
The corresponding userspace change follows this change.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
---
include/uapi/linux/btrfs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index 2f47824..fc4e326 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -416,7 +416,7 @@ struct btrfs_ioctl_get_dev_stats {
/* out values: */
__u64 values[BTRFS_DEV_STAT_VALUES_MAX];
- __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */
+ __u64 unused[128 - 3 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */
};
#define BTRFS_QUOTA_CTL_ENABLE 1
--
1.8.1.4
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH] btrfs-progs: fix wrong pad for userspace arg of btrfs dev stat 2014-10-16 1:53 [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Gui Hecheng @ 2014-10-16 1:53 ` Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: prevent silent damage when add dev to an invalid mntpnt Gui Hecheng 2014-10-16 9:26 ` [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Stefan Behrens 2 siblings, 0 replies; 5+ messages in thread From: Gui Hecheng @ 2014-10-16 1:53 UTC (permalink / raw) To: linux-btrfs; +Cc: Gui Hecheng The @btrfs_ioctl_get_dev_stats fails to pad to 1k as descripted, actually it valuates to 1032 bytes. Correct it following the kernel patch. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> --- ioctl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ioctl.h b/ioctl.h index f0fc060..6657f8f 100644 --- a/ioctl.h +++ b/ioctl.h @@ -429,7 +429,7 @@ struct btrfs_ioctl_get_dev_stats { /* out values: */ __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; - __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ + __u64 unused[128 - 3 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ }; /* BTRFS_IOC_SNAP_CREATE is no longer used by the btrfs command */ -- 1.8.1.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] btrfs-progs: prevent silent damage when add dev to an invalid mntpnt 2014-10-16 1:53 [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: fix wrong pad for userspace " Gui Hecheng @ 2014-10-16 1:53 ` Gui Hecheng 2014-10-16 9:26 ` [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Stefan Behrens 2 siblings, 0 replies; 5+ messages in thread From: Gui Hecheng @ 2014-10-16 1:53 UTC (permalink / raw) To: linux-btrfs; +Cc: Gui Hecheng Problem: # mkfs.btrfs -f /dev/sda1 # btrfs dev add /dev/sda1 /dir -f <== dir is not a mntpnt btrfs dev add just report invalid ioctl but it has already made changes to /dev/sda1 with @btrfs_prepare_device(), so the fs on /dev/sda1 is damaged. We could check whether /dev/sda1 is a valid mntpnt by calling @find_mount_root() to prevent this silent damage. Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> --- cmds-device.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmds-device.c b/cmds-device.c index a728f21..65815c3 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -53,6 +53,7 @@ static int cmd_add_dev(int argc, char **argv) int discard = 1; int force = 0; char estr[100]; + char rmntpnt[PATH_MAX]; while (1) { int long_index; @@ -84,6 +85,22 @@ static int cmd_add_dev(int argc, char **argv) mntpnt = argv[optind + argc - 1]; + if (!realpath(mntpnt, rmntpnt)) { + fprintf(stderr, "ERROR: %s\n", strerror(errno)); + return 1; + } + + ret = find_mount_root(rmntpnt, &mntpnt); + if (ret < 0) { + fprintf(stderr, "ERROR: find_mount_root failed on '%s': %s\n", + rmntpnt, strerror(-ret)); + return 1; + } else if (ret > 0) { + fprintf(stderr, "ERROR: '%s' doesn't belong to btrfs mount point\n", + rmntpnt); + return 1; + } + fdmnt = open_file_or_dir(mntpnt, &dirstream); if (fdmnt < 0) { fprintf(stderr, "ERROR: can't access '%s'\n", mntpnt); -- 1.8.1.4 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat 2014-10-16 1:53 [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: fix wrong pad for userspace " Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: prevent silent damage when add dev to an invalid mntpnt Gui Hecheng @ 2014-10-16 9:26 ` Stefan Behrens 2014-10-16 9:41 ` Gui Hecheng 2 siblings, 1 reply; 5+ messages in thread From: Stefan Behrens @ 2014-10-16 9:26 UTC (permalink / raw) To: Gui Hecheng, linux-btrfs On Thu, 16 Oct 2014 09:53:37 +0800, Gui Hecheng wrote: > The @btrfs_ioctl_get_dev_stats fails to pad to 1k as descripted, > actually it valuates to 1032 bytes. > The corresponding userspace change follows this change. > > Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> > --- > include/uapi/linux/btrfs.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h > index 2f47824..fc4e326 100644 > --- a/include/uapi/linux/btrfs.h > +++ b/include/uapi/linux/btrfs.h > @@ -416,7 +416,7 @@ struct btrfs_ioctl_get_dev_stats { > /* out values: */ > __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; > > - __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ > + __u64 unused[128 - 3 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ You can't change an existing ioctl interface like this and make it incompatible, the length of the structure is used in _IOWR(). Just change the comment from "pad to 1k" to "pad to 1032 bytes" instead. > }; > > #define BTRFS_QUOTA_CTL_ENABLE 1 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat 2014-10-16 9:26 ` [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Stefan Behrens @ 2014-10-16 9:41 ` Gui Hecheng 0 siblings, 0 replies; 5+ messages in thread From: Gui Hecheng @ 2014-10-16 9:41 UTC (permalink / raw) To: Stefan Behrens; +Cc: linux-btrfs On Thu, 2014-10-16 at 11:26 +0200, Stefan Behrens wrote: > On Thu, 16 Oct 2014 09:53:37 +0800, Gui Hecheng wrote: > > The @btrfs_ioctl_get_dev_stats fails to pad to 1k as descripted, > > actually it valuates to 1032 bytes. > > The corresponding userspace change follows this change. > > > > Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com> > > --- > > include/uapi/linux/btrfs.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h > > index 2f47824..fc4e326 100644 > > --- a/include/uapi/linux/btrfs.h > > +++ b/include/uapi/linux/btrfs.h > > @@ -416,7 +416,7 @@ struct btrfs_ioctl_get_dev_stats { > > /* out values: */ > > __u64 values[BTRFS_DEV_STAT_VALUES_MAX]; > > > > - __u64 unused[128 - 2 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ > > + __u64 unused[128 - 3 - BTRFS_DEV_STAT_VALUES_MAX]; /* pad to 1k */ > > You can't change an existing ioctl interface like this and make it > incompatible, the length of the structure is used in _IOWR(). Just > change the comment from "pad to 1k" to "pad to 1032 bytes" instead. Er... yeah, the problem exists, and such a fix seems cost much. Since the related tool itself doesn't influence much, just scratch these two may be a reasonable idea. ^_^ ("pad to 1032 bytes" seems a bit...) > > > }; > > > > #define BTRFS_QUOTA_CTL_ENABLE 1 > > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-10-16 9:42 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-10-16 1:53 [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: fix wrong pad for userspace " Gui Hecheng 2014-10-16 1:53 ` [PATCH] btrfs-progs: prevent silent damage when add dev to an invalid mntpnt Gui Hecheng 2014-10-16 9:26 ` [PATCH] btrfs: fix wrong pad for kernelspace arg of btrfs dev stat Stefan Behrens 2014-10-16 9:41 ` Gui Hecheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).