* [PATCH] xfs: fix variable set but not used warnings
@ 2011-04-04 12:55 Christoph Hellwig
2011-04-04 18:21 ` Alex Elder
2011-04-05 0:10 ` David Sterba
0 siblings, 2 replies; 7+ messages in thread
From: Christoph Hellwig @ 2011-04-04 12:55 UTC (permalink / raw)
To: xfs
GCC 4.6 now warnings about variables set but not used. Fix the trivially
fixable warnings of this sort.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: linux-2.6/fs/xfs/linux-2.6/xfs_buf.c
===================================================================
--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-04-03 06:47:59.406434458 -0700
+++ linux-2.6/fs/xfs/linux-2.6/xfs_buf.c 2011-04-03 06:48:16.276433605 -0700
@@ -293,7 +293,6 @@ xfs_buf_allocate_memory(
size_t nbytes, offset;
gfp_t gfp_mask = xb_to_gfp(flags);
unsigned short page_count, i;
- pgoff_t first;
xfs_off_t end;
int error;
@@ -333,7 +332,6 @@ use_alloc_page:
return error;
offset = bp->b_offset;
- first = bp->b_file_offset >> PAGE_SHIFT;
bp->b_flags |= _XBF_PAGES;
for (i = 0; i < bp->b_page_count; i++) {
Index: linux-2.6/fs/xfs/quota/xfs_qm.c
===================================================================
--- linux-2.6.orig/fs/xfs/quota/xfs_qm.c 2011-04-03 06:43:03.563116104 -0700
+++ linux-2.6/fs/xfs/quota/xfs_qm.c 2011-04-03 06:44:26.459778573 -0700
@@ -461,12 +461,10 @@ xfs_qm_dqflush_all(
struct xfs_quotainfo *q = mp->m_quotainfo;
int recl;
struct xfs_dquot *dqp;
- int niters;
int error;
if (!q)
return 0;
- niters = 0;
again:
mutex_lock(&q->qi_dqlist_lock);
list_for_each_entry(dqp, &q->qi_dqlist, q_mplist) {
@@ -1314,14 +1312,9 @@ xfs_qm_dqiter_bufs(
{
xfs_buf_t *bp;
int error;
- int notcommitted;
- int incr;
int type;
ASSERT(blkcnt > 0);
- notcommitted = 0;
- incr = (blkcnt > XFS_QM_MAX_DQCLUSTER_LOGSZ) ?
- XFS_QM_MAX_DQCLUSTER_LOGSZ : blkcnt;
type = flags & XFS_QMOPT_UQUOTA ? XFS_DQ_USER :
(flags & XFS_QMOPT_PQUOTA ? XFS_DQ_PROJ : XFS_DQ_GROUP);
error = 0;
Index: linux-2.6/fs/xfs/quota/xfs_qm.h
===================================================================
--- linux-2.6.orig/fs/xfs/quota/xfs_qm.h 2011-04-03 06:43:34.569781201 -0700
+++ linux-2.6/fs/xfs/quota/xfs_qm.h 2011-04-03 06:43:41.396447521 -0700
@@ -65,11 +65,6 @@ extern kmem_zone_t *qm_dqtrxzone;
* block in the dquot/xqm code.
*/
#define XFS_DQUOT_CLUSTER_SIZE_FSB (xfs_filblks_t)1
-/*
- * When doing a quotacheck, we log dquot clusters of this many FSBs at most
- * in a single transaction. We don't want to ask for too huge a log reservation.
- */
-#define XFS_QM_MAX_DQCLUSTER_LOGSZ 3
typedef xfs_dqhash_t xfs_dqlist_t;
Index: linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c
===================================================================
--- linux-2.6.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:40:45.399789765 -0700
+++ linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:43:00.219782939 -0700
@@ -313,14 +313,12 @@ xfs_qm_scall_quotaon(
{
int error;
uint qf;
- uint accflags;
__int64_t sbflags;
flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
/*
* Switching on quota accounting must be done at mount time.
*/
- accflags = flags & XFS_ALL_QUOTA_ACCT;
flags &= ~(XFS_ALL_QUOTA_ACCT);
sbflags = 0;
Index: linux-2.6/fs/xfs/xfs_itable.c
===================================================================
--- linux-2.6.orig/fs/xfs/xfs_itable.c 2011-04-03 06:47:24.483102893 -0700
+++ linux-2.6/fs/xfs/xfs_itable.c 2011-04-03 06:47:47.356435070 -0700
@@ -204,7 +204,6 @@ xfs_bulkstat(
xfs_agi_t *agi; /* agi header data */
xfs_agino_t agino; /* inode # in allocation group */
xfs_agnumber_t agno; /* allocation group number */
- xfs_daddr_t bno; /* inode cluster start daddr */
int chunkidx; /* current index into inode chunk */
int clustidx; /* current index into inode cluster */
xfs_btree_cur_t *cur; /* btree cursor for ialloc btree */
@@ -463,7 +462,6 @@ xfs_bulkstat(
mp->m_sb.sb_inopblog);
}
ino = XFS_AGINO_TO_INO(mp, agno, agino);
- bno = XFS_AGB_TO_DADDR(mp, agno, agbno);
/*
* Skip if this inode is free.
*/
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-04 12:55 [PATCH] xfs: fix variable set but not used warnings Christoph Hellwig
@ 2011-04-04 18:21 ` Alex Elder
2011-04-04 23:52 ` David Sterba
2011-04-05 19:10 ` Christoph Hellwig
2011-04-05 0:10 ` David Sterba
1 sibling, 2 replies; 7+ messages in thread
From: Alex Elder @ 2011-04-04 18:21 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: xfs
On Mon, 2011-04-04 at 08:55 -0400, Christoph Hellwig wrote:
> GCC 4.6 now warnings about variables set but not used. Fix the trivially
> fixable warnings of this sort.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks good. I have an unrelated question though.
Reviewed-by: Alex Elder <aelder@sgi.com>
> Index: linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:40:45.399789765 -0700
> +++ linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:43:00.219782939 -0700
> @@ -313,14 +313,12 @@ xfs_qm_scall_quotaon(
> {
> int error;
> uint qf;
> - uint accflags;
> __int64_t sbflags;
>
> flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
> /*
> * Switching on quota accounting must be done at mount time.
> */
> - accflags = flags & XFS_ALL_QUOTA_ACCT;
> flags &= ~(XFS_ALL_QUOTA_ACCT);
Unrelated, but isn't the effect of this line plus the one a few
lines up the same as this?
flags &= XFS_ALL_QUOTA_ENFD;
>
> sbflags = 0;
. . .
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-04 18:21 ` Alex Elder
@ 2011-04-04 23:52 ` David Sterba
2011-04-05 6:05 ` Dave Chinner
2011-04-05 19:10 ` Christoph Hellwig
1 sibling, 1 reply; 7+ messages in thread
From: David Sterba @ 2011-04-04 23:52 UTC (permalink / raw)
To: xfs
Hi,
I've seen this one too and I think this may not be a trivialy removable one, at
least not without some analysis.
On Mon, Apr 04, 2011 at 01:21:20PM -0500, Alex Elder wrote:
> > Index: linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c
> > ===================================================================
> > --- linux-2.6.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:40:45.399789765 -0700
> > +++ linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:43:00.219782939 -0700
> > @@ -313,14 +313,12 @@ xfs_qm_scall_quotaon(
> > {
> > int error;
> > uint qf;
> > - uint accflags;
> > __int64_t sbflags;
> >
> > flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
> > /*
> > * Switching on quota accounting must be done at mount time.
> > */
> > - accflags = flags & XFS_ALL_QUOTA_ACCT;
> > flags &= ~(XFS_ALL_QUOTA_ACCT);
>
> Unrelated, but isn't the effect of this line plus the one a few
> lines up the same as this?
>
> flags &= XFS_ALL_QUOTA_ENFD;
yes it its, but then why was the separate accflags there? That's why I'm not
sure it should go away so easily.
>
> >
> > sbflags = 0;
and not only this, a few lines below:
if (((flags & XFS_UQUOTA_ACCT) == 0 &&
^^^^^^^^^^^^^^^^^^^^^^^
(mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) == 0 &&
(flags & XFS_UQUOTA_ENFD))
^^^^^^^^^^^^^^^^^^^^^^^
||
((flags & XFS_PQUOTA_ACCT) == 0 &&
^^^^^^^^^^^^^^^^^^^^^^^
(mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) == 0 &&
(flags & XFS_GQUOTA_ACCT) == 0 &&
^^^^^^^^^^^^^^^^^^^^^^^
(mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) == 0 &&
(flags & XFS_OQUOTA_ENFD))) {
xfs_debug(mp,
"%s: Can't enforce without acct, flags=%x sbflags=%x\n",
__func__, flags, mp->m_sb.sb_qflags);
return XFS_ERROR(EINVAL);
}
(the GQUOTA/PQUOTA/UQUOTA are covered by XFS_ALL_QUOTA_ACCT, masked above)
all the underlined expressions will be always zero, leading to a true ==
condition and leaving only the superblock flags to be checked.
Callchain of xfs_qm_scall_quotaon() goes up to
quotactl
do_quotactl
quota_setxstate
.set_xstate
xfs_fs_set_xstate
xfs_qm_scall_quotaon
where the final flags/accflags are passed from ioctl uflags and then
converted to XFS quota flags. Ie., the caller of the quotactl has to set
the ACCT flags, therefore I'd say the checked flags should state
accflags & XFS_GQUOTA_ACCT (...etc)
else, if the ACCT flags are not specified via superblock, the quotaon
sysctl will always fail with "Can't enforce without acct", even when
the accounting flags are specified via a mount option (speculated and
not tested myself).
The code is there since ages so I wonder whether anybody hit this bug or
if I misunderstood xfs/quota documentation.
Besides, there are more cleanups and fixups in this function:
line 331:
/* No fs can turn on quotas with a delayed effect */
ASSERT((flags & XFS_ALL_QUOTA_ACCT) == 0);
seems to be broken too:
* the acct flags are masked out -> always asserts true
* doing s/flags/accflags/ does not make sense
line 374:
if ((error = xfs_qm_write_sb_changes(mp, sbflags)))
return (error);
convert to:
error = xfs_qm_...
if (error) ...
line 395:
mp->m_qflags |= (flags & XFS_ALL_QUOTA_ENFD);
->
mp->m_qflags |= flags;
I could send a patch, but I want to be clear on the accounting flags.
I'd like to ask maintainers to be cautious when accepting these
simply looking cleanups, they may actually hide bugs.
dave
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-04 12:55 [PATCH] xfs: fix variable set but not used warnings Christoph Hellwig
2011-04-04 18:21 ` Alex Elder
@ 2011-04-05 0:10 ` David Sterba
1 sibling, 0 replies; 7+ messages in thread
From: David Sterba @ 2011-04-05 0:10 UTC (permalink / raw)
To: xfs
Hi,
besides the accflags commented in another mail, the rest is ok, but I'll
flush my finding anyway, JFYI.
dave
On Mon, Apr 04, 2011 at 08:55:44AM -0400, Christoph Hellwig wrote:
> GCC 4.6 now warnings about variables set but not used. Fix the trivially
> fixable warnings of this sort.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
>
> Index: linux-2.6/fs/xfs/linux-2.6/xfs_buf.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_buf.c 2011-04-03 06:47:59.406434458 -0700
> +++ linux-2.6/fs/xfs/linux-2.6/xfs_buf.c 2011-04-03 06:48:16.276433605 -0700
> @@ -293,7 +293,6 @@ xfs_buf_allocate_memory(
> size_t nbytes, offset;
> gfp_t gfp_mask = xb_to_gfp(flags);
> unsigned short page_count, i;
> - pgoff_t first;
> xfs_off_t end;
> int error;
>
> @@ -333,7 +332,6 @@ use_alloc_page:
> return error;
>
> offset = bp->b_offset;
> - first = bp->b_file_offset >> PAGE_SHIFT;
leftover from
commit 0e6e847ffe37436e331c132639f9f872febce82e
Author: Dave Chinner <dchinner@redhat.com>
Date: Sat Mar 26 09:16:45 2011 +1100
xfs: stop using the page cache to back the buffer cache
originally used by find_or_create_page()
> bp->b_flags |= _XBF_PAGES;
>
> for (i = 0; i < bp->b_page_count; i++) {
> Index: linux-2.6/fs/xfs/quota/xfs_qm.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/quota/xfs_qm.c 2011-04-03 06:43:03.563116104 -0700
> +++ linux-2.6/fs/xfs/quota/xfs_qm.c 2011-04-03 06:44:26.459778573 -0700
> @@ -461,12 +461,10 @@ xfs_qm_dqflush_all(
> struct xfs_quotainfo *q = mp->m_quotainfo;
> int recl;
> struct xfs_dquot *dqp;
> - int niters;
> int error;
>
> if (!q)
> return 0;
> - niters = 0;
> again:
> mutex_lock(&q->qi_dqlist_lock);
> list_for_each_entry(dqp, &q->qi_dqlist, q_mplist) {
> @@ -1314,14 +1312,9 @@ xfs_qm_dqiter_bufs(
> {
> xfs_buf_t *bp;
> int error;
> - int notcommitted;
> - int incr;
> int type;
>
> ASSERT(blkcnt > 0);
> - notcommitted = 0;
> - incr = (blkcnt > XFS_QM_MAX_DQCLUSTER_LOGSZ) ?
> - XFS_QM_MAX_DQCLUSTER_LOGSZ : blkcnt;
dead variables since the original git commit
> type = flags & XFS_QMOPT_UQUOTA ? XFS_DQ_USER :
> (flags & XFS_QMOPT_PQUOTA ? XFS_DQ_PROJ : XFS_DQ_GROUP);
> error = 0;
> Index: linux-2.6/fs/xfs/quota/xfs_qm.h
> ===================================================================
> --- linux-2.6.orig/fs/xfs/quota/xfs_qm.h 2011-04-03 06:43:34.569781201 -0700
> +++ linux-2.6/fs/xfs/quota/xfs_qm.h 2011-04-03 06:43:41.396447521 -0700
> @@ -65,11 +65,6 @@ extern kmem_zone_t *qm_dqtrxzone;
> * block in the dquot/xqm code.
> */
> #define XFS_DQUOT_CLUSTER_SIZE_FSB (xfs_filblks_t)1
> -/*
> - * When doing a quotacheck, we log dquot clusters of this many FSBs at most
> - * in a single transaction. We don't want to ask for too huge a log reservation.
> - */
> -#define XFS_QM_MAX_DQCLUSTER_LOGSZ 3
>
> typedef xfs_dqhash_t xfs_dqlist_t;
>
> Index: linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:40:45.399789765 -0700
> +++ linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:43:00.219782939 -0700
> @@ -313,14 +313,12 @@ xfs_qm_scall_quotaon(
> {
> int error;
> uint qf;
> - uint accflags;
> __int64_t sbflags;
>
> flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
> /*
> * Switching on quota accounting must be done at mount time.
> */
> - accflags = flags & XFS_ALL_QUOTA_ACCT;
(commented in another mail)
> flags &= ~(XFS_ALL_QUOTA_ACCT);
>
> sbflags = 0;
> Index: linux-2.6/fs/xfs/xfs_itable.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/xfs_itable.c 2011-04-03 06:47:24.483102893 -0700
> +++ linux-2.6/fs/xfs/xfs_itable.c 2011-04-03 06:47:47.356435070 -0700
> @@ -204,7 +204,6 @@ xfs_bulkstat(
> xfs_agi_t *agi; /* agi header data */
> xfs_agino_t agino; /* inode # in allocation group */
> xfs_agnumber_t agno; /* allocation group number */
> - xfs_daddr_t bno; /* inode cluster start daddr */
> int chunkidx; /* current index into inode chunk */
> int clustidx; /* current index into inode cluster */
> xfs_btree_cur_t *cur; /* btree cursor for ialloc btree */
> @@ -463,7 +462,6 @@ xfs_bulkstat(
> mp->m_sb.sb_inopblog);
> }
> ino = XFS_AGINO_TO_INO(mp, agno, agino);
> - bno = XFS_AGB_TO_DADDR(mp, agno, agbno);
a leftover from
commit 7b6259e7a83647948fa33a736cc832310c8d85aa
Author: Dave Chinner <dchinner@redhat.com>
Date: Thu Jun 24 11:35:17 2010 +1000
xfs: remove block number from inode lookup code
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-04 23:52 ` David Sterba
@ 2011-04-05 6:05 ` Dave Chinner
2011-04-07 13:45 ` David Sterba
0 siblings, 1 reply; 7+ messages in thread
From: Dave Chinner @ 2011-04-05 6:05 UTC (permalink / raw)
To: xfs
On Tue, Apr 05, 2011 at 01:52:27AM +0200, David Sterba wrote:
> Hi,
>
> I've seen this one too and I think this may not be a trivialy removable one, at
> least not without some analysis.
Sure.
Background: the quotaon syscall on XFS can only change whether
quotas are enforced or not in XFS. It can't switch quotas on at
all because that has to be done at mount time. Switching quotas on
at mount time sets the appropriate flags in the superblock, so we
can always rely on a superblock flag check for whether accounting
is enabled or not.
> On Mon, Apr 04, 2011 at 01:21:20PM -0500, Alex Elder wrote:
> > > Index: linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c
> > > ===================================================================
> > > --- linux-2.6.orig/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:40:45.399789765 -0700
> > > +++ linux-2.6/fs/xfs/quota/xfs_qm_syscalls.c 2011-04-03 06:43:00.219782939 -0700
> > > @@ -313,14 +313,12 @@ xfs_qm_scall_quotaon(
> > > {
> > > int error;
> > > uint qf;
> > > - uint accflags;
> > > __int64_t sbflags;
> > >
> > > flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
> > > /*
> > > * Switching on quota accounting must be done at mount time.
> > > */
> > > - accflags = flags & XFS_ALL_QUOTA_ACCT;
> > > flags &= ~(XFS_ALL_QUOTA_ACCT);
> >
> > Unrelated, but isn't the effect of this line plus the one a few
> > lines up the same as this?
> >
> > flags &= XFS_ALL_QUOTA_ENFD;
>
> yes it its, but then why was the separate accflags there? That's why I'm not
> sure it should go away so easily.
It's dead, Jim.
>From the historical XFS archives, the accflags were used when the
root filesystem was special and quota accounting for the root
filesystem was not done at mount time. That was removed in late
2002:
http://oss.sgi.com/cgi-bin/gitweb.cgi?p=archive/xfs-import.git;a=commit;h=3e01b37c1ba0a3839956660b78e09a17ac5ff67b
http://oss.sgi.com/cgi-bin/gitweb.cgi?p=archive/xfs-import.git;a=commitdiff;h=3e01b37c1ba0a3839956660b78e09a17ac5ff67b
so accflags has been unused for almost 10 years. I've gone through
quite a bit more of the history, but thæt commit it the key one.
> and not only this, a few lines below:
>
> if (((flags & XFS_UQUOTA_ACCT) == 0 &&
> ^^^^^^^^^^^^^^^^^^^^^^^
The above commit should have removed these checks are they were not
needed anymore.
>
> (mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) == 0 &&
> (flags & XFS_UQUOTA_ENFD))
> ^^^^^^^^^^^^^^^^^^^^^^^
And those are the checks that are meaningful.
> The code is there since ages so I wonder whether anybody hit this bug or
> if I misunderstood xfs/quota documentation.
Not a bug. Crufty, yes, but functioning correctly.
> Besides, there are more cleanups and fixups in this function:
>
> line 331:
> /* No fs can turn on quotas with a delayed effect */
> ASSERT((flags & XFS_ALL_QUOTA_ACCT) == 0);
>
> seems to be broken too:
> * the acct flags are masked out -> always asserts true
> * doing s/flags/accflags/ does not make sense
No, that makes perfect sense given the commit above. We use ASSERT()
statements to document constraints and assumptions in the code, and
that is exactly what this does....
> I'd like to ask maintainers to be cautious when accepting these
> simply looking cleanups, they may actually hide bugs.
Well, yes. that's why we have a relatively strict review process -
the reviewer needs to check stuff like this, not just blindly trust
the person who wrote the code did it. That's the essence of the
meaning of the Reviewed-by tag we throw around all the time - it's
not just a rubber stamp.
Indeed, it's not uncommon for me to spend hours doing this sort of
analysis when reviewing complex changes, and all you might see on
the mailing list is (maybe) a short comment accompanying a
Reviewed-by tag....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-04 18:21 ` Alex Elder
2011-04-04 23:52 ` David Sterba
@ 2011-04-05 19:10 ` Christoph Hellwig
1 sibling, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2011-04-05 19:10 UTC (permalink / raw)
To: Alex Elder; +Cc: Christoph Hellwig, xfs
On Mon, Apr 04, 2011 at 01:21:20PM -0500, Alex Elder wrote:
> > __int64_t sbflags;
> >
> > flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
> > /*
> > * Switching on quota accounting must be done at mount time.
> > */
> > - accflags = flags & XFS_ALL_QUOTA_ACCT;
> > flags &= ~(XFS_ALL_QUOTA_ACCT);
>
> Unrelated, but isn't the effect of this line plus the one a few
> lines up the same as this?
>
> flags &= XFS_ALL_QUOTA_ENFD;
Yes, it is. I have a patch in my queue to clean this and a few others
bits around it up, but unlike the warnings fixes it's really 2.6.40
material.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] xfs: fix variable set but not used warnings
2011-04-05 6:05 ` Dave Chinner
@ 2011-04-07 13:45 ` David Sterba
0 siblings, 0 replies; 7+ messages in thread
From: David Sterba @ 2011-04-07 13:45 UTC (permalink / raw)
To: xfs
Hi,
On Tue, Apr 05, 2011 at 04:05:58PM +1000, Dave Chinner wrote:
> Background: the quotaon syscall on XFS can only change whether
> quotas are enforced or not in XFS. It can't switch quotas on at
> all because that has to be done at mount time. Switching quotas on
> at mount time sets the appropriate flags in the superblock, so we
> can always rely on a superblock flag check for whether accounting
> is enabled or not.
Thanks for the explanation.
> >
> > (mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) == 0 &&
> > (flags & XFS_UQUOTA_ENFD))
> > ^^^^^^^^^^^^^^^^^^^^^^^
>
> And those are the checks that are meaningful.
Should have been the flags & _ACCT check line above, my mistake.
> > Besides, there are more cleanups and fixups in this function:
> >
> > line 331:
> > /* No fs can turn on quotas with a delayed effect */
> > ASSERT((flags & XFS_ALL_QUOTA_ACCT) == 0);
> >
> > seems to be broken too:
> > * the acct flags are masked out -> always asserts true
> > * doing s/flags/accflags/ does not make sense
>
> No, that makes perfect sense given the commit above. We use ASSERT()
> statements to document constraints and assumptions in the code, and
> that is exactly what this does....
Yes, in context of the linked commit. From a technical POV, this assert
would only fail when the constants for XFS_ALL_QUOTA_ACCT and
XFS_ALL_QUOTA_ENFD overlap.
> Well, yes. that's why we have a relatively strict review process -
> the reviewer needs to check stuff like this, not just blindly trust
> the person who wrote the code did it. That's the essence of the
> meaning of the Reviewed-by tag we throw around all the time - it's
> not just a rubber stamp.
>
> Indeed, it's not uncommon for me to spend hours doing this sort of
> analysis when reviewing complex changes, and all you might see on
> the mailing list is (maybe) a short comment accompanying a
> Reviewed-by tag....
Understood and no doubts here. I was missing something like
"removing just the variable and will clean the rest later", which
Christoph wrote in a later email.
dave
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-04-07 13:42 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-04 12:55 [PATCH] xfs: fix variable set but not used warnings Christoph Hellwig
2011-04-04 18:21 ` Alex Elder
2011-04-04 23:52 ` David Sterba
2011-04-05 6:05 ` Dave Chinner
2011-04-07 13:45 ` David Sterba
2011-04-05 19:10 ` Christoph Hellwig
2011-04-05 0:10 ` David Sterba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox