[Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-11-04 Thread Jan Kara
CC: Dave Kleikamp dave.kleik...@oracle.com
CC: jfs-discuss...@lists.sourceforge.net
Signed-off-by: Jan Kara j...@suse.cz
---
 fs/jfs/jfs_incore.h | 3 +++
 fs/jfs/super.c  | 9 +
 2 files changed, 12 insertions(+)

diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
index cf47f09e8ac8..fa7e795bd8ae 100644
--- a/fs/jfs/jfs_incore.h
+++ b/fs/jfs/jfs_incore.h
@@ -94,6 +94,9 @@ struct jfs_inode_info {
unchar _inline_ea[128]; /* 128: inline extended attr */
} link;
} u;
+#ifdef CONFIG_QUOTA
+   struct dquot *i_dquot[MAXQUOTAS];
+#endif
u32 dev;/* will die when we get wide dev_t */
struct inodevfs_inode;
 };
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index 93e897e588a8..16c3a9556634 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -117,6 +117,9 @@ static struct inode *jfs_alloc_inode(struct super_block *sb)
jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
if (!jfs_inode)
return NULL;
+#ifdef CONFIG_QUOTA
+   memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
+#endif
return jfs_inode-vfs_inode;
 }
 
@@ -537,6 +540,7 @@ static int jfs_fill_super(struct super_block *sb, void 
*data, int silent)
 #ifdef CONFIG_QUOTA
sb-dq_op = dquot_operations;
sb-s_qcop = dquot_quotactl_ops;
+   sb-s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
 #endif
 
/*
@@ -836,6 +840,10 @@ out:
return len - towrite;
 }
 
+static struct dquot **jfs_get_dquots(struct inode *inode)
+{
+   return JFS_IP(inode)-i_dquot;
+}
 #endif
 
 static const struct super_operations jfs_super_operations = {
@@ -854,6 +862,7 @@ static const struct super_operations jfs_super_operations = 
{
 #ifdef CONFIG_QUOTA
.quota_read = jfs_quota_read,
.quota_write= jfs_quota_write,
+   .get_dquots = jfs_get_dquots,
 #endif
 };
 
-- 
1.8.1.4



Re: [Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-11-04 Thread Dave Kleikamp
On 11/04/2014 05:19 AM, Jan Kara wrote:

 CC: jfs-discuss...@lists.sourceforge.net
 Signed-off-by: Jan Kara j...@suse.cz

Acked-by: Dave Kleikamp dave.kleik...@oracle.com

 ---
  fs/jfs/jfs_incore.h | 3 +++
  fs/jfs/super.c  | 9 +
  2 files changed, 12 insertions(+)
 
 diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
 index cf47f09e8ac8..fa7e795bd8ae 100644
 --- a/fs/jfs/jfs_incore.h
 +++ b/fs/jfs/jfs_incore.h
 @@ -94,6 +94,9 @@ struct jfs_inode_info {
   unchar _inline_ea[128]; /* 128: inline extended attr */
   } link;
   } u;
 +#ifdef CONFIG_QUOTA
 + struct dquot *i_dquot[MAXQUOTAS];
 +#endif
   u32 dev;/* will die when we get wide dev_t */
   struct inodevfs_inode;
  };
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
 index 93e897e588a8..16c3a9556634 100644
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
 @@ -117,6 +117,9 @@ static struct inode *jfs_alloc_inode(struct super_block 
 *sb)
   jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
   if (!jfs_inode)
   return NULL;
 +#ifdef CONFIG_QUOTA
 + memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
 +#endif
   return jfs_inode-vfs_inode;
  }
  
 @@ -537,6 +540,7 @@ static int jfs_fill_super(struct super_block *sb, void 
 *data, int silent)
  #ifdef CONFIG_QUOTA
   sb-dq_op = dquot_operations;
   sb-s_qcop = dquot_quotactl_ops;
 + sb-s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
  #endif
  
   /*
 @@ -836,6 +840,10 @@ out:
   return len - towrite;
  }
  
 +static struct dquot **jfs_get_dquots(struct inode *inode)
 +{
 + return JFS_IP(inode)-i_dquot;
 +}
  #endif
  
  static const struct super_operations jfs_super_operations = {
 @@ -854,6 +862,7 @@ static const struct super_operations jfs_super_operations 
 = {
  #ifdef CONFIG_QUOTA
   .quota_read = jfs_quota_read,
   .quota_write= jfs_quota_write,
 + .get_dquots = jfs_get_dquots,
  #endif
  };
  
 



[Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-10-10 Thread Jan Kara
CC: Dave Kleikamp sha...@kernel.org
CC: jfs-discuss...@lists.sourceforge.net
Signed-off-by: Jan Kara j...@suse.cz
---
 fs/jfs/jfs_incore.h |  3 +++
 fs/jfs/super.c  | 13 +
 2 files changed, 16 insertions(+)

diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
index cf47f09e8ac8..fa7e795bd8ae 100644
--- a/fs/jfs/jfs_incore.h
+++ b/fs/jfs/jfs_incore.h
@@ -94,6 +94,9 @@ struct jfs_inode_info {
unchar _inline_ea[128]; /* 128: inline extended attr */
} link;
} u;
+#ifdef CONFIG_QUOTA
+   struct dquot *i_dquot[MAXQUOTAS];
+#endif
u32 dev;/* will die when we get wide dev_t */
struct inodevfs_inode;
 };
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index adf8cb045b9e..a13727dd3826 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -54,6 +54,7 @@ static struct kmem_cache *jfs_inode_cachep;
 
 static const struct super_operations jfs_super_operations;
 static const struct export_operations jfs_export_operations;
+static const int jfs_inode_fields[IF_FIELD_NR];
 static struct file_system_type jfs_fs_type;
 
 #define MAX_COMMIT_THREADS 64
@@ -117,6 +118,9 @@ static struct inode *jfs_alloc_inode(struct super_block *sb)
jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
if (!jfs_inode)
return NULL;
+#ifdef CONFIG_QUOTA
+   memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
+#endif
return jfs_inode-vfs_inode;
 }
 
@@ -537,7 +541,9 @@ static int jfs_fill_super(struct super_block *sb, void 
*data, int silent)
 #ifdef CONFIG_QUOTA
sb-dq_op = dquot_operations;
sb-s_qcop = dquot_quotactl_ops;
+   sb_dqopt(sb)-allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
 #endif
+   sb_init_inode_fields(sb, jfs_inode_fields);
 
/*
 * Initialize direct-mapping inode/address-space
@@ -857,6 +863,13 @@ static const struct super_operations jfs_super_operations 
= {
 #endif
 };
 
+static const int jfs_inode_fields[IF_FIELD_NR] = {
+#ifdef CONFIG_QUOTA
+   [IF_DQUOTS] = (int)offsetof(struct jfs_inode_info, i_dquot) -
+ (int)offsetof(struct jfs_inode_info, vfs_inode),
+#endif
+};
+
 static const struct export_operations jfs_export_operations = {
.fh_to_dentry   = jfs_fh_to_dentry,
.fh_to_parent   = jfs_fh_to_parent,
-- 
1.8.1.4



Re: [Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-10-10 Thread Dave Kleikamp
On 10/10/2014 09:55 AM, Jan Kara wrote:
 CC: Dave Kleikamp sha...@kernel.org
 CC: jfs-discuss...@lists.sourceforge.net
 Signed-off-by: Jan Kara j...@suse.cz
 ---
  fs/jfs/jfs_incore.h |  3 +++
  fs/jfs/super.c  | 13 +
  2 files changed, 16 insertions(+)
 
 diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
 index cf47f09e8ac8..fa7e795bd8ae 100644
 --- a/fs/jfs/jfs_incore.h
 +++ b/fs/jfs/jfs_incore.h
 @@ -94,6 +94,9 @@ struct jfs_inode_info {
   unchar _inline_ea[128]; /* 128: inline extended attr */
   } link;
   } u;
 +#ifdef CONFIG_QUOTA
 + struct dquot *i_dquot[MAXQUOTAS];
 +#endif
   u32 dev;/* will die when we get wide dev_t */
   struct inodevfs_inode;
  };
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
 index adf8cb045b9e..a13727dd3826 100644
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
 @@ -54,6 +54,7 @@ static struct kmem_cache *jfs_inode_cachep;
  
  static const struct super_operations jfs_super_operations;
  static const struct export_operations jfs_export_operations;
 +static const int jfs_inode_fields[IF_FIELD_NR];

