diff options
Diffstat (limited to 'fs/reiserfs/ioctl.c')
| -rw-r--r-- | fs/reiserfs/ioctl.c | 54 | 
1 files changed, 28 insertions, 26 deletions
diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c index adf22b485ce..501ed6811a2 100644 --- a/fs/reiserfs/ioctl.c +++ b/fs/reiserfs/ioctl.c @@ -5,24 +5,24 @@  #include <linux/capability.h>  #include <linux/fs.h>  #include <linux/mount.h> -#include <linux/reiserfs_fs.h> +#include "reiserfs.h"  #include <linux/time.h>  #include <asm/uaccess.h>  #include <linux/pagemap.h> -#include <linux/smp_lock.h>  #include <linux/compat.h>  /*   * reiserfs_ioctl - handler for ioctl for inode   * supported commands:   *  1) REISERFS_IOC_UNPACK - try to unpack tail from direct item into indirect - *                           and prevent packing file (argument arg has to be non-zero) + *                           and prevent packing file (argument arg has t + *			      be non-zero)   *  2) REISERFS_IOC_[GS]ETFLAGS, REISERFS_IOC_[GS]ETVERSION   *  3) That's all for a while ...   */  long reiserfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  { -	struct inode *inode = filp->f_path.dentry->d_inode; +	struct inode *inode = file_inode(filp);  	unsigned int flags;  	int err = 0; @@ -56,11 +56,11 @@ long reiserfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  				break;  			} -			err = mnt_want_write(filp->f_path.mnt); +			err = mnt_want_write_file(filp);  			if (err)  				break; -			if (!is_owner_or_cap(inode)) { +			if (!inode_owner_or_capable(inode)) {  				err = -EPERM;  				goto setflags_out;  			} @@ -97,18 +97,18 @@ long reiserfs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  			inode->i_ctime = CURRENT_TIME_SEC;  			mark_inode_dirty(inode);  setflags_out: -			mnt_drop_write(filp->f_path.mnt); +			mnt_drop_write_file(filp);  			break;  		}  	case REISERFS_IOC_GETVERSION:  		err = put_user(inode->i_generation, (int __user *)arg);  		break;  	case REISERFS_IOC_SETVERSION: -		if (!is_owner_or_cap(inode)) { +		if (!inode_owner_or_capable(inode)) {  			err = -EPERM;  			break;  		} -		err = mnt_want_write(filp->f_path.mnt); +		err = mnt_want_write_file(filp);  		if (err)  			break;  		if (get_user(inode->i_generation, (int __user *)arg)) { @@ -118,7 +118,7 @@ setflags_out:  		inode->i_ctime = CURRENT_TIME_SEC;  		mark_inode_dirty(inode);  setversion_out: -		mnt_drop_write(filp->f_path.mnt); +		mnt_drop_write_file(filp);  		break;  	default:  		err = -ENOTTY; @@ -133,7 +133,10 @@ setversion_out:  long reiserfs_compat_ioctl(struct file *file, unsigned int cmd,  				unsigned long arg)  { -	/* These are just misnamed, they actually get/put from/to user an int */ +	/* +	 * These are just misnamed, they actually +	 * get/put from/to user an int +	 */  	switch (cmd) {  	case REISERFS_IOC32_UNPACK:  		cmd = REISERFS_IOC_UNPACK; @@ -161,14 +164,13 @@ long reiserfs_compat_ioctl(struct file *file, unsigned int cmd,  int reiserfs_commit_write(struct file *f, struct page *page,  			  unsigned from, unsigned to);  /* -** reiserfs_unpack -** Function try to convert tail from direct item into indirect. -** It set up nopack attribute in the REISERFS_I(inode)->nopack -*/ + * reiserfs_unpack + * Function try to convert tail from direct item into indirect. + * It set up nopack attribute in the REISERFS_I(inode)->nopack + */  int reiserfs_unpack(struct inode *inode, struct file *filp)  {  	int retval = 0; -	int depth;  	int index;  	struct page *page;  	struct address_space *mapping; @@ -184,11 +186,10 @@ int reiserfs_unpack(struct inode *inode, struct file *filp)  		return 0;  	} -	/* we need to make sure nobody is changing the file size beneath -	 ** us -	 */ +	/* we need to make sure nobody is changing the file size beneath us */  	reiserfs_mutex_lock_safe(&inode->i_mutex, inode->i_sb); -	depth = reiserfs_write_lock_once(inode->i_sb); + +	reiserfs_write_lock(inode->i_sb);  	write_from = inode->i_size & (blocksize - 1);  	/* if we are on a block boundary, we are already unpacked.  */ @@ -197,9 +198,10 @@ int reiserfs_unpack(struct inode *inode, struct file *filp)  		goto out;  	} -	/* we unpack by finding the page with the tail, and calling -	 ** __reiserfs_write_begin on that page.  This will force a -	 ** reiserfs_get_block to unpack the tail for us. +	/* +	 * we unpack by finding the page with the tail, and calling +	 * __reiserfs_write_begin on that page.  This will force a +	 * reiserfs_get_block to unpack the tail for us.  	 */  	index = inode->i_size >> PAGE_CACHE_SHIFT;  	mapping = inode->i_mapping; @@ -217,12 +219,12 @@ int reiserfs_unpack(struct inode *inode, struct file *filp)  	retval = reiserfs_commit_write(NULL, page, write_from, write_from);  	REISERFS_I(inode)->i_flags |= i_nopack_mask; -      out_unlock: +out_unlock:  	unlock_page(page);  	page_cache_release(page); -      out: +out:  	mutex_unlock(&inode->i_mutex); -	reiserfs_write_unlock_once(inode->i_sb, depth); +	reiserfs_write_unlock(inode->i_sb);  	return retval;  }  | 
