2009-12-13 08:25:46

by Dmitry Monakhov

[permalink] [raw]
Subject: Please ignore all my previous messges

Hello. I'm really sorry. My default smtp server was dead, so i've used
alternative.
This result in unexpected problems with mail delivery :(
Please ignore my spam. Again sorry.

2009/12/12 Dmitry Monakhov <[email protected]>:
> Quota code requires unlocked version of this function. Off course
> we can just copy-paste the code, but copy-pasting is always an evil.
>
> Signed-off-by: Dmitry Monakhov <[email protected]>
> ---
>  fs/stat.c          |   10 ++++++++--
>  include/linux/fs.h |    1 +
>  2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/fs/stat.c b/fs/stat.c
> index 075694e..c4ecd52 100644
> --- a/fs/stat.c
> +++ b/fs/stat.c
> @@ -401,9 +401,9 @@ SYSCALL_DEFINE4(fstatat64, int, dfd, char __user *, filename,
>  }
>  #endif /* __ARCH_WANT_STAT64 */
>
> -void inode_add_bytes(struct inode *inode, loff_t bytes)
> +/* Caller is here responsible for sufficient locking (ie. inode->i_lock) */
> +void __inode_add_bytes(struct inode *inode, loff_t bytes)
>  {
> -       spin_lock(&inode->i_lock);
>        inode->i_blocks += bytes >> 9;
>        bytes &= 511;
>        inode->i_bytes += bytes;
> @@ -411,6 +411,12 @@ void inode_add_bytes(struct inode *inode, loff_t bytes)
>                inode->i_blocks++;
>                inode->i_bytes -= 512;
>        }
> +}
> +
> +void inode_add_bytes(struct inode *inode, loff_t bytes)
> +{
> +       spin_lock(&inode->i_lock);
> +       __inode_add_bytes(inode, bytes);
>        spin_unlock(&inode->i_lock);
>  }
>
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 2620a8c..98ea200 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2314,6 +2314,7 @@ extern const struct inode_operations page_symlink_inode_operations;
>  extern int generic_readlink(struct dentry *, char __user *, int);
>  extern void generic_fillattr(struct inode *, struct kstat *);
>  extern int vfs_getattr(struct vfsmount *, struct dentry *, struct kstat *);
> +void __inode_add_bytes(struct inode *inode, loff_t bytes);
>  void inode_add_bytes(struct inode *inode, loff_t bytes);
>  void inode_sub_bytes(struct inode *inode, loff_t bytes);
>  loff_t inode_get_bytes(struct inode *inode);
> --
> 1.6.0.4
>
>