see below

  static struct file_system_type jfs_fs_type;
  
  #define MAX_COMMIT_THREADS 64
 @@ -117,6 +118,9 @@ static struct inode *jfs_alloc_inode(struct super_block 
 *sb)
   jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
   if (!jfs_inode)
   return NULL;
 +#ifdef CONFIG_QUOTA
 + memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
 +#endif
   return jfs_inode-vfs_inode;
  }
  
 @@ -537,7 +541,9 @@ static int jfs_fill_super(struct super_block *sb, void 
 *data, int silent)
  #ifdef CONFIG_QUOTA
   sb-dq_op = dquot_operations;
   sb-s_qcop = dquot_quotactl_ops;
 + sb_dqopt(sb)-allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
  #endif
 + sb_init_inode_fields(sb, jfs_inode_fields);
  
   /*
* Initialize direct-mapping inode/address-space
 @@ -857,6 +863,13 @@ static const struct super_operations 
 jfs_super_operations = {
  #endif
  };
  
 +static const int jfs_inode_fields[IF_FIELD_NR] = {
 +#ifdef CONFIG_QUOTA
 + [IF_DQUOTS] = (int)offsetof(struct jfs_inode_info, i_dquot) -
 +   (int)offsetof(struct jfs_inode_info, vfs_inode),
 +#endif
 +};

Why isn't the initialization done up above where jfs_inode_fields is
first defined?

 +
  static const struct export_operations jfs_export_operations = {
   .fh_to_dentry   = jfs_fh_to_dentry,
   .fh_to_parent   = jfs_fh_to_parent,
 



Re: [Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-10-10 Thread Jan Kara
On Fri 10-10-14 10:33:02, Dave Kleikamp wrote:
 On 10/10/2014 09:55 AM, Jan Kara wrote:
  CC: Dave Kleikamp sha...@kernel.org
  CC: jfs-discuss...@lists.sourceforge.net
  Signed-off-by: Jan Kara j...@suse.cz
  ---
   fs/jfs/jfs_incore.h |  3 +++
   fs/jfs/super.c  | 13 +
   2 files changed, 16 insertions(+)
  
  diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
  index cf47f09e8ac8..fa7e795bd8ae 100644
  --- a/fs/jfs/jfs_incore.h
  +++ b/fs/jfs/jfs_incore.h
  @@ -94,6 +94,9 @@ struct jfs_inode_info {
  unchar _inline_ea[128]; /* 128: inline extended attr */
  } link;
  } u;
  +#ifdef CONFIG_QUOTA
  +   struct dquot *i_dquot[MAXQUOTAS];
  +#endif
  u32 dev;/* will die when we get wide dev_t */
  struct inodevfs_inode;
   };
  diff --git a/fs/jfs/super.c b/fs/jfs/super.c
  index adf8cb045b9e..a13727dd3826 100644
  --- a/fs/jfs/super.c
  +++ b/fs/jfs/super.c
  @@ -54,6 +54,7 @@ static struct kmem_cache *jfs_inode_cachep;
   
   static const struct super_operations jfs_super_operations;
   static const struct export_operations jfs_export_operations;
  +static const int jfs_inode_fields[IF_FIELD_NR];
 
 see below
 
   static struct file_system_type jfs_fs_type;
   
   #define MAX_COMMIT_THREADS 64
  @@ -117,6 +118,9 @@ static struct inode *jfs_alloc_inode(struct super_block 
  *sb)
  jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
  if (!jfs_inode)
  return NULL;
  +#ifdef CONFIG_QUOTA
  +   memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
  +#endif
  return jfs_inode-vfs_inode;
   }
   
  @@ -537,7 +541,9 @@ static int jfs_fill_super(struct super_block *sb, void 
  *data, int silent)
   #ifdef CONFIG_QUOTA
  sb-dq_op = dquot_operations;
  sb-s_qcop = dquot_quotactl_ops;
  +   sb_dqopt(sb)-allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
   #endif
  +   sb_init_inode_fields(sb, jfs_inode_fields);
   
  /*
   * Initialize direct-mapping inode/address-space
  @@ -857,6 +863,13 @@ static const struct super_operations 
  jfs_super_operations = {
   #endif
   };
   
  +static const int jfs_inode_fields[IF_FIELD_NR] = {
  +#ifdef CONFIG_QUOTA
  +   [IF_DQUOTS] = (int)offsetof(struct jfs_inode_info, i_dquot) -
  + (int)offsetof(struct jfs_inode_info, vfs_inode),
  +#endif
  +};
 
 Why isn't the initialization done up above where jfs_inode_fields is
 first defined?
  There's no good reason, I'll move the definition. The code got created this
way because I added the table in all filesystems after jfs_super_operations
definition but JFS needed the structure earlier... Thanks for review.

Honza
-- 
Jan Kara j...@suse.cz
SUSE Labs, CR



Re: [Cluster-devel] [PATCH 11/12] jfs: Convert to private i_dquot field

2014-10-10 Thread Dave Kleikamp
You can add my
Acked-by: Dave Kleikamp dave.kleik...@oracle.com

On 10/10/2014 10:40 AM, Jan Kara wrote:
 On Fri 10-10-14 10:33:02, Dave Kleikamp wrote:
 On 10/10/2014 09:55 AM, Jan Kara wrote:
 CC: Dave Kleikamp sha...@kernel.org
 CC: jfs-discuss...@lists.sourceforge.net
 Signed-off-by: Jan Kara j...@suse.cz
 ---
  fs/jfs/jfs_incore.h |  3 +++
  fs/jfs/super.c  | 13 +
  2 files changed, 16 insertions(+)

 diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
 index cf47f09e8ac8..fa7e795bd8ae 100644
 --- a/fs/jfs/jfs_incore.h
 +++ b/fs/jfs/jfs_incore.h
 @@ -94,6 +94,9 @@ struct jfs_inode_info {
 unchar _inline_ea[128]; /* 128: inline extended attr */
 } link;
 } u;
 +#ifdef CONFIG_QUOTA
 +   struct dquot *i_dquot[MAXQUOTAS];
 +#endif
 u32 dev;/* will die when we get wide dev_t */
 struct inodevfs_inode;
  };
 diff --git a/fs/jfs/super.c b/fs/jfs/super.c
 index adf8cb045b9e..a13727dd3826 100644
 --- a/fs/jfs/super.c
 +++ b/fs/jfs/super.c
 @@ -54,6 +54,7 @@ static struct kmem_cache *jfs_inode_cachep;
  
  static const struct super_operations jfs_super_operations;
  static const struct export_operations jfs_export_operations;
 +static const int jfs_inode_fields[IF_FIELD_NR];

 see below

  static struct file_system_type jfs_fs_type;
  
  #define MAX_COMMIT_THREADS 64
 @@ -117,6 +118,9 @@ static struct inode *jfs_alloc_inode(struct super_block 
 *sb)
 jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
 if (!jfs_inode)
 return NULL;
 +#ifdef CONFIG_QUOTA
 +   memset(jfs_inode-i_dquot, 0, sizeof(jfs_inode-i_dquot));
 +#endif
 return jfs_inode-vfs_inode;
  }
  
 @@ -537,7 +541,9 @@ static int jfs_fill_super(struct super_block *sb, void 
 *data, int silent)
  #ifdef CONFIG_QUOTA
 sb-dq_op = dquot_operations;
 sb-s_qcop = dquot_quotactl_ops;
 +   sb_dqopt(sb)-allowed_types = QTYPE_MASK_USR | QTYPE_MASK_GRP;
  #endif
 +   sb_init_inode_fields(sb, jfs_inode_fields);
  
 /*
  * Initialize direct-mapping inode/address-space
 @@ -857,6 +863,13 @@ static const struct super_operations 
 jfs_super_operations = {
  #endif
  };
  
 +static const int jfs_inode_fields[IF_FIELD_NR] = {
 +#ifdef CONFIG_QUOTA
 +   [IF_DQUOTS] = (int)offsetof(struct jfs_inode_info, i_dquot) -
 + (int)offsetof(struct jfs_inode_info, vfs_inode),
 +#endif
 +};

 Why isn't the initialization done up above where jfs_inode_fields is
 first defined?
   There's no good reason, I'll move the definition. The code got created this
 way because I added the table in all filesystems after jfs_super_operations
 definition but JFS needed the structure earlier... Thanks for review.
 
   Honza