On Wed 12-05-10 15:44:13, Christoph Hellwig wrote: > Only set the quota operation vectors if the filesystem actually supports > quota instead of doing it for all filesystems in alloc_super(). Hmm, what about ext2? Otherwise the patch looks fine. Honza > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > Index: linux-2.6/fs/super.c > =================================================================== > --- linux-2.6.orig/fs/super.c 2010-05-10 23:24:19.215025989 +0200 > +++ linux-2.6/fs/super.c 2010-05-10 23:24:54.148210860 +0200 > @@ -26,7 +26,6 @@ > #include <linux/smp_lock.h> > #include <linux/acct.h> > #include <linux/blkdev.h> > -#include <linux/quotaops.h> > #include <linux/namei.h> > #include <linux/mount.h> > #include <linux/security.h> > @@ -101,8 +100,6 @@ static struct super_block *alloc_super(s > init_rwsem(&s->s_dquot.dqptr_sem); > init_waitqueue_head(&s->s_wait_unfrozen); > s->s_maxbytes = MAX_NON_LFS; > - s->dq_op = sb_dquot_ops; > - s->s_qcop = sb_quotactl_ops; > s->s_op = &default_op; > s->s_time_gran = 1000000000; > } > Index: linux-2.6/include/linux/quotaops.h > =================================================================== > --- linux-2.6.orig/include/linux/quotaops.h 2010-05-10 23:24:30.453195565 +0200 > +++ linux-2.6/include/linux/quotaops.h 2010-05-10 23:37:46.910024731 +0200 > @@ -140,9 +140,6 @@ static inline unsigned sb_any_quota_acti > extern const struct dquot_operations dquot_operations; > extern const struct quotactl_ops vfs_quotactl_ops; > > -#define sb_dquot_ops (&dquot_operations) > -#define sb_quotactl_ops (&vfs_quotactl_ops) > - > #else > > static inline int sb_has_quota_usage_enabled(struct super_block *sb, int type) > @@ -186,12 +183,6 @@ static inline int sb_any_quota_active(st > return 0; > } > > -/* > - * NO-OP when quota not configured. > - */ > -#define sb_dquot_ops (NULL) > -#define sb_quotactl_ops (NULL) > - > static inline void dquot_initialize(struct inode *inode) > { > } > Index: linux-2.6/fs/jfs/super.c > =================================================================== > --- linux-2.6.orig/fs/jfs/super.c 2010-05-10 23:24:19.201253535 +0200 > +++ linux-2.6/fs/jfs/super.c 2010-05-10 23:37:46.837004197 +0200 > @@ -479,6 +479,10 @@ static int jfs_fill_super(struct super_b > */ > sb->s_op = &jfs_super_operations; > sb->s_export_op = &jfs_export_operations; > +#ifdef CONFIG_QUOTA > + sb->dq_op = &dquot_operations; > + sb->s_qcop = &vfs_quotactl_ops; > +#endif > > /* > * Initialize direct-mapping inode/address-space > Index: linux-2.6/fs/udf/super.c > =================================================================== > --- linux-2.6.orig/fs/udf/super.c 2010-05-10 23:22:58.822262265 +0200 > +++ linux-2.6/fs/udf/super.c 2010-05-10 23:40:26.739255629 +0200 > @@ -56,6 +56,7 @@ > #include <linux/mount.h> > #include <linux/seq_file.h> > #include <linux/bitmap.h> > +#include <linux/quotaops.h> > #include <linux/crc-itu-t.h> > #include <asm/byteorder.h> > > @@ -1939,7 +1940,11 @@ static int udf_fill_super(struct super_b > /* Fill in the rest of the superblock */ > sb->s_op = &udf_sb_ops; > sb->s_export_op = &udf_export_ops; > - sb->dq_op = NULL; > +#ifdef CONFIG_QUOTA > + sb->s_qcop = &vfs_quotactl_ops; > + sb->dq_op = NULL; /* &dquot_operations */ > +#endif > + > sb->s_dirt = 0; > sb->s_magic = UDF_SUPER_MAGIC; > sb->s_time_gran = 1000; > Index: linux-2.6/fs/ufs/super.c > =================================================================== > --- linux-2.6.orig/fs/ufs/super.c 2010-05-10 23:24:19.220276582 +0200 > +++ linux-2.6/fs/ufs/super.c 2010-05-10 23:37:46.895004477 +0200 > @@ -1045,7 +1045,11 @@ magic_found: > */ > sb->s_op = &ufs_super_ops; > sb->s_export_op = &ufs_export_ops; > - sb->dq_op = NULL; /***/ > +#ifdef CONFIG_QUOTA > + sb->s_qcop = &vfs_quotactl_ops; > + sb->dq_op = NULL; /* &dquot_operations */ > +#endif > + > sb->s_magic = fs32_to_cpu(sb, usb3->fs_magic); > > uspi->s_sblkno = fs32_to_cpu(sb, usb1->fs_sblkno); > -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html