linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] jfs: add jfs speciffic ->setattr call
@ 2010-03-29 15:54 Dmitry Monakhov
  2010-03-29 15:54 ` [PATCH 2/2] ufs: add ufs " Dmitry Monakhov
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Dmitry Monakhov @ 2010-03-29 15:54 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: jack, Dmitry Monakhov

generic setattr not longer responsible for quota transfer.
use jfs_setattr for all jfs's inodes.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/jfs/inode.c     |    2 +-
 fs/jfs/jfs_inode.h |    1 +
 fs/jfs/namei.c     |    4 ++--
 fs/jfs/symlink.c   |   14 +++++++++++++-
 4 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
index c694a5f..39b2e41 100644
--- a/fs/jfs/inode.c
+++ b/fs/jfs/inode.c
@@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
 			inode->i_op = &page_symlink_inode_operations;
 			inode->i_mapping->a_ops = &jfs_aops;
 		} else {
-			inode->i_op = &jfs_symlink_inode_operations;
+			inode->i_op = &jfs_fast_symlink_inode_operations;
 			/*
 			 * The inline data should be null-terminated, but
 			 * don't let on-disk corruption crash the kernel
diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h
index 4b91b27..fba6e6e 100644
--- a/fs/jfs/jfs_inode.h
+++ b/fs/jfs/jfs_inode.h
@@ -48,5 +48,6 @@ extern const struct file_operations jfs_dir_operations;
 extern const struct inode_operations jfs_file_inode_operations;
 extern const struct file_operations jfs_file_operations;
 extern const struct inode_operations jfs_symlink_inode_operations;
+extern const struct inode_operations jfs_fast_symlink_inode_operations;
 extern const struct dentry_operations jfs_ci_dentry_operations;
 #endif				/* _H_JFS_INODE */
diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
index 4a3e9f3..a9cf8e8 100644
--- a/fs/jfs/namei.c
+++ b/fs/jfs/namei.c
@@ -956,7 +956,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
 	 */
 
 	if (ssize <= IDATASIZE) {
-		ip->i_op = &jfs_symlink_inode_operations;
+		ip->i_op = &jfs_fast_symlink_inode_operations;
 
 		i_fastsymlink = JFS_IP(ip)->i_inline;
 		memcpy(i_fastsymlink, name, ssize);
@@ -978,7 +978,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
 	else {
 		jfs_info("jfs_symlink: allocate extent ip:0x%p", ip);
 
-		ip->i_op = &page_symlink_inode_operations;
+		ip->i_op = &jfs_symlink_inode_operations;
 		ip->i_mapping->a_ops = &jfs_aops;
 
 		/*
diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c
index 4af1a05..205b946 100644
--- a/fs/jfs/symlink.c
+++ b/fs/jfs/symlink.c
@@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
 	return NULL;
 }
 
-const struct inode_operations jfs_symlink_inode_operations = {
+const struct inode_operations jfs_fast_symlink_inode_operations = {
 	.readlink	= generic_readlink,
 	.follow_link	= jfs_follow_link,
+	.setattr	= jfs_setattr,
+	.setxattr	= jfs_setxattr,
+	.getxattr	= jfs_getxattr,
+	.listxattr	= jfs_listxattr,
+	.removexattr	= jfs_removexattr,
+};
+
+const struct inode_operations jfs_symlink_inode_operations = {
+	.readlink	= generic_readlink,
+	.follow_link	= page_follow_link_light,
+	.put_link	= page_put_link,
+	.setattr	= jfs_setattr,
 	.setxattr	= jfs_setxattr,
 	.getxattr	= jfs_getxattr,
 	.listxattr	= jfs_listxattr,
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] ufs: add ufs speciffic ->setattr call
  2010-03-29 15:54 [PATCH 1/2] jfs: add jfs speciffic ->setattr call Dmitry Monakhov
@ 2010-03-29 15:54 ` Dmitry Monakhov
  2010-03-29 16:00 ` Dmitry Monakhov
  2010-04-13 17:51 ` [PATCH 1/2] jfs: add jfs " Dmitry Monakhov
  2 siblings, 0 replies; 7+ messages in thread
