From: Jan Kara <jack@suse.cz>
To: Ben Myers <bpm@sgi.com>
Cc: swhiteho@redhat.com, Jan Kara <jack@suse.cz>,
Chandra Seetharaman <sekharan@us.ibm.com>,
xfs@oss.sgi.com
Subject: Re: [PATCH v10 10/11] quota: Add proper versioning support to fs_quota_stat
Date: Wed, 10 Jul 2013 23:52:14 +0200 [thread overview]
Message-ID: <20130710215214.GA1641@quack.suse.cz> (raw)
In-Reply-To: <20130710184704.GZ32736@sgi.com>
On Wed 10-07-13 13:47:04, Ben Myers wrote:
> Hey Jan,
>
> On Wed, Jul 10, 2013 at 06:26:02PM +0200, Jan Kara wrote:
> > On Wed 10-07-13 10:55:38, Ben Myers wrote:
> > > Hey Chandra,
> > >
> > > On Thu, Jun 27, 2013 at 05:25:13PM -0500, Chandra Seetharaman wrote:
> > > > Added appropriate pads and code for backward compatibility.
> > > >
> > > > Copied over the old version as it is different from the newer padded
> > > > version.
> > > >
> > > > New callers of the system call have to set the version of the data
> > > > structure being passed, and kernel will fill as much data as requested.
> > > >
> > > > Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
> > >
> > > I think we also need to
> > >
> > > Cc: Jan Kara <jack@suse.cz>
> > Thanks for CC.
> >
> > > > diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
> > > > index c7c840e..ca0dccd 100644
> > > > --- a/fs/gfs2/quota.c
> > > > +++ b/fs/gfs2/quota.c
> > > > @@ -1443,9 +1443,6 @@ static int gfs2_quota_get_xstate(struct super_block *sb,
> > > > {
> > > > struct gfs2_sbd *sdp = sb->s_fs_info;
> > > >
> > > > - memset(fqs, 0, sizeof(struct fs_quota_stat));
> > > > - fqs->qs_version = FS_QSTAT_VERSION;
> > > > -
> > > > switch (sdp->sd_args.ar_quota) {
> > > > case GFS2_QUOTA_ON:
> > > > fqs->qs_flags |= (FS_QUOTA_UDQ_ENFD | FS_QUOTA_GDQ_ENFD);
> > > > diff --git a/fs/quota/quota.c b/fs/quota/quota.c
> > > > index c7314f1..ae6526e 100644
> > > > --- a/fs/quota/quota.c
> > > > +++ b/fs/quota/quota.c
> > > > @@ -207,12 +207,57 @@ static int quota_setxstate(struct super_block *sb, int cmd, void __user *addr)
> > > > static int quota_getxstate(struct super_block *sb, void __user *addr)
> > > > {
> > > > struct fs_quota_stat fqs;
> > > > - int ret;
> > > > + struct fs_quota_stat_v1 fqs_v1;
> > > > + int ret, size;
> > > > + void *fqsp;
> > > >
> > > > if (!sb->s_qcop->get_xstate)
> > > > return -ENOSYS;
> > > > +
> > > > + memset(&fqs, 0, sizeof(struct fs_quota_stat));
> > > > + if (copy_from_user(&fqs, addr, 1)) /* just get the version */
> > > > + return -EFAULT;
> > > > +
> > > > + switch (fqs.qs_version) {
> > > > + case FS_QSTAT_VERSION_2:
> > > > + size = FS_QSTAT_V2_SIZE;
> > > > + break;
> > > > + default:
> > > > + fqs.qs_version = FS_QSTAT_VERSION;
> > > > + /* fallthrough */
> > > > + case FS_QSTAT_VERSION:
> > > > + size = FS_QSTAT_V1_SIZE;
> > > > + break;
> > > > + }
> > Guys, you cannot really do this. If anyone is using getxstate() with
> > uninitialized buffer (which is fine so far), you cannot suddently start to
> > rely on the contents of qs_version field. That's ABI (and even API)
> > breakage.
>
> Looks like you are correct to me. Seems that qs_version number was never
> checked until this patch.
>
> > Unless I'm missing something, the only clean way is to use new quotactl
> > value for the interface with version field used for input as well.
>
> If I understand... it would be something like this?
>
> #define Q_XGETQSTATV XQM_CMD(8)
Yes.
> Or Q_XGETQSTAT2?
I don't really care but the first name looks a bit better.
Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-07-10 21:52 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-27 22:25 [PATCH v10 00/11] Allow pquota and gquota to be used together Chandra Seetharaman
2013-06-27 22:25 ` [PATCH v10 01/11] xfs: Define a new function xfs_is_quota_inode() Chandra Seetharaman
2013-06-27 22:43 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 02/11] xfs: Replace macro XFS_DQUOT_TREE with a function Chandra Seetharaman
2013-06-27 23:19 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 03/11] xfs: Replace macro XFS_DQ_TO_QIP " Chandra Seetharaman
2013-06-27 23:23 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 04/11] xfs: Code cleanup and removal of some typedef usage Chandra Seetharaman
2013-06-27 23:50 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 05/11] xfs: Do some whitespace cleanup in the data structure xfs_quotainfo Chandra Seetharaman
2013-06-28 16:30 ` Ben Myers
2013-06-28 18:14 ` Chandra Seetharaman
2013-06-28 18:31 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 06/11] xfs: Change xfs_dquot_acct to be a 2-dimensional array Chandra Seetharaman
2013-06-28 19:06 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 07/11] xfs: Remove incore use of XFS_OQUOTA_ENFD and XFS_OQUOTA_CHKD Chandra Seetharaman
2013-06-28 22:36 ` Ben Myers
2013-06-27 22:25 ` [PATCH v10 08/11] xfs: Add pquota fields where gquota is used Chandra Seetharaman
2013-07-10 21:39 ` Ben Myers
2013-07-10 21:46 ` Chandra Seetharaman
2013-07-11 1:23 ` Dave Chinner
2013-07-11 4:05 ` Chandra Seetharaman
2013-06-27 22:25 ` [PATCH v10 09/11] xfs: Start using pquotaino from the superblock Chandra Seetharaman
2013-07-01 2:06 ` Dave Chinner
2013-07-01 17:59 ` Chandra Seetharaman
2013-07-03 17:12 ` Chandra Seetharaman
2013-07-04 1:35 ` Dave Chinner
2013-06-27 22:25 ` [PATCH v10 10/11] quota: Add proper versioning support to fs_quota_stat Chandra Seetharaman
2013-07-10 15:55 ` Ben Myers
2013-07-10 16:26 ` Jan Kara
2013-07-10 18:47 ` Ben Myers
2013-07-10 21:52 ` Jan Kara [this message]
2013-07-10 20:49 ` Chandra Seetharaman
2013-07-10 21:54 ` Jan Kara
2013-07-11 1:45 ` Dave Chinner
2013-07-11 4:16 ` Chandra Seetharaman
2013-07-11 7:18 ` Dave Chinner
2013-07-11 7:51 ` Steven Whitehouse
2013-06-27 22:25 ` [PATCH v10 11/11] xfs: Use new qs_pquota field in fs_quota_stat for Q_XGETQSTAT Chandra Seetharaman
2013-06-28 22:53 ` [PATCH v10 00/11] Allow pquota and gquota to be used together Ben Myers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130710215214.GA1641@quack.suse.cz \
--to=jack@suse.cz \
--cc=bpm@sgi.com \
--cc=sekharan@us.ibm.com \
--cc=swhiteho@redhat.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.