Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: nilfs2: deleted inconsistent comment in nilfs_load_inode_block() nilfs2: deleted struct nilfs_dat_group_desc nilfs2: fix lock order reversal in chcp operation
This commit is contained in:
commit
82abc2a97a
@ -871,7 +871,6 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode)
|
|||||||
* exclusive with a new mount job. Though it doesn't cover
|
* exclusive with a new mount job. Though it doesn't cover
|
||||||
* umount, it's enough for the purpose.
|
* umount, it's enough for the purpose.
|
||||||
*/
|
*/
|
||||||
mutex_lock(&nilfs->ns_mount_mutex);
|
|
||||||
if (nilfs_checkpoint_is_mounted(nilfs, cno, 1)) {
|
if (nilfs_checkpoint_is_mounted(nilfs, cno, 1)) {
|
||||||
/* Current implementation does not have to protect
|
/* Current implementation does not have to protect
|
||||||
plain read-only mounts since they are exclusive
|
plain read-only mounts since they are exclusive
|
||||||
@ -880,7 +879,6 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode)
|
|||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
} else
|
} else
|
||||||
ret = nilfs_cpfile_clear_snapshot(cpfile, cno);
|
ret = nilfs_cpfile_clear_snapshot(cpfile, cno);
|
||||||
mutex_unlock(&nilfs->ns_mount_mutex);
|
|
||||||
return ret;
|
return ret;
|
||||||
case NILFS_SNAPSHOT:
|
case NILFS_SNAPSHOT:
|
||||||
return nilfs_cpfile_set_snapshot(cpfile, cno);
|
return nilfs_cpfile_set_snapshot(cpfile, cno);
|
||||||
|
@ -664,7 +664,6 @@ int nilfs_load_inode_block(struct nilfs_sb_info *sbi, struct inode *inode,
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
spin_lock(&sbi->s_inode_lock);
|
spin_lock(&sbi->s_inode_lock);
|
||||||
/* Caller of this function MUST lock s_inode_lock */
|
|
||||||
if (ii->i_bh == NULL) {
|
if (ii->i_bh == NULL) {
|
||||||
spin_unlock(&sbi->s_inode_lock);
|
spin_unlock(&sbi->s_inode_lock);
|
||||||
err = nilfs_ifile_get_inode_block(sbi->s_ifile, inode->i_ino,
|
err = nilfs_ifile_get_inode_block(sbi->s_ifile, inode->i_ino,
|
||||||
|
@ -99,7 +99,8 @@ static int nilfs_ioctl_wrap_copy(struct the_nilfs *nilfs,
|
|||||||
static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
|
static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
|
||||||
unsigned int cmd, void __user *argp)
|
unsigned int cmd, void __user *argp)
|
||||||
{
|
{
|
||||||
struct inode *cpfile = NILFS_SB(inode->i_sb)->s_nilfs->ns_cpfile;
|
struct the_nilfs *nilfs = NILFS_SB(inode->i_sb)->s_nilfs;
|
||||||
|
struct inode *cpfile = nilfs->ns_cpfile;
|
||||||
struct nilfs_transaction_info ti;
|
struct nilfs_transaction_info ti;
|
||||||
struct nilfs_cpmode cpmode;
|
struct nilfs_cpmode cpmode;
|
||||||
int ret;
|
int ret;
|
||||||
@ -109,14 +110,17 @@ static int nilfs_ioctl_change_cpmode(struct inode *inode, struct file *filp,
|
|||||||
if (copy_from_user(&cpmode, argp, sizeof(cpmode)))
|
if (copy_from_user(&cpmode, argp, sizeof(cpmode)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
mutex_lock(&nilfs->ns_mount_mutex);
|
||||||
nilfs_transaction_begin(inode->i_sb, &ti, 0);
|
nilfs_transaction_begin(inode->i_sb, &ti, 0);
|
||||||
ret = nilfs_cpfile_change_cpmode(
|
ret = nilfs_cpfile_change_cpmode(
|
||||||
cpfile, cpmode.cm_cno, cpmode.cm_mode);
|
cpfile, cpmode.cm_cno, cpmode.cm_mode);
|
||||||
if (unlikely(ret < 0)) {
|
if (unlikely(ret < 0)) {
|
||||||
nilfs_transaction_abort(inode->i_sb);
|
nilfs_transaction_abort(inode->i_sb);
|
||||||
|
mutex_unlock(&nilfs->ns_mount_mutex);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
nilfs_transaction_commit(inode->i_sb); /* never fails */
|
nilfs_transaction_commit(inode->i_sb); /* never fails */
|
||||||
|
mutex_unlock(&nilfs->ns_mount_mutex);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,15 +424,6 @@ struct nilfs_dat_entry {
|
|||||||
__le64 de_rsv;
|
__le64 de_rsv;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct nilfs_dat_group_desc - block group descriptor
|
|
||||||
* @dg_nfrees: number of free virtual block numbers in block group
|
|
||||||
*/
|
|
||||||
struct nilfs_dat_group_desc {
|
|
||||||
__le32 dg_nfrees;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct nilfs_snapshot_list - snapshot list
|
* struct nilfs_snapshot_list - snapshot list
|
||||||
* @ssl_next: next checkpoint number on snapshot list
|
* @ssl_next: next checkpoint number on snapshot list
|
||||||
|
Loading…
Reference in New Issue
Block a user