From: Dmitry Monakhov @ 2010-03-29 15:54 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: jack, Dmitry Monakhov

generic setattr not longer responsible for quota transfer.
use ufs_setattr for all ufs's inodes.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/ufs/inode.c    |    2 +-
 fs/ufs/namei.c    |    2 +-
 fs/ufs/symlink.c  |    8 ++++++++
 fs/ufs/truncate.c |    2 +-
 fs/ufs/ufs.h      |    2 ++
 5 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 09aef49..ac3d6a2 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -602,7 +602,7 @@ static void ufs_set_inode_ops(struct inode *inode)
 		if (!inode->i_blocks)
 			inode->i_op = &ufs_fast_symlink_inode_operations;
 		else {
-			inode->i_op = &page_symlink_inode_operations;
+			inode->i_op = &ufs_symlink_inode_operations;
 			inode->i_mapping->a_ops = &ufs_aops;
 		}
 	} else
diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
index 1185562..eabc02e 100644
--- a/fs/ufs/namei.c
+++ b/fs/ufs/namei.c
@@ -148,7 +148,7 @@ static int ufs_symlink (struct inode * dir, struct dentry * dentry,
 
 	if (l > UFS_SB(sb)->s_uspi->s_maxsymlinklen) {
 		/* slow symlink */
-		inode->i_op = &page_symlink_inode_operations;
+		inode->i_op = &ufs_symlink_inode_operations;
 		inode->i_mapping->a_ops = &ufs_aops;
 		err = page_symlink(inode, symname, l);
 		if (err)
diff --git a/fs/ufs/symlink.c b/fs/ufs/symlink.c
index c0156ed..d283628 100644
--- a/fs/ufs/symlink.c
+++ b/fs/ufs/symlink.c
@@ -42,4 +42,12 @@ static void *ufs_follow_link(struct dentry *dentry, struct nameidata *nd)
 const struct inode_operations ufs_fast_symlink_inode_operations = {
 	.readlink	= generic_readlink,
 	.follow_link	= ufs_follow_link,
+	.setattr	= ufs_setattr,
+};
+
+const struct inode_operations ufs_symlink_inode_operations = {
+	.readlink	= generic_readlink,
+	.follow_link	= page_follow_link_light,
+	.put_link	= page_put_link,
+	.setattr	= ufs_setattr,
 };
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index d3b6270..ee8db3e 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -508,7 +508,7 @@ out:
  * - there is no way to know old size
  * - there is no way inform user about error, if it happens in `truncate'
  */
-static int ufs_setattr(struct dentry *dentry, struct iattr *attr)
+int ufs_setattr(struct dentry *dentry, struct iattr *attr)
 {
 	struct inode *inode = dentry->d_inode;
 	unsigned int ia_valid = attr->ia_valid;
diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
index 0b4c39b..49e0191 100644
--- a/fs/ufs/ufs.h
+++ b/fs/ufs/ufs.h
@@ -122,9 +122,11 @@ extern void ufs_panic (struct super_block *, const char *, const char *, ...) __
 
 /* symlink.c */
 extern const struct inode_operations ufs_fast_symlink_inode_operations;
+extern const struct inode_operations ufs_symlink_inode_operations;
 
 /* truncate.c */
 extern int ufs_truncate (struct inode *, loff_t);
+extern int ufs_setattr(struct dentry *dentry, struct iattr *attr);
 
 static inline struct ufs_sb_info *UFS_SB(struct super_block *sb)
 {
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2] ufs: add ufs speciffic ->setattr call
  2010-03-29 15:54 [PATCH 1/2] jfs: add jfs speciffic ->setattr call Dmitry Monakhov
  2010-03-29 15:54 ` [PATCH 2/2] ufs: add ufs " Dmitry Monakhov
@ 2010-03-29 16:00 ` Dmitry Monakhov
  2010-04-13 17:51 ` [PATCH 1/2] jfs: add jfs " Dmitry Monakhov
  2 siblings, 0 replies; 7+ messages in thread
From: Dmitry Monakhov @ 2010-03-29 16:00 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: jack, Dmitry Monakhov

generic setattr not longer responsible for quota transfer.
use ufs_setattr for all ufs's inodes.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/ufs/inode.c    |    2 +-
 fs/ufs/namei.c    |    2 +-
 fs/ufs/symlink.c  |    8 ++++++++
 fs/ufs/truncate.c |    2 +-
 fs/ufs/ufs.h      |    2 ++
 5 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 09aef49..ac3d6a2 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -602,7 +602,7 @@ static void ufs_set_inode_ops(struct inode *inode)
 		if (!inode->i_blocks)
 			inode->i_op = &ufs_fast_symlink_inode_operations;
 		else {
-			inode->i_op = &page_symlink_inode_operations;
+			inode->i_op = &ufs_symlink_inode_operations;
 			inode->i_mapping->a_ops = &ufs_aops;
 		}
 	} else
diff --git a/fs/ufs/namei.c b/fs/ufs/namei.c
index 1185562..eabc02e 100644
--- a/fs/ufs/namei.c
+++ b/fs/ufs/namei.c
@@ -148,7 +148,7 @@ static int ufs_symlink (struct inode * dir, struct dentry * dentry,
 
 	if (l > UFS_SB(sb)->s_uspi->s_maxsymlinklen) {
 		/* slow symlink */
-		inode->i_op = &page_symlink_inode_operations;
+		inode->i_op = &ufs_symlink_inode_operations;
 		inode->i_mapping->a_ops = &ufs_aops;
 		err = page_symlink(inode, symname, l);
 		if (err)
diff --git a/fs/ufs/symlink.c b/fs/ufs/symlink.c
index c0156ed..d283628 100644
--- a/fs/ufs/symlink.c
+++ b/fs/ufs/symlink.c
@@ -42,4 +42,12 @@ static void *ufs_follow_link(struct dentry *dentry, struct nameidata *nd)
 const struct inode_operations ufs_fast_symlink_inode_operations = {
 	.readlink	= generic_readlink,
 	.follow_link	= ufs_follow_link,
+	.setattr	= ufs_setattr,
+};
+
+const struct inode_operations ufs_symlink_inode_operations = {
+	.readlink	= generic_readlink,
+	.follow_link	= page_follow_link_light,
+	.put_link	= page_put_link,
+	.setattr	= ufs_setattr,
 };
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index d3b6270..ee8db3e 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -508,7 +508,7 @@ out:
  * - there is no way to know old size
  * - there is no way inform user about error, if it happens in `truncate'
  */
-static int ufs_setattr(struct dentry *dentry, struct iattr *attr)
+int ufs_setattr(struct dentry *dentry, struct iattr *attr)
 {
 	struct inode *inode = dentry->d_inode;
 	unsigned int ia_valid = attr->ia_valid;
diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h
index 0b4c39b..49e0191 100644
--- a/fs/ufs/ufs.h
+++ b/fs/ufs/ufs.h
@@ -122,9 +122,11 @@ extern void ufs_panic (struct super_block *, const char *, const char *, ...) __
 
 /* symlink.c */
 extern const struct inode_operations ufs_fast_symlink_inode_operations;
+extern const struct inode_operations ufs_symlink_inode_operations;
 
 /* truncate.c */
 extern int ufs_truncate (struct inode *, loff_t);
+extern int ufs_setattr(struct dentry *dentry, struct iattr *attr);
 
 static inline struct ufs_sb_info *UFS_SB(struct super_block *sb)
 {
-- 
1.6.6.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] jfs: add jfs speciffic ->setattr call
  2010-03-29 15:54 [PATCH 1/2] jfs: add jfs speciffic ->setattr call Dmitry Monakhov
  2010-03-29 15:54 ` [PATCH 2/2] ufs: add ufs " Dmitry Monakhov
  2010-03-29 16:00 ` Dmitry Monakhov
@ 2010-04-13 17:51 ` Dmitry Monakhov
  2010-04-13 18:39   ` Jan Kara
  2 siblings, 1 reply; 7+ messages in thread
From: Dmitry Monakhov @ 2010-04-13 17:51 UTC (permalink / raw)
  To: jack; +Cc: linux-fsdevel

Dmitry Monakhov <dmonakhov@openvz.org> writes:

> generic setattr not longer responsible for quota transfer.
> use jfs_setattr for all jfs's inodes.
Jan, can you please confirm that you'll take care of this patch and
ufs's fix(the second patch).
>
> Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
> ---
>  fs/jfs/inode.c     |    2 +-
>  fs/jfs/jfs_inode.h |    1 +
>  fs/jfs/namei.c     |    4 ++--
>  fs/jfs/symlink.c   |   14 +++++++++++++-
>  4 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
> index c694a5f..39b2e41 100644
> --- a/fs/jfs/inode.c
> +++ b/fs/jfs/inode.c
> @@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
>  			inode->i_op = &page_symlink_inode_operations;
>  			inode->i_mapping->a_ops = &jfs_aops;
>  		} else {
> -			inode->i_op = &jfs_symlink_inode_operations;
> +			inode->i_op = &jfs_fast_symlink_inode_operations;
>  			/*
>  			 * The inline data should be null-terminated, but
>  			 * don't let on-disk corruption crash the kernel
> diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h
> index 4b91b27..fba6e6e 100644
> --- a/fs/jfs/jfs_inode.h
> +++ b/fs/jfs/jfs_inode.h
> @@ -48,5 +48,6 @@ extern const struct file_operations jfs_dir_operations;
>  extern const struct inode_operations jfs_file_inode_operations;
>  extern const struct file_operations jfs_file_operations;
>  extern const struct inode_operations jfs_symlink_inode_operations;
> +extern const struct inode_operations jfs_fast_symlink_inode_operations;
>  extern const struct dentry_operations jfs_ci_dentry_operations;
>  #endif				/* _H_JFS_INODE */
> diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
> index 4a3e9f3..a9cf8e8 100644
> --- a/fs/jfs/namei.c
> +++ b/fs/jfs/namei.c
> @@ -956,7 +956,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
>  	 */
>  
>  	if (ssize <= IDATASIZE) {
> -		ip->i_op = &jfs_symlink_inode_operations;
> +		ip->i_op = &jfs_fast_symlink_inode_operations;
>  
>  		i_fastsymlink = JFS_IP(ip)->i_inline;
>  		memcpy(i_fastsymlink, name, ssize);
> @@ -978,7 +978,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
>  	else {
>  		jfs_info("jfs_symlink: allocate extent ip:0x%p", ip);
>  
> -		ip->i_op = &page_symlink_inode_operations;
> +		ip->i_op = &jfs_symlink_inode_operations;
>  		ip->i_mapping->a_ops = &jfs_aops;
>  
>  		/*
> diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c
> index 4af1a05..205b946 100644
> --- a/fs/jfs/symlink.c
> +++ b/fs/jfs/symlink.c
> @@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
>  	return NULL;
>  }
>  
> -const struct inode_operations jfs_symlink_inode_operations = {
> +const struct inode_operations jfs_fast_symlink_inode_operations = {
>  	.readlink	= generic_readlink,
>  	.follow_link	= jfs_follow_link,
> +	.setattr	= jfs_setattr,
> +	.setxattr	= jfs_setxattr,
> +	.getxattr	= jfs_getxattr,
> +	.listxattr	= jfs_listxattr,
> +	.removexattr	= jfs_removexattr,
> +};
> +
> +const struct inode_operations jfs_symlink_inode_operations = {
> +	.readlink	= generic_readlink,
> +	.follow_link	= page_follow_link_light,
> +	.put_link	= page_put_link,
> +	.setattr	= jfs_setattr,
>  	.setxattr	= jfs_setxattr,
>  	.getxattr	= jfs_getxattr,
>  	.listxattr	= jfs_listxattr,

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] jfs: add jfs speciffic ->setattr call
  2010-04-13 17:51 ` [PATCH 1/2] jfs: add jfs " Dmitry Monakhov
@ 2010-04-13 18:39   ` Jan Kara
  2010-04-14 12:37     ` Dave Kleikamp
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Kara @ 2010-04-13 18:39 UTC (permalink / raw)
  To: Dmitry Monakhov; +Cc: jack, linux-fsdevel, Evgeniy Dushistov, Dave Kleikamp

On Tue 13-04-10 21:51:18, Dmitry Monakhov wrote:
> Dmitry Monakhov <dmonakhov@openvz.org> writes:
> 
> > generic setattr not longer responsible for quota transfer.
> > use jfs_setattr for all jfs's inodes.
> Jan, can you please confirm that you'll take care of this patch and
> ufs's fix(the second patch).
  JFS is being maintained by Dave Kleikamp <shaggy@linux.vnet.ibm.com>
and UFS should be maintained by Evgeniy Dushistov <dushistov@mail.ru>
so it's their call. But since I've merged patches introducing the problem
I can also take care of merging your fixes if maintainers won't object...

								Honza
> >
> > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
> > ---
> >  fs/jfs/inode.c     |    2 +-
> >  fs/jfs/jfs_inode.h |    1 +
> >  fs/jfs/namei.c     |    4 ++--
> >  fs/jfs/symlink.c   |   14 +++++++++++++-
> >  4 files changed, 17 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
> > index c694a5f..39b2e41 100644
> > --- a/fs/jfs/inode.c
> > +++ b/fs/jfs/inode.c
> > @@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
> >  			inode->i_op = &page_symlink_inode_operations;
> >  			inode->i_mapping->a_ops = &jfs_aops;
> >  		} else {
> > -			inode->i_op = &jfs_symlink_inode_operations;
> > +			inode->i_op = &jfs_fast_symlink_inode_operations;
> >  			/*
> >  			 * The inline data should be null-terminated, but
> >  			 * don't let on-disk corruption crash the kernel
> > diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h
> > index 4b91b27..fba6e6e 100644
> > --- a/fs/jfs/jfs_inode.h
> > +++ b/fs/jfs/jfs_inode.h
> > @@ -48,5 +48,6 @@ extern const struct file_operations jfs_dir_operations;
> >  extern const struct inode_operations jfs_file_inode_operations;
> >  extern const struct file_operations jfs_file_operations;
> >  extern const struct inode_operations jfs_symlink_inode_operations;
> > +extern const struct inode_operations jfs_fast_symlink_inode_operations;
> >  extern const struct dentry_operations jfs_ci_dentry_operations;
> >  #endif				/* _H_JFS_INODE */
> > diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
> > index 4a3e9f3..a9cf8e8 100644
> > --- a/fs/jfs/namei.c
> > +++ b/fs/jfs/namei.c
> > @@ -956,7 +956,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
> >  	 */
> >  
> >  	if (ssize <= IDATASIZE) {
> > -		ip->i_op = &jfs_symlink_inode_operations;
> > +		ip->i_op = &jfs_fast_symlink_inode_operations;
> >  
> >  		i_fastsymlink = JFS_IP(ip)->i_inline;
> >  		memcpy(i_fastsymlink, name, ssize);
> > @@ -978,7 +978,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
> >  	else {
> >  		jfs_info("jfs_symlink: allocate extent ip:0x%p", ip);
> >  
> > -		ip->i_op = &page_symlink_inode_operations;
> > +		ip->i_op = &jfs_symlink_inode_operations;
> >  		ip->i_mapping->a_ops = &jfs_aops;
> >  
> >  		/*
> > diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c
> > index 4af1a05..205b946 100644
> > --- a/fs/jfs/symlink.c
> > +++ b/fs/jfs/symlink.c
> > @@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
> >  	return NULL;
> >  }
> >  
> > -const struct inode_operations jfs_symlink_inode_operations = {
> > +const struct inode_operations jfs_fast_symlink_inode_operations = {
> >  	.readlink	= generic_readlink,
> >  	.follow_link	= jfs_follow_link,
> > +	.setattr	= jfs_setattr,
> > +	.setxattr	= jfs_setxattr,
> > +	.getxattr	= jfs_getxattr,
> > +	.listxattr	= jfs_listxattr,
> > +	.removexattr	= jfs_removexattr,
> > +};
> > +
> > +const struct inode_operations jfs_symlink_inode_operations = {
> > +	.readlink	= generic_readlink,
> > +	.follow_link	= page_follow_link_light,
> > +	.put_link	= page_put_link,
> > +	.setattr	= jfs_setattr,
> >  	.setxattr	= jfs_setxattr,
> >  	.getxattr	= jfs_getxattr,
> >  	.listxattr	= jfs_listxattr,
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] jfs: add jfs speciffic ->setattr call
  2010-04-13 18:39   ` Jan Kara
@ 2010-04-14 12:37     ` Dave Kleikamp
  2010-04-14 13:52       ` Jan Kara
  0 siblings, 1 reply; 7+ messages in thread
From: Dave Kleikamp @ 2010-04-14 12:37 UTC (permalink / raw)
  To: Jan Kara; +Cc: Dmitry Monakhov, linux-fsdevel, Evgeniy Dushistov

On Tue, 2010-04-13 at 20:39 +0200, Jan Kara wrote:
> On Tue 13-04-10 21:51:18, Dmitry Monakhov wrote:
> > Dmitry Monakhov <dmonakhov@openvz.org> writes:
> > 
> > > generic setattr not longer responsible for quota transfer.
> > > use jfs_setattr for all jfs's inodes.
> > Jan, can you please confirm that you'll take care of this patch and
> > ufs's fix(the second patch).
>   JFS is being maintained by Dave Kleikamp <shaggy@linux.vnet.ibm.com>
> and UFS should be maintained by Evgeniy Dushistov <dushistov@mail.ru>
> so it's their call. But since I've merged patches introducing the problem
> I can also take care of merging your fixes if maintainers won't object...

Jan,
I wouldn't object if you'd like to take this, but I could just as easily
pick it up.  Whichever you prefer.

Dmitry,
Could you re-send the patch to me?

Thanks,
Shaggy

> 								Honza
> > >
> > > Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Acked-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>

> > > ---
> > >  fs/jfs/inode.c     |    2 +-
> > >  fs/jfs/jfs_inode.h |    1 +
> > >  fs/jfs/namei.c     |    4 ++--
> > >  fs/jfs/symlink.c   |   14 +++++++++++++-
> > >  4 files changed, 17 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
> > > index c694a5f..39b2e41 100644
> > > --- a/fs/jfs/inode.c
> > > +++ b/fs/jfs/inode.c
> > > @@ -60,7 +60,7 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino)
> > >  			inode->i_op = &page_symlink_inode_operations;
> > >  			inode->i_mapping->a_ops = &jfs_aops;
> > >  		} else {
> > > -			inode->i_op = &jfs_symlink_inode_operations;
> > > +			inode->i_op = &jfs_fast_symlink_inode_operations;
> > >  			/*
> > >  			 * The inline data should be null-terminated, but
> > >  			 * don't let on-disk corruption crash the kernel
> > > diff --git a/fs/jfs/jfs_inode.h b/fs/jfs/jfs_inode.h
> > > index 4b91b27..fba6e6e 100644
> > > --- a/fs/jfs/jfs_inode.h
> > > +++ b/fs/jfs/jfs_inode.h
> > > @@ -48,5 +48,6 @@ extern const struct file_operations jfs_dir_operations;
> > >  extern const struct inode_operations jfs_file_inode_operations;
> > >  extern const struct file_operations jfs_file_operations;
> > >  extern const struct inode_operations jfs_symlink_inode_operations;
> > > +extern const struct inode_operations jfs_fast_symlink_inode_operations;
> > >  extern const struct dentry_operations jfs_ci_dentry_operations;
> > >  #endif				/* _H_JFS_INODE */
> > > diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
> > > index 4a3e9f3..a9cf8e8 100644
> > > --- a/fs/jfs/namei.c
> > > +++ b/fs/jfs/namei.c
> > > @@ -956,7 +956,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
> > >  	 */
> > >  
> > >  	if (ssize <= IDATASIZE) {
> > > -		ip->i_op = &jfs_symlink_inode_operations;
> > > +		ip->i_op = &jfs_fast_symlink_inode_operations;
> > >  
> > >  		i_fastsymlink = JFS_IP(ip)->i_inline;
> > >  		memcpy(i_fastsymlink, name, ssize);
> > > @@ -978,7 +978,7 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry,
> > >  	else {
> > >  		jfs_info("jfs_symlink: allocate extent ip:0x%p", ip);
> > >  
> > > -		ip->i_op = &page_symlink_inode_operations;
> > > +		ip->i_op = &jfs_symlink_inode_operations;
> > >  		ip->i_mapping->a_ops = &jfs_aops;
> > >  
> > >  		/*
> > > diff --git a/fs/jfs/symlink.c b/fs/jfs/symlink.c
> > > index 4af1a05..205b946 100644
> > > --- a/fs/jfs/symlink.c
> > > +++ b/fs/jfs/symlink.c
> > > @@ -29,9 +29,21 @@ static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd)
> > >  	return NULL;
> > >  }
> > >  
> > > -const struct inode_operations jfs_symlink_inode_operations = {
> > > +const struct inode_operations jfs_fast_symlink_inode_operations = {
> > >  	.readlink	= generic_readlink,
> > >  	.follow_link	= jfs_follow_link,
> > > +	.setattr	= jfs_setattr,
> > > +	.setxattr	= jfs_setxattr,
> > > +	.getxattr	= jfs_getxattr,
> > > +	.listxattr	= jfs_listxattr,
> > > +	.removexattr	= jfs_removexattr,
> > > +};
> > > +
> > > +const struct inode_operations jfs_symlink_inode_operations = {
> > > +	.readlink	= generic_readlink,
> > > +	.follow_link	= page_follow_link_light,
> > > +	.put_link	= page_put_link,
> > > +	.setattr	= jfs_setattr,
> > >  	.setxattr	= jfs_setxattr,
> > >  	.getxattr	= jfs_getxattr,
> > >  	.listxattr	= jfs_listxattr,
-- 
Dave Kleikamp
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2] jfs: add jfs speciffic ->setattr call
  2010-04-14 12:37     ` Dave Kleikamp
@ 2010-04-14 13:52       ` Jan Kara
  0 siblings, 0 replies; 7+ messages in thread
From: Jan Kara @ 2010-04-14 13:52 UTC (permalink / raw)
  To: Dave Kleikamp; +Cc: Jan Kara, Dmitry Monakhov, linux-fsdevel, Evgeniy Dushistov

On Wed 14-04-10 07:37:50, Dave Kleikamp wrote:
> On Tue, 2010-04-13 at 20:39 +0200, Jan Kara wrote:
> > On Tue 13-04-10 21:51:18, Dmitry Monakhov wrote:
> > > Dmitry Monakhov <dmonakhov@openvz.org> writes:
> > > 
> > > > generic setattr not longer responsible for quota transfer.
> > > > use jfs_setattr for all jfs's inodes.
> > > Jan, can you please confirm that you'll take care of this patch and
> > > ufs's fix(the second patch).
> >   JFS is being maintained by Dave Kleikamp <shaggy@linux.vnet.ibm.com>
> > and UFS should be maintained by Evgeniy Dushistov <dushistov@mail.ru>
> > so it's their call. But since I've merged patches introducing the problem
> > I can also take care of merging your fixes if maintainers won't object...
> 
> Jan,
> I wouldn't object if you'd like to take this, but I could just as easily
> pick it up.  Whichever you prefer.
  Please go ahead :)

								Honza
-- 
Jan Kara <jack@suse.cz>
SUSE Labs, CR

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-04-14 13:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-29 15:54 [PATCH 1/2] jfs: add jfs speciffic ->setattr call Dmitry Monakhov
2010-03-29 15:54 ` [PATCH 2/2] ufs: add ufs " Dmitry Monakhov
2010-03-29 16:00 ` Dmitry Monakhov
2010-04-13 17:51 ` [PATCH 1/2] jfs: add jfs " Dmitry Monakhov
2010-04-13 18:39   ` Jan Kara
2010-04-14 12:37     ` Dave Kleikamp
2010-04-14 13:52       ` Jan Kara

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).