Commit 82abc2a9 authored by Linus Torvalds's avatar Linus Torvalds

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
parents cb20c28a 18dafac1
...@@ -871,7 +871,6 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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 { ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment